バケットを作成し、ウェブサイト開発サーバーからアップロードした画像をXMLファイルとして保存しました。バケットに移動して手動で公開すると、すべてのユーザーが利用できるようになり、そのファイルを取得できます。
ここで何が問題になるのでしょうか?
設定しました access= objects can be public
Block all public access = False
CORS構成
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<AllowedMethod>POST</AllowedMethod>
<AllowedMethod>PUT</AllowedMethod>
<AllowedMethod>DELETE</AllowedMethod>
<ExposeHeader>ETag</ExposeHeader>
<ExposeHeader>x-amz-meta-custom-header</ExposeHeader>
<AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>
アップロードされた画像にアクセスしようとしたときの初期エラー
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>InvalidRequest</Code>
<Message>The authorization mechanism you have provided is not supported. Please use AWS4-HMAC-SHA256.</Message>
<RequestId>XX</RequestId>
<HostId>XXZjXX</HostId>
</Error>
バケットに移動して手動で公開すると、すべてのユーザーが利用できるようになり、そのファイルを取得できます。ここで何が問題になるのでしょうか?
手動で行う必要はありません。代わりに、バケット内のすべてのオブジェクトを自動的に公開して読み取り可能にするために、バケットポリシーを追加できます。
例えば:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"PublicRead",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::<your-bucket-name>/*"]
}
]
}
また、 block public access settings
無効にしておく必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加