大容量データのS3へのアップロード方法について
困っていた内容
オンプレ環境ファイルをAWS環境にアップロードする必要があります。
準備する時間が限られるため、簡単にアップロード環境の構築ができる必要があります、よい方法があれば教えて下さい。
方法について
大容量ファイルのS3へアップロード最適化としては、マルチパートアップロードの利用が推奨されます。
[Amazon S3 への大容量ファイルのアップロードを最適化する]
(https://aws.amazon.com/jp/premiumsupport/knowledge-center/s3-upload-large-files/)
大容量のファイルを Amazon S3 にアップロードするときは、マルチパートアップロードを活用するのがベストプラクティスです。
AWS Command Line Interface (AWS CLI) を使用している場合、オブジェクトが大きいと、どの aws s3 高レベルコマンドも自動的にマルチパートアップロードを実行します。
高レベルコマンドには、aws s3 cp や aws s3 sync などがあります。
注意事項①
s3 cpについてAWS CLI の設定に従って自動的にマルチパートアップロードが行われますので、並列数等の設定によっては処理時間が短くなります。
特にメソッドによってパフォーマンスが大きく異なるといったことはないかので、マルチパートアップロードを行なっているかといった点や並列数の設定をご確認ください。
[Amazon S3 のパフォーマンスのガイドライン]
(https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/optimizing-performance-guidelines.html)
ストレージ接続を水平にスケールする
多くの接続間にリクエストを分散することが、パフォーマンスを水平にスケールする一般的な設計パターンです。パフォーマンスの高いアプリケーションを作成するには、Amazon S3 を従来のストレージサーバーのような 1 つのネットワークエンドポイントではなく、非常に大きな分散システムと考えます。最適なパフォーマンスは、複数の同時リクエストを Amazon S3 に発行することで実現できます。これらのリクエストを別々の接続に分散して、Amazon S3 の利用可能な帯域幅を最大化します。Amazon S3 には、バケットへの接続数に制限はありません。
注意事項②
ファイル破損等の対策について、AWS CLIを用いてS3にオブジェクトをアップロードする際のチェックサムによる検証機能につきましては、aws s3 cpコマンドをご利用の場合、デフォルトでデータの整合性が確認されます。[1][2]
これにより、転送中にデータが正確にアップロードされているかどうかを検証し、チェックサムの検証が失敗した場合にはエラーとして処理されます。
この処理は追加のオプションを指定せずに自動で行われます。
参考資料
[1] [オブジェクトの整合性をチェックする - Amazon Simple Storage Service]
(https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/checking-object-integrity.html)
[2] [マルチパートアップロードを使用したオブジェクトのアップロードとコピー - Amazon Simple Storage Service]
(https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/mpuoverview.html)