27 votes

AWS API Gateway: l'utilisateur anonyme n'est pas autorisé à exécuter l'API

Essayer de publier sur une API que j'ai créée dans la passerelle API:

 {
    "Message": "User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:us-west-2:***********:jrr7u1ekrr/v0/POST/user"
}
 

Comment puis-je mettre à jour la stratégie dans CloudFormation pour rendre public le point de terminaison POST? Je déclare l'API avec le type de ressource AWS::ApiGateway::RestApi .

la propriété de stratégie d'API est:

 {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "execute-api:/*/POST/user"
        }
    ]
} 
 

22voto

Travis Bear Points 1408

Quelque chose qui m'a fait trébucher: "Si l'API a déjà été déployée dans la console API Gateway, vous devrez la redéployer pour que la stratégie de ressources prenne effet."

https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-resource-policies-create-attach.html

2voto

Après les modifications de stratégie, vous devez redéployer l'application pour que les modifications soient propagées. Pour redéployer - 1. Allez API Gateway. 2. Accédez à la ressource. 3. Cliquez sur la liste déroulante des actions. cliquez sur Deploy API.

2voto

pavan Kumar Points 21

Même si l'autorisation est définie sur AUCUNE pour votre méthode OPTIONS, elle vérifiera la stratégie de ressources si vous en avez une.

Vous pouvez rendre votre méthode OPTIONS accessible au public en définissant la stratégie de ressource de passerelle API suivante.

 {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:{REGION}:{AWS_ACCOUNT}:{YOUR_API_ID}/{YOUR_API_STAGE}/OPTIONS/*"
        }
    ]
}
 

Ckeck Comment les stratégies de ressources API Gateway affectent le flux de travail d'autorisation

1voto

roxxypoxxy Points 195

Le problème vient probablement de la partie déclaration de méthode. Vous devrez avoir authorizationType défini sur NONE dans votre déclaration AWS::ApiGateway::Method .

0voto

Rshad Points 15

Dans

 "Resource": "execute-api:/*/POST/user"
 

Définissez votre Account ID au lieu de *

Et puis redéployez.

Kr,

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X