DVAAWSのサービスを使用した開発
ある企業がWebアプリケーションを構築しており、ユーザーが最大5GBの動画ファイルをS3バケットに直接アップロードできる機能を実装したいと考えています。バックエンドはLambda関数で構成されており、S3バケットへの直接アクセス権限はユーザーに付与せず、セキュアかつ効率的にアップロードを実現したいと考えています。最も適切な実装方法はどれですか?
ALambda関数内でS3 PutObject権限を持つIAMユーザーのアクセスキーを生成してクライアントに渡し、クライアントが直接アップロードする
Lambda 関数内でS3 PutObject権限を持つIAMユーザーのアクセスキーを生成はIAMアクセスキーの露出によりセキュリティリスクがあります。
BLambda関数でS3の署名付きURL(Presigned URL)を生成してクライアントに返し、クライアントがそのURLを使ってS3に直接PUTリクエストを送信する
✓ 正解
S3署名付きURL(Presigned URL)を使用すると、Lambda関数がIAMロールを使って一時的な署名済みURLを生成しクライアントに渡すことで、クライアントはS3へ直接アップロードできます。URLには有効期限があり恒久的な認証情報を渡す必要がありません。
CクライアントがBase64エンコードしたファイルをLambda関数のAPIエンドポイントに送信し、Lambda関数がS3にPutObjectする
クライアントがBase64エンコードしたファイルをLambdaに送信はLambdaのペイロードサイズ制限(同期6MB・非同期256KB)と実行時間制限(最大15分)から大容量ファイルに不適です。
DS3バケットのパブリックアクセスブロックを無効化し、CORSを設定してクライアントが直接S3にアップロードできるようにする
S3 バケットのパブリックアクセスブロック無効化はS3バケットを公開状態にするためセキュリティ上問題があります。
解説
S3署名付きURL(Presigned URL)を使用すると、Lambda関数がIAMロールを使って一時的な署名済みURLを生成しクライアントに渡すことで、クライアントはS3へ直接アップロードできます。URLには有効期限があり恒久的な認証情報を渡す必要がありません。
選択肢A の Lambda 関数内でS3 PutObject権限を持つIAMユーザーのアクセスキーを生成はIAMアクセスキーの露出によりセキュリティリスクがあります。
選択肢C の クライアントがBase64エンコードしたファイルをLambdaに送信はLambdaのペイロードサイズ制限(同期6MB・非同期256KB)と実行時間制限(最大15分)から大容量ファイルに不適です。
選択肢D の S3 バケットのパブリックアクセスブロック無効化はS3バケットを公開状態にするためセキュリティ上問題があります。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →