RetrieveAllSubscribersLambdaPermissionApiGateway:
Type: 'AWS::Lambda::Permission'
Properties:
FunctionName: { "Fn::GetAtt": [ RetrieveAllSubscribersLambdaFunction, Arn ] }
Action: lambda:InvokeFunction
Principal: apigateway.amazonaws.com
SourceArn:
!Join
- "/"
- - 'arn:aws:execute-api:us-west-2:12345'
- - 'other stuff'
我有这个代码块,我尝试为这个块获得一个
sourceArn
。我意识到本示例中的 sourceArn 无效,但从 Serverless 中查看的输出也是无效的。
An error occurred: RetrieveAllSubscribersLambdaPermissionApiGateway - 1 validation error detected: Value 'arn:aws:execute-api:us-west-2:12345/aws/:execute-api:/us-west-2/:/12345/:/a5dghhjk9//*/*' at 'sourceArn' failed to satisfy constraint: Member must satisfy regular expression pattern: arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\-])+:([a-z]{2}((-gov)|(-iso(b?)))?-[a-z]+-\d{1})?:(\d{12})?:(.*) (Service: AWSLambda; Status Code: 400; Error Code: ValidationException; Request ID: a8db5326-dcdd-4abc-b4ae-e4fa5c03c6bd; Proxy: null).
-- 更新2022/01/16 12:49 问题确实出在标签上。一切都可以从这个问题上看出来。太长了;使用完整的函数名称(例如“Fn::Join”)。
但是,我几乎可以肯定速记可以起作用,只是需要首先满足一些条件。我不会调查,因为原始问题的工作解决方案已经实现,其他任何内容都超出了范围。
-- 原创 在瑞安和我之间反复讨论之后。 Ryan 使用了另一种解决方案,涉及
!Sub
和 serverless-cloudformation-sub-variables
插件,可以在此处查看。
简而言之,问题可能在于涉及标签的依赖关系未正确解决(很可能是由于配置错误。仍在调查并将更新是否可以使用其他插件解决原始解决方案)。
以下插件抽象了
!Sub
的使用,从而解决了问题,
serverless-cloudformation-子变量