S3トリガーでAWS Lambdaを動かす
目的 -
ここでは提供されたAWS Lambda関数がサーバーレスプロジェクトの一部であり、特定のオブジェクトを一つのAmazon S3バケットから別のバケットに自動的にコピーするプロセスを行います。
AWS Lambda関数とは?
AWS LambdaはAmazon Web Services(AWS)が提供するサーバーレスコンピューターサービスです。サーバーを用意したり管理したりすることなく、コードを実行できます。AWS Lambdaを使えば、HTTPリクエストやS3バケット内のデータ変更、データベースの更新、または他のAWSサービスによって生成されたカスタムイベントなど様々なイベントに応答してコードを実行できます。
簡単な説明:-
データ転送プロセスを簡素化し、目的地のバケット内に特定のオブジェクトが常に利用可能であることを保証することが目標です。これにはデータ集約、共有、バックアップ、さらなる処理などの様々な目的があります。
AWS Lambda関数を使用してこれを達成するためには、ソースS3バケットをトリガーとしてLambda関数を動かすように設定する必要があります。そして、関数は書かれたコードに従って動作します(私たちはPython 3.11言語でコードを書いています)。私たちのコードでは、以下のタスクを実行します。
- オブジェクトのキー、ソースバケット名、目的地バケット名を抽出します。
- 指定されたオブジェクトをソースS3バケットから目的地S3バケットにコピーします。
- コピー操作が成功したことを関数のログに記録します。
- エラーや例外を処理し、デバッグとモニタリングの目的でログに記録します。
Lambda関数にはIAMロールも添付しており、S3バケットへのフルアクセス権限を与えています。
必要なサービス:-
- AWS Lambda関数: プロジェクトの中核となるコンポーネントはAWS Lambda関数で、Python 3.11で書かれ、Boto3ライブラリを使用してAWSサービスとやり取りします。
- 2つのS3バケット
- ソースS3バケット: コピーする必要があるデータを含むS3バケットです。
- 目的地S3バケット: オブジェクトがコピーされる場所です。
- AWS IAM: S3のフルアクセス権を与えます。
図解:-
手順:-
- 2つのS3バケットを作成し、それぞれソースバケットと目的地バケットとして名付けます。
(注意: 標準的な命名規則に従ってください)
ソースバケットと同じ手順で目的地バケットを作成します。
- IAMロールを作成し、S3バケットのフルアクセスを与えます。
- Lambda関数を作成し、それにIAMロールを紐づけます。
- コードセクションにコードを書き、テストします。
- コードをテストするために「テスト」をクリックし、イベントを作成します。
- テストが成功したら、Lambda関数にトリガーを設定します。つまり、ソースS3バケットを設定します。
- 次にコードをデプロイします。
(この段階で両S3バケットの同期プロセスはほぼ完了しています)
- 動作(両方のS3バケットの同期)をテストするために、ソースS3バケットにファイルをアップロードします。
- この段階で、ソースS3バケットにアップロードしたファイルが目的地S3バケットにも見えることを確認できます。
したがって、プロジェクトが正常に動作していることが示されます。
注意:-
アップロードしたいオブジェクト名は明確に記載してください。
拡張子(例:.png、.jpgなど)も記載してください。
こちらの記事はdev.toの良い記事を日本人向けに翻訳しています。
https://dev.to/nishita_0812/s3-trigger-aws-lambda-4b42