Lambda调用CreateAPIKeyRequest触发权限错误,请求解决方案
解决Lambda调用CreateApiKey权限不足问题
问题核心
你遇到的错误明确指向:Lambda的执行角色(arn:aws:sts::XXXXXXXXXX:assumed-role/createAPIKey-role-s4puynzg/createAPIKey)缺少身份型权限策略,无法执行apigateway:POST动作访问资源arn:aws:apigateway:us-east-1::/apikeys。你之前配置的基于资源的权限不适用这个场景,API Gateway的CreateApiKey操作需要给Lambda的执行角色附加身份型权限。
具体解决步骤
- 登录AWS控制台,进入IAM服务,找到Lambda对应的执行角色
createAPIKey-role-s4puynzg。 - 给该角色添加一条自定义权限策略,内容如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "apigateway:POST", "Resource": "arn:aws:apigateway:us-east-1::/apikeys" } ] }
- 保存策略后,重新测试Lambda函数。
额外检查项
- 确认策略中的区域
us-east-1和代码中指定的区域完全一致,避免区域不匹配导致权限失效。 - 核对资源ARN的格式,确保没有拼写错误(比如多余或缺失的斜杠)。
- 若需要更灵活的权限(比如管理所有API密钥),可将Action改为
apigateway:*、Resource改为arn:aws:apigateway:us-east-1::/apikeys/*,但建议遵循最小权限原则,只授予必要动作。
错误提示原文:
User: arn:aws:sts::XXXXXXXXXX:assumed-role/createAPIKey-role-s4puynzg/createAPIKey is not authorized to perform: apigateway:POST on resource: arn:aws:apigateway:us-east-1::/apikeys because no identity-based policy allows the apigateway:POST action (Service: AmazonApiGateway;
你的代码片段:
AmazonApiGateway client = AmazonApiGatewayClientBuilder.standard().withRegion("us-east-1").build(); CreateApiKeyRequest keyReq = new CreateApiKeyRequest(); keyReq.setName("KEY_NAME"); keyReq.setDescription("KEY_DESC"); keyReq.setEnabled(true); CreateApiKeyResult keyRes = client.createApiKey(keyReq);
内容的提问来源于stack exchange,提问作者WApp
相关产品推荐
相关产品推荐

