Amazon S3 コンソールを使用して Amazon S3 にデータをアップロードまたは転送する場合は、少量のデータが適しています。大容量のデータを効率的に転送する方法を教えてください。

Amazon S3 コンソールでは、便利なインターフェイスを使用して、比較的少量のデータを Amazon S3 バケットにアップロードおよびコピーすることができます。大量のデータを操作する必要がある場合は、他の方法を使用してパフォーマンスを強化することができます。

S3 バケットとの間で大量のデータを転送するには、次の方法をお試しください。

S3 バケットが同じリージョン内にある場合は、AWS コマンドラインインターフェイス (CLI) で、--exclude フィルターを指定して、AWS S3 cp (copy)、mv (move)、または sync (synchronize) コマンドの複数のインスタンスを同時に実行し、マルチスレッドでパフォーマンスを向上させることができます。「Exclude フィルタと Include フィルタの使用」に記載されているように、AWS CLI から複数のインスタンスを起動して、相互に排他的な --exclude フィルタで cp、mv、または sync コマンドを同時に実行することで、オペレーションは、各インスタンスで明示的に除外されていないオブジェクトに対してのみ実行されます。たとえば、s3://srcbucket/ という名前の送信元 S3 バケットと、s3://destbucket/ という名前の送信先 S3 バケットがある場合 (送信元には小文字で始まるファイルが多数の含まれている) は、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 以外のファイルがすべてコピーされます。この方法を使用する場合は、同一ファイルでオペレーションを実行中の両方のインスタンスで生じる競合を回避するために、exclude パラメータを再度確認します。

追加のスレッドを利用するには、実行する AWS CLI のインスタンスごとに --exclude フィルターの範囲を制限します。同じ技術を使用して、送信元バケットと送信先バケットの間でファイルを移動するか、ファイルを同期させることができます。複数のスレッドを使用することで、データスループットが大幅に向上する場合があります。さらに、これらのコマンドでは、ローカルディレクトリを送信元または送信先としてサポートしているため、ローカルコンピュータ間、またはローカルコンピュータと Amazon S3 バケットの間でファイルのコピーや移動、同期を行うことができます。

このアプローチの欠点のひとつに、連続するキー/ファイル名に関する複数のリクエストを S3 に対して行う際に減速が発生する可能性があります。この落とし穴の詳細については、「リクエスト率およびリクエストパフォーマンスに関する留意事項」を参照してください。

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

詳細については、「AWS Import/Export Snowball」を参照してください。

時間が最重要である場合は、Amazon Elastic MapReduce (Amazon EMR) で S3DistCp を使用することを検討してください。S3DistCp は、EMR クラスターと連携して、S3 バケットから別の S3 バケットにオブジェクトを速やかに再配置します。EMR クラスターでは追加料金が発生しますが、優れた耐障害性とスピードが得られます。このオプションの詳細については、「 S3DistCp を使用した分散コピー」を参照してください。

Amazon S3、copy、move、sync、パフォーマンス、最適化、除外、マルチスレッド


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

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

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

公開日: 2016 年 01 月 07 日