跨账户Lambdas到API网关的设置

问题描述 投票:0回答:1

因此,我们有3个不同的账户(EDGE, PROD, DEV),我想在EDGE账户中创建一些API,并分别与DEV和PROD账户中的lambdas集成。我想在EDGE账户中创建一些API,并分别与DEV和PROD账户中的LAMBDA集成。我有2个不同的API阶段:devprod,也定义了API的集成:LAMBDA,target = ${stageVariables.LAMBDA}.当我在stage变量中提到LAMBDA的完整ARN时,在api命中后显示以下错误。

{
"message": "1 validation error detected: Value \'arn:aws:lambda:ap-south-1:XXEDGEACCOUNTXX:function:arn:aws:lambda:ap-south-1:XXDEVACCOUNTXX:function:funcName\' at \'functionName\' failed to satisfy constraint: Member must satisfy regular expression pattern: (arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\\d{1}:)?(\\d{12}:)?(function:)?([a-zA-Z0-9-_\\.]+)(:(\\$LATEST|[a-zA-Z0-9-_]+))?"
}

target = arn:aws:lambda:ap-south-1:${stageVariables.ACC}:function:${stageVariables.LAMBDA}/invocations

我在保存时得到无效函数ARN或URI的错误。

请帮助我。PS.权限策略是完全正常的附件。问题是API网关只在自己的账户中检查Lambda,这就是为什么只读取函数名称,并保持固定的账号。

amazon-web-services aws-lambda aws-api-gateway api-gateway
1个回答
0
投票

下面的语句有一个错误

target = arn:aws:lambda:ap-south-1:${stageVariables.ACC}:function:${stageVariables.LAMBDA}/invocations

${stageVariables.LAMBDA}。 在上面的语句中,被解析为lambda函数arn。因此出现了一个验证错误。

arn:aws:lambda:ap-south-1:XXEDGEACCOUNTXX:function:arn:aws:lambda:ap-south-1:XXDEVACCOUNTXX:function:funcName

另外,注意到你的目标 arn 不正确,应该是下面的形式。

一个阶段性变量可以用来代替Lambda函数名,或者versionalias,如下面的例子所示。

arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/arn:aws:lambda:<region>:<account_id>:function:${stageVariables.<function_variable_name>}/invocations

arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/arn:aws:lambda:<region>:<account_id>:function:<function_name>:${stageVariables.<version_variable_name>}/invocations

更多信息可以通过以下链接了解

https:/docs.aws.amazon.comapigatewaylatestdeveloperguideaws-api-gateway-stage-variables-reference.html。

© www.soinside.com 2019 - 2024. All rights reserved.