スキップしてコンテンツを表示

S3 Transfer Acceleration を有効にしてもアップロードが失敗する問題について

0

現在、約2GBの zip ファイルを AWS S3 にアップロードしようとしていますが、途中でタイムアウトして失敗してしまう問題に直面しています。

ネットワークレイテンシが高いため、S3 Transfer Acceleration を有効にして対応を試みましたが、アップロードは依然として完了しません。


試した構成

aws --version
aws-cli/2.25.6 Python/3.12.9 Darwin/23.6.0 source/arm64

.aws/config の内容:

[default]
region = us-east-1
output = json
s3 =
    max_concurrent_requests = 10
    max_queue_size = 1000
    multipart_threshold = 64MB
    multipart_chunksize = 64MB
    multipart_max_attempts = 10
    use_accelerate_endpoint = true

使用した CLI コマンド:

aws s3 cp takeout-20250802T041115Z-1-001.zip s3://{bucket-name}/

発生したエラー:

Completed 640.0 MiB/10.0 GiB (299.5 MiB/s) with 1 file(s) remaining

upload failed: ./takeout-20250802T041115Z-1-001.zip to s3://{bucket-name}/takeout-20250802T041115Z-1-001.zip Read timeout on endpoint URL: "https://{bucket-name}.s3-accelerate.amazonaws.com/..."
  • バケットには Transfer Acceleration を有効化済みです。
  • --endpoint-url は使用していません(.aws/config にて use_accelerate_endpoint = true を指定)。

ネットワーク状況

自宅のネットワーク環境が原因と思われますが、ping による測定では以下のような結果になりました:

PING s3.amazonaws.com (52.217.234.24): 56 data bytes
64 bytes from 52.217.234.24: icmp_seq=0 ttl=237 time=210.241 ms
...
round-trip min/avg/max/stddev = 210.241/234.454/337.881/38.831 ms

ご質問

  1. S3 Transfer Acceleration は高レイテンシのネットワーク環境でも効果的に機能するのでしょうか?
  2. aws s3 cp で Transfer Acceleration の効果を最大限活かすための追加設定や工夫があれば教えてください。
  3. 2GB 程度のファイルを安定してアップロードするための、CLI 設定またはその他のベストプラクティスがあれば教えてください。

ご助言いただけると助かります。

質問済み 9ヶ月前209ビュー
1回答
1

S3 Transfer Acceleration は高レイテンシのネットワーク環境で効果的に機能するように設計されていますが、それでもアップロードが失敗する場合は以下の対応を検討してください。

S3 Transfer Acceleration と高レイテンシ環境について

S3 Transfer Acceleration は、クライアントとS3バケット間の長距離転送を最適化するために設計されており、AWS のエッジロケーションを使用してデータをより効率的にルーティングします。高レイテンシ環境でも効果的ですが、ネットワークの不安定さが極端な場合は問題が発生することがあります。

アップロード失敗の対策

  1. 並列処理の調整:
  • 現在の設定では max_concurrent_requests = 10 となっていますが、ネットワーク状況によっては調整が必要です。
  • システムリソースに余裕がある場合は 1620 に増やしてみてください。
  • 逆に、ネットワークが不安定な場合は値を 58 に減らすことで安定性が向上する場合もあります。
  1. マルチパートアップロードの設定調整:
  • multipart_chunksize を調整してみてください。現在は 64MB ですが、ネットワークが不安定な場合は 32MB に下げることで個々のチャンクの転送成功率が上がる可能性があります。
  • multipart_max_attempts は既に 10 に設定されていますが、これは適切な値です。
  1. デバッグ情報の取得:
  • --debug フラグを使用して詳細な情報を取得してみてください:
aws s3 cp takeout-20250802T041115Z-1-001.zip s3://{bucket-name}/ --debug
  • これにより、どの段階で問題が発生しているかを特定できる可能性があります。
  1. ペイロード署名の無効化を検討:
  • 設定に payload_signing_enabled = false を追加することで、データブロックのSHA-256ハッシュ計算のオーバーヘッドを削減できます。
  • ただし、これはセキュリティとのトレードオフになります。
  1. 中断されたマルチパートアップロードの確認と削除:
  • 以前の失敗したアップロードが残っている可能性があります。以下のコマンドで確認と削除ができます:
aws s3api list-multipart-uploads --bucket {bucket-name}
aws s3api abort-multipart-upload --bucket {bucket-name} --key {object-key} --upload-id {upload-id}

2GB程度のファイルを安定してアップロードするためのベストプラクティス

  1. ネットワーク接続の安定化:
  • 可能であれば、Wi-Fi ではなく有線接続を使用してください。
  • 他のネットワーク負荷の高いアプリケーションを一時的に停止してみてください。
  1. リトライ戦略の実装:
  • 失敗した場合に自動的にリトライするスクリプトを作成することを検討してください。
  • AWS CLI には組み込みのリトライ機能がありますが、カスタムスクリプトでより細かく制御できます。
  1. ファイルの分割:
  • 2GB のファイルを小さなチャンクに分割し、個別にアップロードした後、S3 で再結合することを検討してください。
  1. 代替転送方法の検討:
  • 極端に不安定なネットワーク環境では、AWS Snowball などの物理デバイスを使用したデータ転送も選択肢の一つです。

これらの調整を試しても問題が解決しない場合は、ネットワークプロバイダーとの相談や、別のネットワーク環境からのアップロードを検討することをお勧めします。
Sources
Why do S3 CLI uploads sometimes hang mid-transfer with no error? | AWS re:Post
Upload to AWS S3 is pathetically slow | AWS re:Post
Troubleshoot cross-region transfer issues - AWS Transfer Family
Use Amazon S3 Transfer Acceleration to Minimize Latency Caused by Distance - Best Practices Design Patterns: Optimizing Amazon S3 Performance
S3 Transfer Rates Capped at 2.8mb/s ??? How Can I Speed This Up? | AWS re:Post

回答済み 9ヶ月前

ログインしていません。 ログイン 回答を投稿する。

優れた回答とは、質問に明確に答え、建設的なフィードバックを提供し、質問者の専門分野におけるスキルの向上を促すものです。

関連するコンテンツ