Je déploie une application Web simple à S3
passant par amplify publish
. L'hébergement a Cloudfront
activé (j'ai sélectionné l'environnement produit à amplifier tout en configurant l'hébergement) et je travaille dans le eu-central-1
Région. Mais chaque fois que j'essaie d'accéder à l'URL Cloudfront
, je reçois une erreur AccessDenied
.
J'ai suivi un tutoriel à - https://medium.com/quasar-framework/Creating-a-Quasar-Framework-aplication-with-aws-amplify-services-par-1-4-9A795F38E16D an La seule chose que j'ai faite différemment était la région (utilise du tutoriel us-east-1
pendant que j'utilise eu-central-1
).
La configuration de S3 et CloudFront a été faite par amplifier et devrait donc travailler en théorie:
Cloudfront:
quasar-demo-hosting-bucket-dev.s3-eu-central-1.amazonaws.com
(à l'origine, c'était sans le eu-central-1
, mais je l'ai ajouté manuellement après qu'il ne fonctionnait pas).hostingS3Bucket
S3 Origin
S3 Sucket Politique:
{
"Version": "2012-10-17",
"Id": "MyPolicy",
"Statement": [
{
"Sid": "APIReadForGetBucketObjects",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity ********"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::quasar-demo-hosting-bucket-dev/*"
}
]
}
Les recherches m'ont montré que Cloudfront
peut avoir des problèmes temporaires pour accéder à S3
aux dans d'autres régions. Mais j'ai ajouté manuellement la région à l'origine de Cloudfront
et j'ai attendu 24h. Je reçois toujours l'accès refusé.
Je soupçonne que cela a quelque chose à voir avec le S3
Seau n'est pas dans la valeur par défaut us-east-1
Région et amplifiez non la configuration Cloudfront
correctement dans ce cas.
Comment puis-je obtenir amplifier pour définir le S3
seau et Cloudfront
up correctement afin que je puisse accéder à mon site Web via l'URL Cloudfront
?
Merci pour l'information supplémentaire.
ton S3
La politique de seau semble bien.
Concernant Origin Domain name or Path
, C'est toujours S3
Seau apparaît dans la liste déroulante, donc pas besoin de le mettre à jour avec region
Cependant, il y a un paramètre manquant dans votre Cloudfront Origin
.
[.____] Vous devez sélectionner Restrict Bucket access
à Yes
Selon AWS documentation
[.____] Si vous souhaitez que les utilisateurs accèdent toujours à votre contenu Amazon S3 à l'aide des URL de CloudFront, non des URL d'Amazon S3, cliquez sur Oui. Ceci est utile lorsque vous utilisez des URL signées ou des cookies signés pour restreindre l'accès à votre contenu. Dans l'aide, voir "Servir du contenu privé à travers Cloudfront
Maintenant créer new Identity
ou alors select Existing Identity
Pour ceux que la première solution ne fonctionne pas, assurez-vous également que le javascript.config.DistributionDir
dans ton project-config.json
Le fichier est configuré correctement. Cela peut également provoquer l'erreur d'accès (comme je viens d'apprendre la solution difficile).
Amplify attend votre fichier d'entrée de votre application (index.html) au premier niveau dans le répertoire que vous avez configuré. Donc, si vous acceptez l'amplificateur configuration par défaut (dist
) et utilisez un projet qui place les fichiers bâtis à un niveau plus profond de la hiérarchie (dist/<project name>
Dans le cas de angular 8), il se manifeste comme une erreur d'accès à 403 après la publication. Cela est vrai des options d'hébergement Amplify et S3.
docs: https://docs.aws.amazon.com/amplify/latest/userguide/manual-deploys.html (voir la fin)