Ich versuche, S3 statische Website-Hosting einzurichten, aber es scheint 403 auf einem meiner Objekte, die nicht über das Content-Type
Metadaten-Feld in der AWS-Konsole festgelegt haben. Ich kann nicht herausfinden, wie man das mit dem AWS CLI-Tool macht.Wie lege ich beim Hochladen auf S3 mit AWS CLI Content-Type fest?
Mit der --metadata
Option scheint zu funktionieren:
$ 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"
}
}
Aber das Content-Type
Feld in den „Metadaten“ die AWS-Konsole nicht sichtbar auf dem Objekt, und ich bekomme ein 403, wenn sie Zugang versuchen die Datei in einem Browser.
Mit der --content-type
Option funktioniert auch nicht:
$ 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": {}
}
Während es irgendeine Art von spezieller ContentType
Eigenschaft zu setzen scheint, gibt es noch keine Content-Type
Metadatenfeld in der AWS-Konsole, noch kann ich Greife auf die Datei in einem Browser zu.
Ich habe auch ähnliche Befehle (aws s3 cp
, aws s3 sync
) versucht, ohne Glück. Ich habe die Bucket-Richtlinie auf öffentlich lesbar eingestellt.
Dies funktioniert nicht, wenn ich den '--acl public-read' Parameter weglassen. Gibt es eine Möglichkeit, dies zum Laufen zu bringen, während der Zugriff auf einen bestimmten IP-Bereich gesperrt wird, wie ich es in meiner Bucket-Richtlinie getan habe? –
Es macht nichts, scheint dieses Setup bereits genau das, was ich will: obwohl die Objekt-ACL auf 'public-read' gesetzt ist, gilt die Bucket-Richtlinie immer noch. –