我从 Lambda 函数调用 CreateAPIKeyRequest POST 调用,目的是使用每次调用生成的 API 密钥 ID 进行响应。收到错误消息,指出 Lambda 函数没有调用 createAPI POST 调用的权限。
相同的代码如下:
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);
阅读文档后发现我需要提供权限,因此使用 ARN 为 Lambda 函数分配基于资源的权限:arn:aws:apigateway:us-east-1::/apikeys。
获取错误消息为“User: arn:aws:sts::XXXXXXXXXX:assumed-role/createAPIKey-role-s4puynzg/createAPIKey 无权在资源上执行: apigateway:POST: arn:aws:apigateway:us- east-1::/apikeys 因为没有基于身份的策略允许 apigateway:POST 操作(服务:AmazonApiGateway;”
有任何输入吗?