Amazon web services 如何授权角色执行;执行api:Invoke";?
我正在尝试移动一套端到端测试,以便它们完全包含在AWS中。我已经通过代码构建完成了这项工作,并在运行测试之前完成了所有工作,这些测试在每次测试运行之前都会调用API重置数据库。当第一个测试尝试运行时,我一直遇到此错误消息Amazon web services 如何授权角色执行;执行api:Invoke";?,amazon-web-services,aws-api-gateway,amazon-iam,aws-codebuild,amazon-waf,Amazon Web Services,Aws Api Gateway,Amazon Iam,Aws Codebuild,Amazon Waf,我正在尝试移动一套端到端测试,以便它们完全包含在AWS中。我已经通过代码构建完成了这项工作,并在运行测试之前完成了所有工作,这些测试在每次测试运行之前都会调用API重置数据库。当第一个测试尝试运行时,我一直遇到此错误消息 StatusCodeError:403-“{\”消息\“:\”用户:匿名未被授权在资源上执行:执行api:Invoke:arn:aws:execute api:eu-west-2::**”} 起初,我认为该错误是由于缺少对用于构建所有内容的角色的权限造成的。我尝试为正在使用的
StatusCodeError:403-“{\”消息\“:\”用户:匿名未被授权在资源上执行:执行api:Invoke:arn:aws:execute api:eu-west-2::**”}
起初,我认为该错误是由于缺少对用于构建所有内容的角色的权限造成的。我尝试为正在使用的IAM角色添加正确的权限,最终使它们比我希望的更开放
"Effect": "Allow",
"Action": [
"execute-api:Invoke",
"execute-api:ManageConnections"
],
"Resource": "arn:aws:execute-api:*:*:*"
显然没有解决问题,但我注意到access advisor显示特定的策略没有被访问
接下来,我研究了API网关中的资源策略,以查看是否存在某些内容。我删除了一些限制访问办公室Ip地址的Ip地址条件
我查看了WAF和Shield的内部,没有看到任何与调用API相关的内容。在这一点上,我不知道下一次调查应该从哪里开始
编辑
这是我回来的回应
"requestId": "********-82f8-11e9-a732-0b550cf3fcd6",
"ip": "*.*.*.*",
"caller": "-",
"user": "-",
"requestTime": "30/May/2019:16:32:50 +0000",
"httpMethod": "GET",
"resourcePath": "/*/ref-data/{proxy+}", "status": "403", "protocol": "HTTP/1.1", "responseLength": "185"
您的角色允许执行api:Invoke的策略似乎是正确的,但您提供的错误消息显示,
User:anonymous无权执行…
。如果您希望您的角色尝试此操作,则会出现问题,因为您尝试与名为anonymous
的用户一起执行此操作
用于构建堆栈的角色不一定是用于在该堆栈上执行函数的角色。我建议您在整个过程中仔细检查所有IAM实体,并清楚地识别和理解每个实体试图做什么。确保调用函数的内容实际上是您想要的角色,并且附加了正确的策略
希望这有帮助 以下是您需要执行的步骤
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::###############:role/###########"
},
"Action": "execute-api:Invoke",
"Resource": "arn:aws:execute-api:ap-southeast-1:###########:/#########/*/POST/####/####/"
}
]
}希望这能奏效 在这种情况下,主要的阻止因素是策略中设置的API网关IP限制。我不知道所做的更改直到(重新)部署才生效。一旦我使用更新的IP限制进行了此操作,就可以调用API端点。您是否配置了授权人?这里似乎给出了答案: