所以场景是我们有3个不同的帐户(EDGE,PROD,DEV)。我想在EDGE account中创建一些API,并将它们分别与DEV和PROD Account中的lambdas集成。我有两个不同的API阶段: dev/prod,还定义了目标为${stageVariables.LAMBDA}的API : LAMBDA的集成。当我在阶段变量中提到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,这就是为什么只读函数名并保持帐号固定的原因。
发布于 2020-05-04 13:47:12
以下语句中有一个错误
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函数名称或版本/别名,如以下示例所示。
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://stackoverflow.com/questions/61581901
复制相似问题