はじめに
2年目に突入したエンジニアでございます。
今回はAWSを少し触れることがあったので忘れないためにここに備忘録として記載しておきます。
今回の内容:EventBridgeからLambdaを起動する。
1. Lambda関数の用意
2. EventBridgeルールの作成
3. 結果の確認
1. Lambda関数の用意
まずは今回実行するLambda関数を用意します。
上記の記事を参考にしましたが、今回EventBridgeからLambdaを起動するだけの構成を予定しているため、
メッセージを返すのではなくS3にファイル出力するようなコードにしてみました。
コードの修正
import boto3
def lambda_handler(event, context):
# S3へのアクセスに使用するクライアントを作成
s3_client = boto3.client('s3')
# アップロードするファイルのパラメータを指定
bucket_name = 'your-bucket-name' # アップロード先のバケット名
file_name = 'example.txt' # アップロードするファイル名
file_content = 'This is an example file.' # アップロードするファイルの内容
# ファイルをS3にアップロード
s3_client.put_object(
Body=file_content,
Bucket=bucket_name,
Key=file_name
)
return {
'statusCode': 200,
'body': 'File uploaded successfully!'
}
実行ロールへの権限追加
デフォルトで作成されるLmabdaの実行ロールではS3へのファイル作成ができなかったため、
下記のポリシーを実行ロールに追加して対応しました。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "arn:aws:s3:::your-bucket-name/*"
}
]
}
2. Event Bridgeルールの作成
今回はcron式によるスケジュール起動を行いたいため、
EventBridgeスケジューラからスケジュールの作成を押下します。
その他はデフォルトのまま、作成を完了します。
そうすると、毎時15分にLmabda関数を起動するスケジューラの完成です!
3. 結果の確認
(作業状況の問題で下記の結果は毎時45分に起動するようにスケジュールを修正した状態の結果です。)
おわりに
最後まで読んでいただきありがとうございます。
今回はよくあるLambda-EventBridgeの構成についてまとめました。
少しでも参考になると幸いです。
ありがとうございました。
参考