因此,我们有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,这就是为什么只读取函数名称,并保持固定的账号。
下面的语句有一个错误
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
更多信息可以通过以下链接了解