Amazon Simple Storage Service (Amazon S3) にデータを大量にアップロードするか、S3 バケット間で大量のデータをコピーしようと思います。このデータ転送のためのパフォーマンスを最適化するにはどうすればよいですか?

Amazon S3 バケット間で大量のデータを転送する際には、次の方法を検討してください。

AWS コマンドラインインターフェイス (AWS CLI) を使用した並列アップロード

注: ベストプラクティスのために、AWS CLI の最新バージョンを使用していることを確認してください。詳細については、「AWS CLI のインストール」を参照してください。

転送を相互に排他的な複数のオペレーションに分割することによって、転送完了までの時間を短縮することが期待できます。aws s3 cp (コピー)、aws s3 mv (移動)、aws s3 sync (同期) の複数のインスタンスを同時に実行することが可能です。

転送を分割する方法の 1 つに、--exclude パラメータと --include パラメータを使用してオペレーションをファイル名で区切るという方法があります。例えば、あるバケットから別のバケットに大量のデータをコピーする必要があり、すべてのファイル名が数字で始まる場合などは、AWS CLI の 2 つのインスタンスから次のコマンドを実行させられます。

注: --exclude パラメータと --include パラメータは、クライアント側で処理されます。このため、ローカルマシンのリソースがこの処理のパフォーマンスに影響を与える可能性があります。

次のコマンドでは、0、1、2、3、4 で始まる名前のファイルをコピーします。

aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"

次のコマンドでは、5、6、7、8、9 で始まる名前のファイルをコピーします。 

aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

重要: 膨大な数のオブジェクト (数億個規模) を転送する必要がある場合は、AWS SDK を使用してコピーを実行するカスタムアプリケーションを構築することをご検討ください。AWS CLI でもコピーを実行できますが、その規模ではカスタムアプリケーションの方が効率的になる場合があります。

AWS Snowball

特に 10 TB を超えるデータを、オンプレミスデータセンターと Amazon S3 間で転送する場合は、 AWS Snowball の使用をご検討ください。

次の制限事項に注意してください。

  • AWS Snowball は、バケット間データ転送をサポートしていません。
  • AWS Snowball は、AWS Key Management System (AWS KMS) によって管理されるキーによるサーバー側の暗号化をサポートしていません。詳細については、AWS Snowball でのサーバー側の暗号化を参照してください。

Amazon EMR での S3DistCp

Amazon EMR で S3DistCp を使用して Amazon S3 バケット間でデータをコピーすることをご検討ください。S3DistCp は、大量のオブジェクトの並列コピーを可能にします。

重要: このオプションでは Amazon EMR クラスターを起動する必要があるため、必ず Amazon EMR の料金をご確認の上実行してください。


このページは役に立ちましたか? はい | いいえ

AWS サポート ナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください。

公開日: 2016 年 01 月 07 日

更新: 2018 年 11 月 16 日