AWS API Gateway:用户匿名无权执行 API
Posted
技术标签:
【中文标题】AWS API Gateway:用户匿名无权执行 API【英文标题】:AWS API Gateway: User anonymous is not authorized to execute API 【发布时间】:2019-03-31 15:36:09 【问题描述】:尝试发布到我在 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"
]
【问题讨论】:
仅供参考,如果您看到此内容,您需要更新 API 网关上的资源策略 谢谢!这是我的问题。现在修好了。再次感谢 【参考方案1】:问题可能出在方法声明部分。您需要在 AWS::ApiGateway::Method
声明中将 authorizationType
设置为 NONE
。
【讨论】:
感谢 roxxypoxxy,我确实将方法 auth 设置为 none: `` "Type": "AWS::ApiGateway::Method", "Properties": ... "AuthorizationType": “无”,``` 现在我看到了您编辑的帖子,您可以尝试按照此处docs.aws.amazon.com/apigateway/latest/developerguide/… 记录的方式调整资源。您拥有的资源声明似乎不遵循文档中提到的模式 你错了。此错误消息与方法授权无关。【参考方案2】:让我不解的是:“如果 API 之前已在 API Gateway 控制台中部署,您需要重新部署它才能使资源策略生效。”
https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-resource-policies-create-attach.html
【讨论】:
重新部署后,我的 API 可用。这个解决方案对我有用。此答案应标记为正确答案。 另外,在部署按钮被按下后,它似乎可能需要几秒钟才能生效。 aws 应该在有更改配置选项的地方提供部署按钮,这样用户就不会花费数小时来弄清楚为什么某些东西不工作【参考方案3】:策略更改后,您需要重新部署应用程序以传播更改。 重新部署 - 1.转到API网关。 2. 转到资源。 3. 单击操作下拉菜单。单击部署 API。
【讨论】:
【参考方案4】:在
"Resource": "execute-api:/*/POST/user"
设置您的Account ID
而不是*
然后重新部署。
氪,
【讨论】:
我工作的另一个团队使用通配符 进行了类似的设置,并且适用于他们。像这样 - "Resource": !Join ["", ["execute-api:/", !Ref EnvironmentSuffix, "/"]],【参考方案5】:即使您的 OPTIONS 方法的 Authorization 设置为 NONE,它也会检查资源策略(如果有的话)。
您可以通过设置以下 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
【讨论】:
以上是关于AWS API Gateway:用户匿名无权执行 API的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在 AWS API 上收到“无权执行:ecs:ListTasks on resource:*”异常
使用授权方后 AWS Amplify API Gateway cors 错误:aws_iam
AWS Cognito 和 AWS API Gateway 中的用户管理和基于令牌的身份验证
用户无权执行:rekognition:RecognizeCelebrities with a explicit deny