無限ノック › DVA 練習問題一覧 › 問題
DVAAWSのサービスを使用した開発

開発者は10GBのビデオファイルをS3にアップロードするアプリケーションを実装している。アップロードの途中でネットワーク障害が発生した場合、最初からやり直さずに中断した箇所から再開できるようにしたい。また、アップロードが完了しなかった不完全なパートがS3に残ることによるコストも最適化したい。最も適切な実装はどれか?

A
S3 Transfer Accelerationを有効にしてPutObjectリクエストで送信し、失敗時はExponential Backoff(指数バックオフ)で再試行する
Transfer Acceleration はエッジロケーション経由でアップロードを高速化する機能であり、中断からの再開機能は提供しません。PutObject は単一リクエストのため失敗時は全体をやり直す必要があり、根本的な対策にはなりません。
B
S3マルチパートアップロードAPIでファイルを分割してアップロードし、S3ライフサイクルポリシーで不完全なマルチパートアップロードを自動削除するよう設定する
✓ 正解
S3 マルチパートアップロードでは失敗したパートのみ再試行でき、UploadId を使って中断した箇所から再開できます。不完全なアップロードのパートはストレージコストが発生するため、ライフサイクルポリシーで自動削除するのがベストプラクティスです。
C
Lambda関数を使ってファイルを100MB以下に分割し、それぞれPutObjectで送信してからS3 CopyObjectで結合する
Lambda 関数には最大実行時間 15 分の制限とペイロードサイズの制約があり、10GB ファイルの分割処理に不適切です。また CopyObject は分割アップロードしたパーツを結合する用途には使用できません。
D
S3 Batch Operationsを使ってバックグラウンドでアップロードし、完了通知をEventBridgeで受信する
S3 Batch Operations は既に S3 に存在するオブジェクトに対する一括操作であり、クライアントからの新規ファイルアップロードには使用できません。

解説

正解: S3マルチパートアップロードAPIでファイルを分割してアップロードし、S3ライフサイクルポリシーで不完全なマルチパートアップロードを自動削除するよう設定する。 5GBを超えるファイルのアップロードにはS3マルチパートアップロードが必須(PutObjectの最大サイズは5GB)。マルチパートアップロードでは失敗したパートのみ再試行でき、UploadIdを使って中断した箇所から再開できる。不完全なアップロードのパートはストレージコストが発生するため、ライフサイクルポリシーで「AbortIncompleteMultipartUpload」ルールを設定して自動削除するのがベストプラクティス。【Aが誤りの理由】Transfer Accelerationはエッジロケーション経由でアップロードを高速化する機能であり、中断からの再開機能は提供しない。PutObjectは単一リクエストのため失敗時は全体をやり直す必要があり、Exponential Backoff(指数バックオフ:再試行間隔を指数的に延長する手法)での再試行も根本解決にはならない。【Cが誤りの理由】Lambda関数には最大実行時間15分の制限とペイロードサイズの制約があり、10GBファイルの分割処理には不適切である。また、S3 CopyObjectはS3上の既存オブジェクトを別の場所にコピーするAPIであり、分割アップロードしたパーツを結合する用途には使用できない(結合はCompleteMultipartUpload APIの役割)。【Dが誤りの理由】S3 Batch Operationsは既にS3に存在するオブジェクトに対してタグ付け・コピー・Lambda呼び出しなどの一括操作を行うサービスであり、クライアントからの新規ファイルアップロードには使用できない。

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

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

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