web-dev-qa-db-fra.com

AWS CloudFront renvoie http 307 lorsque Origin est le compartiment S3

J'ai créé le compartiment s3 avec quelques fichiers. J'ai créé la distribution CloudFront avec ce compartiment S3 en tant qu'origine et son statut a été déployé.

Lorsque je recourbe CloudFront pour tout fichier que j'obtiens:

<Error><Code>TemporaryRedirect</Code><Message>Please re-send this request to the specified temporary endpoint. Continue to use the original request endpoint for future requests.</Message><Bucket>MY-BUCKET</Bucket><Endpoint>MY-BUCKET.s3-eu-west-1.amazonaws.com</Endpoint><RequestId>...</RequestId><HostId>...</HostId></Error>

Lorsque je recourbe mon compartiment S3 pour n'importe quel fichier, j'obtiens le contenu de ce fichier.

Qu'est-ce que je fais mal? Comment forcer Cloudfront à mettre en cache des fichiers afin que les clients n'aient pas besoin d'obtenir directement des données de S3?

22
user3231055

Thx Matt Houser du commentaire à mon premier post!

Il semble que CloudFront ait mis en cache mes premières demandes de fichiers lorsque la distribution n'était pas entièrement prête (mais elle était à l'état déployé à ce moment-là, alors méfiez-vous!). J'ai demandé l'invalidation de tous les fichiers qui étaient dans le cache, cela a pris quelques minutes, mais après l'invalidation, tous les fichiers ont été bouclés avec http 200 en utilisant l'URL CloudFront.

Le problème est devenu clair après le commentaire de Michael-sqlbot:

Tous les compartiments ont au moins deux noms d'hôte de point de terminaison REST. Dans eu-west-1, ils sont example-bucket.s3-eu-west-1.amazonaws.com et example-bucket.s3. amazonaws.com. Le premier sera immédiatement valide lors de la création du compartiment. Le second - parfois appelé "point de terminaison global" - qui est celui utilisé par CloudFront - ne le sera pas, sauf si le compartiment est en nous -east-1. Sur une période de quelques secondes à quelques minutes, variable selon l'emplacement et d'autres facteurs, elle devient également accessible à l'échelle mondiale. Avant cela, la redirection 307 est renvoyée. Par conséquent, le compartiment n'était pas prêt.

38
user3231055