J'essaie de configurer l'hébergement de site Web statique S3, mais il semble renvoyer 403 sur l'un de mes objets qui n'ont pas le champ de métadonnées Content-Type
dans la console AWS. Je n'arrive pas à comprendre comment faire avec l'outil AWS CLI.Comment définir le type de contenu lors du téléchargement vers S3 avec AWS CLI?
En utilisant l'option --metadata
semble fonctionner:
$ 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"
}
}
Mais le champ Content-Type
sur l'objet ne soit pas visible dans la section « métadonnées » de la console AWS, et je reçois un 403 en essayant d'accéder le fichier dans un navigateur.
En utilisant l'option --content-type
ne fonctionne pas non plus:
$ 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": {}
}
Bien qu'il semble mettre une sorte de propriété spéciale ContentType
, il n'y a toujours pas un champ de métadonnées Content-Type
dans la console AWS, et je ne peux accéder au fichier dans un navigateur.
J'ai également essayé des commandes similaires (aws s3 cp
, aws s3 sync
), sans succès. La stratégie de compartiment est définie sur publiquement lisible.
Cela ne fonctionne pas si j'omets le paramètre '--acl public-read'. Existe-t-il un moyen de faire fonctionner cela tout en verrouillant l'accès à une certaine plage IP, comme je l'ai fait dans ma politique de compartiment? –
Peu importe, il semble que cette configuration fasse exactement ce que je veux: même si l'ACL de l'objet est définie sur public-read, la politique du compartiment s'applique également. –