CloudFront + S3 Site web: “La clé spécifiée n'existe pas” quand un indice implicite du document doit être affiché
J'ai tout juste de déployer un site statique vers Amazon S3, qui peut actuellement être vu ici: http://www.rdegges.com.s3-website-us-east-1.amazonaws.com/
Si vous cliquez sur un des liens d'article, vous verrez que le message d'erreur suivant:
S3 se plaint le fichier n'existe pas. Maintenant, voici ce qui est bizarre sur ce, je suis en utilisant CloudFront sur mon domaine. Ainsi, lorsque vous cliquez sur ce lien de l'article, c'est l'envoi de la demande de CloudFront qui tente alors de récupérer le fichier à partir du compartiment S3.
Toutefois, si vous visitez la même URL à partir de S3 directement, par exemple: http://www.rdegges.com.s3-website-us-east-1.amazonaws.com/2015/building-a-heroku-addon-planning/ la page se charge très bien.
Il semble que quelque chose a été perdu dans la traduction.
Quelqu'un a une suggestion de ce que je peux faire pour corriger mes paramètres?
Vous devez vous connecter pour publier un commentaire.
Je vais aller sur une branche et dire que la clé spécifiée n'est pas techniquement existent, de sorte que le message d'erreur est techniquement exactes, mais ne dit pas toute l'histoire. Cela devrait être facile à corriger.
S3 ont two1 points de terminaison, de "REPOS" et "site web". Ils ont deux différents ensembles de fonctionnalités. Le site web d'extrémité fournit magique résolution de l'index des documents (p. ex. index.html qui semble être ce qu'il est supposé être renvoyé au navigateur dans l'exemple que vous avez fournie) alors que le RESTE des points de terminaison de ne pas.
Lorsque vous configurez CloudFront en face d'un seau utilisé pour l'hébergement de site web, habituellement, vous ne voulez pas configurer l'origine comme une "S3" origine en sélectionnant le seau nom dans la liste déroulante; au lieu de cela, vous souhaitez configurer en tant que "Mesure" de l'origine, et d'utiliser le site web extrémité le nom d'hôte comme prévu dans la S3 de la console (par exemple,
example-bucket.s3-website-us-east-1...
) parce que sinon, CloudFront suppose que vous voulez qu'il utilise le point de terminaison REST pour le seau (qui permet l'authentification et le contenu privé, qui le site web de point de terminaison n'est pas).La documentation a été reconstruit depuis que cette question a été à l'origine de réponse, de sorte que le message indiqué ci-dessus s'affiche désormais une page plus tard, et a été reformulé, mais l'essence est la même. "Le nom de seau" semble renvoyer à des choix affichés dans la liste déroulante, ce qui n'est pas ce que vous voulez.
L'indication que vous êtes en utilisant le point de terminaison REST pour le seau est parce que le message d'erreur ne serait pas en XML si vous avez été en utilisant le site web d'extrémité -- le site web d'extrémité renvoie des messages d'erreur en HTML, au lieu de XML.
Créer un nouveau point d'origine de la distribution CloudFront, comme décrit, puis de modifier le comportement d'envoyer des demandes à la nouvelle origine, puis envoyer une CloudFront l'invalidation du cache de demande de
/*
et vous devriez être en jeu.Voir aussi:
http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html#WebsiteRestEndpointDiff
1 deux points de terminaison. Techniquement, il y a plus de deux, puisque tous les compartiments ont au moins deux de REPOS de point de terminaison des noms d'hôtes... mais il y a deux types de points de terminaison. Les seaux ont également une option de transfert de l'accélération de point de terminaison qui utilise AWS réseau edge (la même infrastructure que les pouvoirs CloudFront) pour accélérer/optimisé transferts de, en particulier à partir d'emplacements géographiques plus éloignées de la région où le seau est mis en service, mais sans l'aide de la CloudFront cache. De ce point de terminaison ressemble
https://example-bucket.s3-accelerate.amazonaws.com
si vous l'activez, et porte un supplément de frais d'utilisation pour la plupart des demandes, puisque vous êtes en utilisant plus du réseau AWS et moins de l'Internet public... mais, c'est une différence dans le derrière-le-scènes de déploiement de l'ordinateur d'extrémité, et non pas le comportement de l'ordinateur d'extrémité. Le transfert de l'accélération de point de terminaison est toujours un point de terminaison REST, ainsi, tout comme les autres RESTE des points de terminaison, il n'a pas l'hébergement de site web dispose d'. CloudFront ne vous laissent pas utiliser une accélération de point de terminaison pour une origine nom de domaine, parce que ça n'aurait pas de sens -- si une telle configuration ont été autorisés, les demandes et les réponses en boucle via AWS Réseau de Bord à deux reprises et d'augmenter la latence et les coûts sans fournir aucun avantage.Deployed
s'il existe un doute quant à savoir si ce changement ne fonctionne pas comme prévu. Si vous savez que vous vous êtes trompé, vous pouvez pousser des modifications supplémentaires, sans effets néfastes. Il contribue également à accélérer le dépannage, si vous obtenez des erreurs, zéro de l'Erreur de mise en Cache Minimum TTLs – erreur réponses sont mises en cache à l'aide de différents compteurs.Rencontré le même problème et comment je l'ai résolu, c'était dans CloudFront Origine des Paramètres de ensemble Origine Nom de Domaine à
<website bucket>.s3-website-us-west-2.amazonaws.com
Dans CloudFront Générer des Paramètres de assurez-vous d'avoir
index.html
comme par Défaut de l'Objet Racine.Dans S3 assurez-vous d'avoir Utiliser ce seau pour héberger un site web sélectionné et mis
index.html
comme document d'Index./index.html
et pasindex.html
.Voir AWS docs sur la façon de utilisation CloudFront pour servir un site web statique hébergés sur S3 sur https.
Transcrire le contenu ci-dessous pour plus de commodité (ou dans le cas où le lien ne va jamais de mal).
Utiliser le Amazon S3 console à créer un seau et de permettre d'hébergement de site statique sur le seau.
De la d'hébergement de site Statique boîte de dialogue, copiez le Extrémité de votre compartiment sans le http://. Le format est similaire à bucketname.s3-website-region.amazonaws.com. Vous avez besoin du point de terminaison dans ce format pour une étape ultérieure.
Ajouter un seau politique qui permet l'accès public en lecture dans le seau que vous avez créé.
Créer un CloudFront de distribution sur le web. Assurez-vous de configurer les éléments suivants:
Si vous ne souhaitez pas utiliser le protocole SSL (HTTPS) pour votre site web, passez à l'étape suivante. Si vous voulez utiliser le protocole SSL pour votre site web, vous pouvez choisir Demande ou de l'Importation d'un Certificat auprès d'ACM à la demande d'un certificat. Pour plus d'informations, voir L'utilisation d'autres Noms de Domaine et HTTPS.
Choisir Créer De Distribution.
Mettre à jour les enregistrements DNS de votre domaine pour pointer votre site web CNAME de votre distribution CloudFront nom de domaine. Vous pouvez trouver votre nom de domaine de distribution dans le CloudFront console dans un format semblable à d1234abcd.cloudfront.net.
Attendre pour votre DNS les modifications se propagent et pour les précédentes entrées DNS le point d'expirer.
J'ai également un problème similaire
J'ai suivi ces étapes qui ont résolu ce problème,
SUIT:
Cette étape a résolu mon problème.
J'ai eu ce problème quand j'ai essayé d'inclure le seau nom dans mon route53 de redirection pour un client, pour faciliter l'e.g:
https://0832234.signin.aws.amazon.com/console/s3/?bucket=clientbucket.com
Cliquant sur "Tous les compartiments" et de revenir dans les clients seau /ou de retirer le seau à partir de l'url a fait le tour, je peux maintenant télécharger et ouvrir les fichiers.