更新:この回答では、ほとんどの場合、私が残した古い用語を使用しています。AWS は、「US-Standard」のフレンドリ名を他のリージョンの命名とより一致するように変更しましたが、 IPv4 のリージョン エンドポイントにはまだ珍しい名前が付けられていs3-external-1.amazonaws.com
ます。
S3 の us-east-1 リージョンには、IPv4/IPv6 の「デュアル スタック」エンドポイントがあり、IPv6 が有効になっている場合、このエンドポイントは以下で説明するs3.dualstack.us-east-1.amazonaws.com
ように操作上同等に見えます。s3-external-1
この地域のリクエストの地理的ルーティングに関する文書化された参照は、多くのコメントがなく、ほとんど消えているようですが、事例証拠は、次の情報がまだその地域に関連していることを示唆しています.
Q. US Standard リージョンはありませんでしたか?
AWS リージョンの命名規則と一致するように、米国標準リージョンを米国東部 (バージニア北部) リージョンに名前変更しました。
— https://aws.amazon.com/s3/faqs/#regions
S3 Transfer Acceleration 機能を使用するバケットは、グローバル スタイルのエンドポイントを使用します。${bucketname}.s3-accelerate.amazonaws.com
このエンドポイントが us-east-1 バケットと結果整合性に関してどのように動作するかはまだ明らかではありませんが、有効になっている場合、他のリージョンがこの機能の影響を受けないことは当然のことです。この機能は、リクエストを同じ S3 エンドポイントにルーティングするが、CloudFront を強化するのと同じシステムである AWS「エッジ ネットワーク」を介してプロキシすることにより、バケットからより離れたユーザーの転送スループットを向上させます。基本的に、これは CloudFront を介した自己構成パスですが、キャッシュは有効になっていません。高速化は、最適化されたネットワーク スタックと、インターネット上のパスの大部分でマネージド AWS ネットワーク上のトラフィックを維持することによってもたらされます。そのため、この機能を有効にしてバケットで使用する場合、この機能は一貫性に影響を与えないはずです... しかし、前述したように、us-east-1 バケットとどのように相互作用するかはまだわかっていません。
US-Standard (us-east-1) リージョンは、S3 の中で最も古く、おそらく最大のリージョンであり、他の新しいリージョンとはいくつか異なるルールでプレイします。
重要かつ関連する違いは、一貫性モデルです。
[米国標準を除くすべてのリージョン] の Amazon S3 バケットは、新しいオブジェクトの PUTS に対する読み取り後の書き込み整合性と、上書きの PUTS および DELETES に対する結果整合性を提供します。米国標準リージョンの Amazon S3 バケットは、結果整合性を提供します。
http://aws.amazon.com/s3/faqs/
これが、米国標準を使用していると想定した理由です。あなたが説明した動作は、その設計上の制約と一致しています。
これが別のリージョンのテスト バケットで発生しないことを確認できるはずですが、同じリージョン内の EC2 から S3 へのデータ転送は無料でレイテンシが非常に低いため、別のリージョンのバケットを使用すると、実用的ではありません。
試してみる価値のある別のオプションがあり、US-Standard の内部動作に関係しています。
米国標準は、実際にはバージニア州とオレゴン州の間で地理的に分散されており、「s3.amazonaws.com」へのリクエストは、DNS を介していずれかの場所に選択的にルーティングされます。このルーティングは大部分がブラック ボックスですが、Amazon は回避策を公開しています。
エンドポイントを「s3.amazonaws.com」から「s3-external-1.amazonaws.com」に変更することで、リクエストがバージニア北部にのみルーティングされるように強制できます ...
http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
...これは私の憶測ですが、リクエストの地理的ルーティングによって問題が悪化する可能性があり、それらを「s3-external-1」(明確にするために、まだ米国標準です)に強制することで改善される可能性がありますまたは問題を解決します。
更新:上記のアドバイスは公式には憶測を超えていますが、歴史的な参考のために残しておきます。私が上記の記事を書いた約 1 年後、Amazon は実際に、US-Standard が新しいオブジェクトの作成で読み取り後の書き込みの一貫性を提供することを発表しましたが、それはエンドポイントが使用されている場合のみです。s3-external-1
彼らはそれが新しい動作であるかのように説明しており、それは事実かもしれません...しかし、それは単にプラットフォームが公式にサポートする動作の変更である可能性もあります. どちらにしても:
[2015-06-19] から、米国標準リージョンは、北バージニア エンドポイント (s3-external-1.amazonaws.com) を使用して Amazon S3 に追加された新しいオブジェクトの書き込み後の読み取り一貫性をサポートするようになりました。この変更により、すべての Amazon S3 リージョンが書き込み後の読み取りの一貫性をサポートするようになりました。読み取り後書き込みの一貫性により、Amazon S3 での作成直後にオブジェクトを取得できます。この変更の前は、米国スタンダード リージョンの Amazon S3 バケットは、新しく作成されたオブジェクトの結果整合性を提供していました。つまり、新しいオブジェクトのアップロード直後は、一部の小さなオブジェクト セットを読み取ることができなかった可能性があります。これらの時折の遅延により、アプリケーションがオブジェクトを作成した直後にオブジェクトを読み取る必要があるデータ処理ワークフローが複雑になる可能性があります。米国標準リージョンでは、この一貫性の変更はバージニア北部のエンドポイント (s3-external-1.amazonaws.com) に適用されることに注意してください。グローバル エンドポイント (s3.amazonaws.com) を使用しているお客様は、米国標準リージョンでこの読み取り後の書き込みの一貫性の利点を活用するために、北バージニア エンドポイント (s3-external-1.amazonaws.com) の使用に切り替える必要があります。 . 【強調追加】
https://forums.aws.amazon.com/ann.jspa?annID=3112
大量のファイル (毎秒数百) をアップロードしている場合は、S3 のシャーディング メカニズムを圧倒している可能性もあります。1 秒あたりのアップロード数が非常に多い場合、キー (「ファイル名」) が字句的に連続していないことが重要です。
Amazon が DNS を処理する方法に応じて、コードで処理できる場合は、バケットをアドレス指定する別の代替バリアントを試すこともできます。
US-Standard のバケットは、 http://mybucket.s3.amazonaws.com/key ... またはhttp://s3.amazonaws.com/mybucket/key ... およびこれら 2 つの内部実装のいずれかでアドレス指定できます。少なくとも理論的には、問題に関連する方法で動作を変更する方法で異なる可能性があります。