Lambda関連のことを調べてみた

Lambda関連のことを調べてみた
目次

Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your functionに遭遇した

### 起こったこと

“`bash

│ Error: putting CloudWatch Logs Subscription Filter (subscription-filter): InvalidParameterException: Could not execute the lambda function. Make sure you have given CloudWatch Logs permission to execute your function.

│ with aws_cloudwatch_log_subscription_filter.this,
│ on main.tf line 34, in resource “aws_cloudwatch_log_subscription_filter” “this”:
│ 34: resource “aws_cloudwatch_log_subscription_filter” “this” {

“`

CloudwatchLogsのロググループにサブスクリプションフィルターを通してL

元記事を表示

【実務で使えるLambda】describe_instancesで色々やってみる

# はじめに
実際に実務で扱ったLambdaの汎用的なコードを備忘録として残しています。
(※機密情報は載せてないのでご安心ください)

# インスタンスIDをリストで取得してみる
とりあえずこれをコピペすればOK
“`python
import boto3

client = boto3.client(‘ec2′, region_name=’ap-northeast-1’) # リージョンは任意

instances = client.describe_instances()

instance_ids = [] # 空のリストを用意

for reservations in instances[‘Reservations’]:
for instance in reservation[‘Instances’]:
instance_id = instance[‘InstanceId’]
instance_ids.append(instance_id)
“`

# インスタンスに付いているタグ名をリストで取得してみる
さっき取得した`in

元記事を表示

AWS Lambdaで日本時間を扱う

AWS Lambdaの関数内で、日本時間をUNIX時間に変換する処理を実装した時に、9時間足されたUNIX時間に変換されてしまいました。
コードは下記の感じ。
“`csharp
if (DateTimeOffset.TryParse(input, out DateTimeOffset dateTimeOffset))
{
DateTime dateTime = dateTimeOffset.DateTime;

long unixTimestamp = ((DateTimeOffset)dateTime).ToUnixTimeSeconds();
return unixTimestamp.ToString();
}
else
{
return string.Empty;
}
“`
`input`に日本時間(フォーマット:`2024-01-01T00:00:00+09:00`)の文字列が入ります。
上にコードを示しましたが、このコードには特に問題はありません。

# 解決方法
Lambdaの環境変数を追加する。
– キー:`TZ`
– 値:`Asia/

元記事を表示

コスト効率向上!「WakeOnLambda」CDK Constructが登場

## 背景

Amazon EC2インスタンスの常時起動にはコストがかかります。サービスが必要ない時間帯でもインスタンスが動いていると、無駄なコストが発生してしまいます。今回は、WebサービスにアクセスするだけでEC2インスタンスを起動できる「WakeOnLambda」CDK Constructを開発し、その利点について紹介します。

## コンストラクトの概要

「WakeOnLambda」は、AWS CDKを使用して、特定のURLにアクセスすることでEC2インスタンスを起動するLambda関数を簡単に構築できるConstructです。これにより、ユーザーは手動での操作なしに、Webサービスへのアクセスを通じてインスタンスをスタートできます。Construct Hub のリンクはこちら

