無限ノック › DVA 練習問題一覧 › 問題
DVAトラブルシューティングと最適化

開発者は、S3 イベント通知によって非同期に呼び出される画像処理 Lambda 関数に Lambda Destinations を設定しました。関数の失敗時の宛先として SQS キューを指定しています。Lambda 関数が失敗してもキューにメッセージが届きません。この Lambda 関数にアタッチされている IAM マネージドポリシーは `AWSLambdaBasicExecutionRole` のみです。最も可能性の高い原因はどれですか?

A
Lambda の実行ロールに `sqs:SendMessage` 権限がなく、Lambda サービスが Destinations への転送に失敗している。
✓ 正解
Lambda DestinationsへのSQS転送は実行ロール権限で行われます。sqs:SendMessage権限が必要ですが、AWSLambdaBasicExecutionRoleはCloudWatch Logs権限のみで不足しています。
B
Lambda Destinations の失敗時転送は最大再試行回数を 0 に設定した場合にのみ機能するが、デフォルト値の 2 のままになっている。
失敗時転送は設定再試行回数すべてを消費した後に実行されます。デフォルト値の2でも機能し、再試行回数0設定は要件ではありません。
C
S3 イベント通知による Lambda 呼び出しは同期呼び出しのため、Lambda Destinations は使用できない。
S3イベント通知によるLambda呼び出しは非同期呼び出しで、Lambda Destinationsは正常に機能します。非同期呼び出しの結果自動転送が本来の目的です。
D
SQS キューのリソースポリシーで Lambda サービスプリンシパルからの書き込みを明示的に許可する設定が必要だが、設定されていない。
Lambda Destinationsでの転送は実行ロール権限で行われるため、SQSのリソースポリシー明示的設定は不要です。Lambda実行ロール権限で十分です。

解説

Lambda Destinations への転送は Lambda サービスが関数の実行ロールを使って行います。SQS への転送には `sqs:SendMessage` 権限が必要ですが、`AWSLambdaBasicExecutionRole` は CloudWatch Logs への書き込み権限のみを含むため転送が失敗します。実行ロールにカスタムポリシーで `sqs:SendMessage` を追加する必要があります。 選択肢Bの再試行回数とは無関係に、設定された回数の再試行をすべて消費した後に Destinations へ転送されます。デフォルトの 2 でも機能します。 選択肢CのS3 イベント通知による Lambda 呼び出しは非同期であり、Lambda Destinations は正常に機能します。 選択肢DのDestinations での SQS 転送は実行ロールの権限で行われるため、SQS のリソースポリシー設定は不要です。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DVA の問題一覧に戻る