少量のデータをAmazon S3にアップロードまたは転送する場合は、Amazon S3コンソールを使用するとうまくいきます。より多くのデータをもっと効率的に送信する方法はありますか?

Amazon S3コンソールは比較的少量のデータをAmazon S3バケットにアップロードまたはコピーするのに便利なインターフェイスを提供しています。ボリュームの大きなデータを扱う場合は、他の方法を使うとパフォーマンスが向上します。

S3バケットと大量のデータをやりとりする場合は、これらの方法をお試しください。

S3バケットが同じリージョンにある場合は、 AWS Command Line Interface(CLI)を使用して、AWS S3インスタンスで cp(コピー)、mv(移動)または sync(同期)のコマンドを複数同時に実行できます。コマンドに --exclude フィルタをつけると、マルチスレッディングによりパフォーマンスが向上します。「Use of Exclude and Include Filters」で説明しているように、複数のAWS CLIのインスタンスを開始して、互いに排他的に--excludeフィルターを使ってcpやmv、syncコマンドを起動します。これによりお互いのインスタンスは、明示的に除外されていないオブジェクトに対してのみ処理を実行できます。例えば、 s3://srcbucket/ というコピー元のS3バケットと、s3://destbucket/ というコピー先のバケットがあり、コピー元の方にファイル名が小文字で始まるファイルが大量にあったとします。この場合、AWS CLIのインスタンスを2つ開き、 s3://srcbucket/ にあるファイルを s3://destbucket/ にマルチスレッドでコピーするコマンドを実行します。

aws s3 cp s3://srcbucket/ s3://destbucket/

--recursive --exclude "a*" --exclude "b*" --exclude "c*" --exclude "d*" --exclude "e*"

--exclude "f*" --exclude "g*" --exclude "h*" --exclude "i*" --exclude "j*" --exclude "k*"

--exclude "l*" --exclude "m*" --exclude "n*"

aws s3 cp s3://srcbucket/ s3://destbucket/

--recursive --exclude "o*" --exclude "p*" --exclude "q*" --exclude "r*" --exclude "s*"

--exclude "t*" --exclude "u*" --exclude "v*" --exclude "w*" --exclude "x*"

--exclude "y*" --exclude "z*"

これはとても単純な例なので、フォルダや大文字、数字があり得る可能性について考慮していません。最初のコマンドのインスタンスは小文字のaからnで始まらないファイルをすべてコピーし、2番目のコマンドのインスタンスは小文字のoからzで始まらないファイルをすべてコピーします。この方法を使うときには、両方のインスタンスが同じファイルを処理することで起きる衝突を避けるために、除外するパラメーターをダブルチェックしてください。

別スレッドであることを活用して、実行するAWS CLI インスタンスの--excludeフィルターのスコープを互いに制限します。処理元のバケットと処理先のバケットとの間でファイルを移動したり、同期したりする場合も、同じテクニックが使えます。スレッドを複数使用すると、データのスループットを大幅に向上できます。さらに、これらのコマンドは処理元と処理先にローカルディレクトリをサポートしているので、ローカルコンピュータとAmazon S3バケットとの間で、ファイルをコピーや移動、同期できます。

このアプローチの1つの欠点は、連続したキーまたはファイル名のリクエストを、S3に対して複数作成する時に、速度が低下してしまう可能性があることです。この潜在的な落とし穴に関して詳しくは、「リクエスト率およびリクエストパフォーマンスに関する留意事項」をご覧ください。.

1 TBを超えるアップロードやダウンロードには、S3用のAWS Import/Export Snowballを使うことを検討してください。 Snowball はセキュアなアプライアンスを使用したペタバイト規模のデータ転送ソリューションで、AWS 内外に大容量データを転送できます。Snowball を使用すると、ネットワークのコストが高い、転送時間が長い、セキュリティに懸念があるといった、大規模なデータ転送に関する一般的な課題を解決できます。Snowball を使うとデータを簡単、迅速、安全に転送でき、コストは高速インターネットの 5 分の 1 ほどで済みます。

詳しくは、「AWS Import/Export Snowball」をご覧ください。

最重要課題が時間である場合には、Amazon Elastic MapReduce(Amazon EMR)でS3DistCpを使うことを検討してください。S3DistCpはEMRクラスターと合わせて動作し、オブジェクトをあるS3バケットから別のバケットへと素早く移します。EMRクラスターは別のコストが発生しますが、耐障害性とスピードが優れています。このオプションについて詳しくは、「Distributed Copy Using S3DistCp」をご覧ください。

Amazon S3、コピー、移動、同期、パフォーマンス、最適化、除外、マルチスレッド


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

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

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

公開日: 2016 年 1 月 7 日