[![View on Construct Hub](https://constructs.dev/badge?package=wake-on-lambda)](https://constructs.dev/packages/wake-on-lambda)

Construct Hubへの登録は以下の

元記事を表示

Step FunctionでのループをCDKで試したメモ

## 概要
Step Functionの理解を深める。
[Lambda を使用してループを反復する](https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/tutorial-create-iterate-pattern-section.html)をCDKで書いてみた。

## callbackとreturnの書き換え
例では戻り値をcallbackに渡しているが、冗長なのでreturnで返す形に書き換えた。
([Node.js の AWS Lambda 関数ハンドラー](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/nodejs-handler.html))

[ソースコード](https://github.com/hibohiboo/aws-cdk-v2/blob/2046e79638a2000e1f791b8aaf98c669379be79e/cdk/lib/step-functions-stack.ts)

以下の2つのソースは等価となる。
“`js
exp

元記事を表示

Amazon bedrockのSample serverless-pdf-chatを日本リージョンで動かしてみた

## はじめに
部内のナレッジをRAGで活用しようと思い、まずはRAGの理解深耕とBedrockがGAされたこともありaws sampleから試してみました。
今回は下記を用いて実施しています。
https://github.com/aws-samples/serverless-pdf-chat

FrontendはClientPCで動作させるので下記のようなイメージになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922657/dd716d4a-7f82-30be-85e0-e90789a7d84f.png)

## リージョンをap-northeast-1にする
GitのREADMEに以下のように記載があるので、従って修正します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/922657/552f96db-75f0-76ff-389f-fe9d345aca84.png)

元記事を表示

go-awslambda

“`text
— FAIL: TestSlogtest (0.03s)
\zapslog\logger.go:130: message
\zapslog\logger.go:130: INFO message {“k”: “v”}
\zapslog\logger.go:130: msg {“a”: “b”, “c”: “d”}
\zapslog\logger.go:130: INFO msg {“k”: “v”}
\zapslog\logger.go:130: msg {“a”: “b”, “k”: “v”}
\zapslog\logger.go:130: msg {“a”: “b”, “G”: {“c”: “d”}, “e”: “f”}
\zapslog\logger.go:130: msg {“a”: “b”, “e”: “f”}
\zapslog\logger.go:130: msg {“a”: “b”, “c”: “d”, “e”: “f”}
\zapslog\logger.go:130

元記事を表示

AWS LambdaとEventbridgeを使って毎朝7時に気象庁天気予報をLINEに通知

## 概要
気象庁から天気予報データを取得、必要情報を抽出してLINEに通知するLambdaを作成して、Eventbridgeで毎朝7時に起動するよう設定しました。

## 準備
– 事前にLINE Notifyのアクセストークンを取得
– エリアコードの確認
https://www.jma.go.jp/bosai/common/const/area.json
東京地方は130000です。

## 作成
– Lambda作成
Lambda作成方法は他の有志の方の記事または公式を参照ください。
なお、PythonのRequestsモジュールをLambdaで使用するためにはLayerの追加の必要があります。
– エリアコードは東京地方の天気を対象としています
– 抽出データは、時間、天気、6時間ごとの降水確率と最高気温です
– 【LINE Notifyアクセストークン】を取得したアクセストークンに置き換えてください

“`python.py
import requests
import json
import io

def lambda_ha

元記事を表示

【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part5

# 概要
この記事ではAWS認定DASに出題されるリソースを使った構成をシリーズ化して紹介します。
前回までの内容は以下をご覧ください!
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part1](https://qiita.com/mcen/items/24f20be7a3094dfef6a0)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part2](https://qiita.com/mcen/items/7d978203ef22412309f2)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part3](https://qiita.com/mcen/items/e66e77743963084a3d7b)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part4](https://qiita.com/mcen/items/802a43a28358303125f6)

# 今回の実施内容
前回Part4の内容を行いました。今回は

元記事を表示

【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part4

# 概要
この記事ではAWS認定DASに出題されるリソースを使った構成をシリーズ化して紹介します。
前回までの内容は以下をご覧ください!
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part1](https://qiita.com/mcen/items/24f20be7a3094dfef6a0)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part2](https://qiita.com/mcen/items/7d978203ef22412309f2)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part3](https://qiita.com/mcen/items/e66e77743963084a3d7b)

# 今回の実施内容
前回Part3の内容を行いました。今回はAthenaの設定を行います。
* Part1
* JSONのダミーデータの作成
* S3バケットの作成
* Part2
* Lambda作成
* S3イベントとLam

元記事を表示

Serverless FrameworkとTerraformの責任分界点

# 概要

Lambdaアプリケーションを構築する上では、Terraform以外に [Serverless Framework](https://www.serverless.com/) や [AWS SAM](https://aws.amazon.com/serverless/sam/) といったフレームワークを使うことがあります。
メタップスホールディングスではLambdaのアプリケーション開発にServerless Frameworkを使うことが多いのですが、インフラを構築する上で、Terraformとの使い分けはどうするべきか、という課題が度々発生します。
今回は弊社のプロダクト開発におけるフレームワークの使い分けについて、一例を紹介したいと思います。

# Terraformの利点

TerraformはInfrastructure as Code (IaC) の中でもとりわけ人気が高く、多数のクラウドプロバイダーに対応しており、デプロイメントやプロビジョニングを自動化できる利点があります。
弊社のSREチームもAWSを始め、DatadogやGitHub、PagerDuty

元記事を表示

AWS Lambda Web Adapterを使ってAgents for Amazon Bedrockを高速開発

Amazon Bedrockでエージェントを構築できるAgents for Amazon Bedrockという機能があります。この機能はLambdaで構築するのですが、構築に際して次のものが必要です。

* エージェントが実行するアクションのビジネスロジックを含んだLambda関数
* APIの説明、構造、パラメーターを含むOpenAPIスキーマ

また、イベントのJSONが専用フォーマットなので、どういったイベントが来るのか気にしながら開発する必要があります。

AWS謹製のAWS Lambda Web AdapterがAgents for Amazon Bedrockに対応しましたので、使用方法を紹介します。

## AWS Lambda Web Adapterとは

AWS Lambda 上で Web アプリケーションを実行するツールです。

AWS Lambda Web Adaptor を使用すると、開発者は使い慣れたフレームワーク (Express.js、Next.js、Flask、SpringBoot、ASP.NET、Laravel など、HTTP 1.1/1.0 を使用

元記事を表示

Firehoseのレコード出力の設定をCDKで構築する(改行の区切り文字/動的パーティショニング)

# 背景
Firehoseでは、1行1レコードとして出力したり、Lambdaで1レコードごとに処理するためには、追加での設定が必要です。
画面からだと簡単に設定できますが、CloudFormationおよびCDKでは、設定方法が直感的とは言い難いです。

この記事では、CDKのみを使用して、こちらの画像の状態にする方法を紹介します。

![スクリーンショット 2024-01-18 8.52.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3468968/31379ea2-7606-ab85-f8e2-dc3593f89f88.png)

## 設定項目解説
### New line delimiter/改行の区切り文字
設定することで、各レコードが1行ごとに出力されます。

“`json
{“id”:1}
{“id”:2}
“`
JSONL形式になるため、後続の処理でS3から取り出した時に処理しやすくなります。

#### 設定しない場合に困ること
これを設定しないと、いわゆるJSONL形式では

元記事を表示

Windowsで作成したLambdaレイヤーで”Unable to import module”エラーが発生した場合の対処(の一つ)

LambdaでAPI等を作っていると外部ライブラリをLambdaレイヤーに追加するシーンが多々発生しますが、ローカルのWindows環境で外部ライブラリの動作確認をした後に、`pip install -t`してLambdaレイヤーを作成したらLambdaで以下のエラーが発生した際の調査メモ。
※他の原因(循環参照)でも同じエラーが発生するようなのでどちらが原因かは適宜判断

`[ERROR] Runtime.ImportModuleError: Unable to import module’lambda_function’: cannot import name ‘xxx’ from partially initialized module ‘xxx’ (most likely due to a circular import)
`

# 環境
– ローカル環境:Windows
– Lambda:Python

# 原因
そのまま書いてありました。
要はライブラリにバイナリを含む場合は、インストール時の環境(Windows)とLambda実行環境(Amazon Linux)の差異でエ

元記事を表示

【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part3

# 概要
この記事ではAWS認定DASに出題されるリソースを使った構成をシリーズ化して紹介します。
前回までの内容は以下をご覧ください!
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part1](https://qiita.com/mcen/items/24f20be7a3094dfef6a0)
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part2](https://qiita.com/mcen/items/7d978203ef22412309f2)

# 今回の実施内容
前回Part2の内容を行いました。今回はGlueの設定を行います。
* Part1
* JSONのダミーデータの作成
* S3バケットの作成
* Part2
* Lambda作成
* S3イベントとLambdaの連動
* Part3
* Glueの設定
* Part4
* Athenaの設定
* Part5
* Quicksightでの可視化

## AWS Glueとは?
AW

元記事を表示

【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part2

# 概要
この記事ではAWS認定DASに出題されるリソースを使った構成をシリーズ化して紹介します。
前回までの内容は以下をご覧ください!
[【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part1](https://qiita.com/mcen/items/24f20be7a3094dfef6a0)

# 今回の実施内容
前回Part1の内容を行いました。今回はLambda関連の設定を行います。
* Part1
* JSONのダミーデータの作成
* S3バケットの作成
* Part2
* Lambda作成
* S3イベントとLambdaの連動
* Part3
* Glueの設定
* Part4
* Athenaの設定
* Part5
* Quicksightでの可視化

## Lambda作成
S3バケット「**transbucket-2024**」のinputフォルダにアップロードしたjsonファイルを
csvファイルに加工後、outputフォルダに格納するLambdaを作成していきます。

元記事を表示

【AWS DAS】S3上のデータをQuicksightで可視化するまでやってみた Part1

# 概要
この記事ではAWS認定DASに出題されるリソースを使った構成をシリーズ化して紹介します。

# はじめまして!
AWS認定DASの資格学習として出題サービスを使用した構成を組んでみようと思い
初投稿をしてみました。
私自身の経歴はインフラエンジニアとして2年半設計構築に携わってます。
SAAの資格学習時(昨年取得出来ました!)に実際に携わったことのあるサービスに関しては理解度が格段に上がることを実感したためこのような取り組みを行っております。

# 実現したい構成
早速ですが実現したい構成は以下です。
作成リージョンはap-northeast-1とします。
構成図

>①JSONファイルをS3(inputフォルダ)にアップロード
②S3にJSONファイルがアップロードされたことをトリガーにLamb

元記事を表示

【AWS】CloudWatchLogs→Lambda→SQS連携方法

## はじめに

本記事は Lambda を使ったことが無い自分の備忘として、
Lambda 構築までの流れをメモした記事となります。

## 構成

「CloudwatchLogs」→「Lambda」→「SQS」のシンプルな構成とします。
■処理フロー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1764568/e8d2b446-752d-f000-6fe7-d478245d3f19.png)

## 実装してみた

### Amazon SQS 作成

今回の構成で SQS は Lambda からのメッセージをキューに保持するだけなので、
以下 CLI コマンドで簡易的に作成。

“`bash
aws sqs create-queue –queue-name
# 例:aws sqs create-queue –queue-name testqueue
“`

### AWS Lambda 作成

今回は AWSCLI を利用して Lambda の作成を行う。

元記事を表示

AWSLambdaを使用してRDSからCSVを取得してメール送信

# 1.はじめに
はじめまして!株式会社TechoesインフラチームのYです!
今年の4月で2年目を迎える初心者のクラウドエンジニアです。
今回からTechoesの採用強化、学習内容のアウトプットを目的としてQiitaで技術ブログを書いていこうと思います。
第1回目として最近学習したAWSLambdaを使ってRDSからCSVを取得してメール送信する手順を投稿します。

# 2.前提
– 言語:Python 3.10
– ライブラリ:pymysql
※layerとしてS3に保管
– RDS:Aurora MySQL
– RDSの認証情報はSecretManagerから取得
– メール送信にはSESを使用
# 3. CFNテンプレート
Lambda関数を作成・管理するテンプレートです。

レイヤーはあらかじめS3に保管しておいたものを使用します。
“`yaml:lambda.yaml
Resources:
LambdaRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:

元記事を表示

【AWS CDK / SQS+Lambda】SQSからのLambda呼び出しについて検証してみた

# はじめに
SQSトリガーのLambda実行について、色々と検証してみたくなったので試してみた。

## 対象とする読者
* SQSの基本は知ってるけど、細かい動作まで知りたい人
* SQSトリガーのLambda実行環境をcdkで構築したい人

# 結論)わかったこと

* SQSのキューがFIFOの場合、紐づくデッドレターキュー(DLQ)も強制FIFO
* LambdaのOnSuccess/OnFailureに紐づけるキューはFIFO不可
* LambdaのDLQもFIFO不可
* 最大受信回数到達時、Lambdaエラー→可視性タイムアウト→DLQへ送信の順番
* SQSからのLambda実行は非同期呼び出しではない
→ LambdaのOnSuccess/OnFailure送信先やDLQは効かない

# 検証環境構築

以下の環境を構築する。

元記事を表示

OTHERカテゴリの最新記事