web-dev-qa-db-fra.com

Amplify Publier des causes d'erreur d'accès

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:

  • Nom de domaine ou chemin d'origine: 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).
  • ID d'origine: hostingS3Bucket
  • Type d'origine: 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 à S3aux 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?

5
morgler

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

  • Cliquez sur le bouton Créer pour enregistrer l'origine.

enter image description here

4
Raj Paliwal

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)

4
Nathan Hanna