尝试发布到我在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"
}
]
}
答案 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,则需要重新部署它以使资源策略生效。”
答案 3 :(得分:0)
更改策略后,您需要重新部署应用程序以进行更改。 重新部署- 1.转到API网关。 2.转到资源。 3.单击操作下拉菜单。单击部署API。
答案 4 :(得分:0)
在
"Resource": "execute-api:/*/POST/user"
设置您的Account ID
而不是*
然后重新部署。
K,