このようなポリシーで公開するAmazon S3バケットがあります
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Allow Public Access to All Objects",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket/*"
}
]
}
バケットが http://bucket.s3-website-us-east-1.amazonaws.com/ として表示されるようになりました
他の人は自分のバケットを http://s3-us-east-1.amazonaws.com/bucket/
私は2番目のURLを好むでしょうが、それはアクセス拒否を与えます。
2番目のURLを許可するようにポリシーを変更するにはどうすればよいですか?
参照しているURL構造は、Webサイトエンドポイントではなく、RESTエンドポイントと呼ばれます。
注:この回答は最初に書かれたため、S3は既存のホスト名をそのまま残しながら、新しいホスト名を使用して、RESTエンドポイントでデュアルスタックサポートを展開しました。これは、以下で提供される情報に統合されました。
バケットが実際にAWSのus-east-1リージョンにある場合 S3のドキュメントは以前は「US Standard」リージョンと呼ばれていましたが、その後正式に「US East(N. Virginia )Region " -http://s3-us-east-1.amazonaws.com/bucket/
は、そのように見えても、そのエンドポイントの正しい形式ではありません。その地域の正しい形式はhttp://s3.amazonaws.com/bucket/
またはhttp://s3-external-1.amazonaws.com/bucket/
です。¹
使用している形式は、他のすべてのS3リージョンに適用できますが、 米国標準 米国東部(バージニア北部)[us-east-1]。
S3にはRESTエンドポイントの デュアルスタックエンドポイントホスト名 もあり、元のエンドポイントホスト名とは異なり、これらの名前はs3.dualstack.us-east-1.amazonaws.com
。これらのエンドポイントは、IPv4とIPv6の両方の接続とDNS解決をサポートしますが、その他の点では既存のRESTエンドポイントと機能的に同等です。
Webサイトのエンドポイントが機能するようにアクセス許可と構成が設定されている場合、RESTエンドポイントも機能するはずです。
ただし... 2つのエンドポイントは同じ機能を提供しません。
大まかに言うと、RESTエンドポイントはマシンアクセスにより適し、Webサイトエンドポイントは人間によるアクセスにより適しています。Webサイトエンドポイントはわかりやすいエラーメッセージ、インデックスドキュメント、リダイレクトを提供するためです。RESTエンドポイントはそうではありません。一方、RESTエンドポイントはHTTPSを提供し、署名付きURLをサポートしますが、Webサイトのエンドポイントは提供しません。
アプリケーションに適したエンドポイントのタイプ(RESTまたはWebサイト)を選択します。
http://docs.aws.Amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html#WebsiteRestEndpointDiff
¹s3-external-1.amazonaws.com
参照されている 「グローバルエンドポイント」s3.amazonaws.com
とは対照的に、「Northern Virginiaエンドポイント」として。 「s3-external-1」ホスト名を使用すると、この領域の新しいオブジェクトで読み取り後書き込みの一貫性を得ることが非公式に可能になりました。これにより、その機能を提供する可能性のある物理エンドポイントのサブセットが送信されるためです。この動作は現在、このエンドポイントで正式にサポートされているため、多くのアプリケーションでおそらくこれがより良い選択です。以前は、s3-external-2
参照されていました US-Standardの「太平洋岸北西部エンドポイント」として、現在はs3-external-1
のDNSのCNAMEであるため、s3-external-2
後方互換性以外の目的はないようです。