AWS API Gateway:匿名用户无权执行API

时间:2018-10-26 20:45:26

标签: amazon-web-services amazon-cloudformation aws-api-gateway

尝试发布到我在API网关中创建的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"
}

如何更新CloudFormation中的策略以使POST端点公开可用?我声明了AWS::ApiGateway::RestApi资源类型的API。

API策略属性为:

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

5 个答案:

答案 0 :(得分:2)

即使您的OPTIONS方法的“授权”设置为“无”,它也会检查资源策略(如果有)。

您可以通过设置以下API网关资源策略来公开您的OPTIONS方法。

{
    "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/*"
        }
    ]
}

塞克How API Gateway Resource Policies Affect Authorization Workflow

答案 1 :(得分:1)

问题可能出在方法声明部分。您需要在authorizationType声明中将NONE设置为AWS::ApiGateway::Method

答案 2 :(得分:0)

让我感到震惊的事情是:“如果先前已在API Gateway控制台中部署了API,则需要重新部署它以使资源策略生效。”

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

答案 3 :(得分:0)

更改策略后,您需要重新部署应用程序以进行更改。 重新部署- 1.转到API网关。 2.转到资源。 3.单击操作下拉菜单。单击部署API。

答案 4 :(得分:0)

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

设置您的Account ID而不是*

然后重新部署。

K,