gpt4 book ai didi

amazon-web-services - 使用 AWS-CDK 的跨堆栈 Lambda 和 API 网关权限

转载 作者:行者123 更新时间:2023-12-04 14:20:03 24 4
gpt4 key购买 nike

我有两个代码库。定义一项服务(服务 A),其中包含查询 dynamoDB 表的 AWS lambda。

另一个,定义一个聚合 API 网关,需要调用多个服务 lambda。

API 网关使用跨堆栈引用导入服务 A 中定义的 lambda,并为其创建 Lambda 集成:

    const queryTrackFunction = lambda.Function.import(this, 'TrackQueryServiceQueryTrackFunction', {
functionArn: cdk.Fn.importValue('TrackQueryServiceStack:QueryTrackFunctionArn')
})

const customerApi = new api.RestApi(this, 'CustomerAPI')

const tracks = customerApi.root.addResource('tracks')
tracks.addMethod('GET', new api.LambdaIntegration(queryTrackFunction))

调用 API 时失败,可能是因为 apigateway 服务尚未获得调用权限。

在服务 A 的 aws-cdk 项目中,我添加以下内容:

queryTracksFunction.grantInvoke(new ServicePrincipal('apigateway.amazonaws.com'))

当我尝试部署服务时,出现此错误:

Error: Cannot use tokens in construct ID: Invoke{"Service":["${Token[TOKEN.139]}"]}

最佳答案

这是一个错误。作为解决方法,在服务 A 中,您可以执行以下操作:

queryTracksFunction.addPermission('APIGateway', {
principal: new iam.ServicePrincipal('apigateway.amazonaws.com')
});

关于amazon-web-services - 使用 AWS-CDK 的跨堆栈 Lambda 和 API 网关权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55900479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com