【正解】A
【0からの解説】
①前提知識:Storage Transfer Service(STS)は Amazon S3 などから Cloud Storage へデータを転送するマネージド サービスで、S3 からの転送はエージェント不要(エージェントレス)で実行できます。STS には「転送ジョブあたりの 1 秒あたりのクエリ数(QPS)」に上限があり、ファイル 1 つごとに一覧取得・読み取り・書き込みなどのリクエストが発生するため、比較的小さなファイルが大量にあるジョブでは、データ量ではなくこの QPS 上限が転送速度のボトルネックになります。公式ドキュメント(転送速度の改善)では、この場合は転送を複数のジョブに分割し、include / exclude プレフィックスで各ジョブが扱うファイルの範囲を分けることが推奨されています(例:先頭が a〜e のパスだけを含むジョブ、f〜j のジョブ…)。
②要件と制約語の整理:(a) S3 → Cloud Storage(Nearline)の週次ジョブ、(b) 小さなファイルが大量で数が増え続けている、(c) 合計転送時間を短縮したい、(d)「可能な限りコストを最小限に(minimize costs)」。
③正解の理由:プレフィックスでデータを分割した複数の転送ジョブを並列に実行すると、ジョブごとの QPS 上限が並行して使えるため、多数の小さなファイルの転送が速くなります。STS のマネージドな仕組みをそのまま使い、追加のコンピューティング リソース(VM や Dataflow ワーカー)を用意しないため、コストも最小限に抑えられます。
【誤りの選択肢】
B:保存先のストレージ クラスを Nearline から Standard に変えても、ファイルの転送速度(QPS のボトルネック)は改善しません。むしろ Standard はストレージ料金が Nearline より高く、データをあまり参照しない用途ならコスト増になります。転送時間短縮にもコスト最小化にもつながりません。
C:Dataflow で S3 から読み出して Cloud Storage に書き込むパイプラインを自作することは可能ですが、コードの開発・保守が必要で、ワーカー VM の料金も発生します。STS はファイル転送のために用意されたマネージド サービスであり、それを自前実装に置き換えるのは運用負荷とコストの両面で不利です。
D:エージェント ベースの転送は主にオンプレミスのファイル システムや S3 互換ストレージ向けの方式で、Amazon S3 からはエージェントレスで転送できます。わざわざ Compute Engine インスタンスを複数立ててエージェントを動かすと VM の料金や運用が増え、「コストを最小限に抑える」要件に反します。
【参考】
ソース オブジェクトを前方一致でフィルタする | Storage Transfer ServiceAmazon S3 から Cloud Storage への転送 | Storage Transfer Service