11
3

EventBridgeからLambda起動

Last updated at Posted at 2023-07-17

はじめに

2年目に突入したエンジニアでございます。

今回はAWSを少し触れることがあったので忘れないためにここに備忘録として記載しておきます。

今回の内容:EventBridgeからLambdaを起動する。

1. Lambda関数の用意
2. EventBridgeルールの作成
3. 結果の確認

1. Lambda関数の用意

まずは今回実行するLambda関数を用意します。

上記の記事を参考にしましたが、今回EventBridgeからLambdaを起動するだけの構成を予定しているため、
メッセージを返すのではなくS3にファイル出力するようなコードにしてみました。

コードの修正

lambda_function.py
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!'
    }

スクリーンショット 2023-07-18 063251.png

実行ロールへの権限追加

デフォルトで作成されるLmabdaの実行ロールではS3へのファイル作成ができなかったため、
下記のポリシーを実行ロールに追加して対応しました。

スクリーンショット 2023-07-18 070334.png

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:PutObject"
      ],
      "Resource": "arn:aws:s3:::your-bucket-name/*"
    }
  ]
}

2. Event Bridgeルールの作成

今回はcron式によるスケジュール起動を行いたいため、
EventBridgeスケジューラからスケジュールの作成を押下します。

  • ルール名とスケジュールのパターンを設定
    image.png

  • ターゲットリソースの選択
    image.png
    image.png

その他はデフォルトのまま、作成を完了します。
そうすると、毎時15分にLmabda関数を起動するスケジューラの完成です!

3. 結果の確認

(作業状況の問題で下記の結果は毎時45分に起動するようにスケジュールを修正した状態の結果です。)

  • S3への出力確認
    image.png

  • ログでの確認
    image.png

おわりに

最後まで読んでいただきありがとうございます。

今回はよくあるLambda-EventBridgeの構成についてまとめました。
少しでも参考になると幸いです。

ありがとうございました。

参考

11
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
3