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?
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.