这个问题涉及到一个我在这里遇到的问题: AWS CDK如何从OpenApi spec创建由Lambda支持的API网关?。
我使用AWS CDK使用OpenAPI规范创建了一个API网关。该API由Lambda支持,并且需要APIG获得调用Lambda的权限。
当我授予APIG调用我的Lambda的权限时:
我使用AWS CDK使用OpenAPI规范创建了一个API网关。该API由Lambda支持,并且需要APIG获得调用Lambda的权限。
当我授予APIG调用我的Lambda的权限时:
myLambda.addPermission("PermitAPIGInvocation", Permission.builder()
.action("lambda:InvokeFunction")
.principal(ServicePrincipal.Builder.create("apigateway.amazonaws.com")
.build())
.sourceArn(mySpecRestApi.arnForExecuteApi())
.build());
当我尝试调用API端点时,我会收到一个500错误“Lambda函数权限无效”,直到我重新部署API。在使用APIG控制台测试lambda函数时没有任何问题。
如何让ApiGateway自动工作而无需手动干预?即如何确保我的lambda函数具有必要的权限?
SpecRestApi
创建的,在OAS规范的x-amazon-apigateway-integration
段中,有一个uri
属性指向APIG调用ARN和一个credentials
属性,其中包含一个角色,允许调用所有lambda函数。 - JohnRestApi
时似乎是这种情况,但是当您使用SpecRestApi
时不是这种情况。 - John