I'm trying to set up S3 static website hosting, but it appears to return 403 on any of my objects that don't have the Content-Type
metadata field set in the AWS console. I cannot figure out how to do this with the AWS CLI tool.
Using the --metadata
option appears to work:
$ aws s3api put-object --bucket <bucket> --key foo.html --body foo.html --metadata Content-Type=text/html
{
"ETag": ""fd5ff7743e5ed1e1c304eb1c34e8e39f""
}
$ aws s3api head-object --bucket <bucket> --key foo.html
{
"AcceptRanges": "bytes",
"ContentType": "binary/octet-stream",
"LastModified": "Wed, 15 Apr 2015 06:39:48 GMT",
"ContentLength": 189,
"ETag": ""fd5ff7743e5ed1e1c304eb1c34e8e39f"",
"Metadata": {
"content-type": "text/html"
}
}
But the Content-Type
field on the object isn't visible in the "Metadata" section of the AWS console, and I get a 403 when trying to access the file in a browser.
Using the --content-type
option also doesn't work:
$ aws s3api put-object --bucket <bucket> --key foo.html --body foo.html --content-type text/html
{
"ETag": ""fd5ff7743e5ed1e1c304eb1c34e8e39f""
}
$ aws s3api head-object --bucket <bucket> --key foo.html
{
"AcceptRanges": "bytes",
"ContentType": "text/html",
"LastModified": "Wed, 15 Apr 2015 06:46:49 GMT",
"ContentLength": 189,
"ETag": ""fd5ff7743e5ed1e1c304eb1c34e8e39f"",
"Metadata": {}
}
While it appears to set some sort of special ContentType
property, there still isn't a Content-Type
metadata field in the AWS console, nor can I access the file in a browser.
I've also tried similar commands (aws s3 cp
, aws s3 sync
), with no luck. I have the bucket policy set to publicly-readable.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…