【AWS】LambdaをS3トリガーで起動する方法
API Lambdaのチュートリアルの中に「AmazonS3トリガーを使用してLambda関数を呼び出す」があったのでやってみました。
[1] S3バケットを作成
まずは、S3バケットを作成します。
バケット作成時、特に注意することはありません。
バケット作成後、ファイルをアップロードしておきます。本記事では「test.png」としています。
[2] Lambda関数を作成
「設計図の使用」を選択し、設計図の中から「s3-get-object-python」を選択します。
実行ロールは「AWSポリシーテンプレートから新しいロールを作成」を選択します。ポリシーテンプレートの中から「Amazon S3オブジェクトの読み取り専用アクセス権限」を選びます。
S3トリガーに先ほど作成したバケットの名称を入力します。他はデフォルトのままにしておきます。
[3] テスト
Lambda関数の作成後、テストイベントを作成します。テンプレートから「s3-put」を選びます。
テンプレート内の「example-bucket」を作成したS3バケットのARNに変更します。また、「test/key」をアップロードしたファイル名(本記事でっはtest.png)に変更します。
テストイベント作成後、テストを実行します。上手くいくと次のような実行結果になります。
[4] S3バケットにアップロード
次に、S3バケットに新たなファイルをアップロードしてみます。test2.png, test3.jpg, test4.jpgをアップロードしました。
CloudWatchでLambda関数のログを見ると「image/png」「image/jpeg」が登録されたことが登録されています。
[5] リソースの削除
次のリソースを削除します。
- Lambda関数
- Lambda関数のロググループ
- IAMポリシー
- IAMロール
- S3バケット
終わりに
チュートリアル通りに試して、無事にS3をトリガーとしてLambda関数が起動されました。今回はアップロードされたファイルの種類を返すだけという簡単なものでした。次回は少し実践的な内容にトライしてみたいと思います。
出典
- アイキャッチはGerd AltmannによるPixabayからの画像