Q40 — AWS DOP-C02 第1章

第 40/100 問 | ← 第1章

ある企業が、Amazon S3イベントソースをAWS Lambda関数に設定しました。特定のS3バケットにおいて、新しいオブジェクトが作成されたとき、または既存のオブジェクトが更新されたときに、このLambda関数を実行する必要があります。Lambda関数は、S3イベントのバケット名およびS3オブジェクトキーを用いて、新しいまたは更新されたS3オブジェクトの内容を取得します。Lambda関数は、その内容を解析し、解析結果をAmazon DynamoDBテーブルに保存します。 Lambda関数の実行ロールには、対象S3バケットから読み取る権限およびDynamoDBテーブルに書き込む権限が付与されています。テスト中に、開発者がS3バケットにオブジェクトが追加されたとき、または既存のオブジェクトが更新されたときに、Lambda関数が実行されないことを発見しました。

正解: B. Lambda関数のリソースポリシーを作成し、Amazon S3がS3バケット上でLambda関数を呼び出す権限を付与します。

解説

AWSサービス間の権限設定に関する問題です。AWS Lambdaは、S3によるトリガー呼び出しを許可するためのリソースポリシーが必要です。正しい方法は選択肢Bであり、Lambda関数のリソースポリシーを用いてS3がLambdaを呼び出す権限を付与します。選択肢AのS3バケットポリシーは、バケット自体へのアクセスを管理するものであり、Lambdaの権限とは無関係です。選択肢CおよびDはSQSキューを導入しますが、問題は非同期処理またはエラー処理ではなく、単純なトリガー失敗に関するものであり、関係ありません。AWSドキュメントによると、S3イベント通知からLambdaへの呼び出しには、Lambda側にs3.amazonaws.comを呼び出し元として許可する権限を追加する必要があります。