!加入无服务器框架已损坏
!Join in Serverless Framework is broken
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 上午
问题确实出在标签上。一切都可以在问题上看到。 TLDR;使用完整的函数名称(例如 'Fn::Join')。
不过,我几乎可以肯定 shorthand 可以工作,只是需要先满足一些条件。我不会调查,因为原始问题的有效解决方案已经实现,其他任何问题都超出了范围。
-- 原创
在 Ryan 和我自己来回交流之后。 Ryan 使用了涉及 !Sub
和 serverless-cloudformation-sub-variables
插件的替代解决方案,可以查看 here.
简而言之,问题可能在于涉及标签的依赖项未正确解析(很可能是由于配置错误。仍在调查中,如果原始解决方案可以通过其他插件解决,将会更新)。
以下插件抽象了 !Sub
的使用,从而解决了问题,
serverless-cloudformation-sub-variables
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 上午 问题确实出在标签上。一切都可以在问题上看到。 TLDR;使用完整的函数名称(例如 'Fn::Join')。
不过,我几乎可以肯定 shorthand 可以工作,只是需要先满足一些条件。我不会调查,因为原始问题的有效解决方案已经实现,其他任何问题都超出了范围。
-- 原创
在 Ryan 和我自己来回交流之后。 Ryan 使用了涉及 !Sub
和 serverless-cloudformation-sub-variables
插件的替代解决方案,可以查看 here.
简而言之,问题可能在于涉及标签的依赖项未正确解析(很可能是由于配置错误。仍在调查中,如果原始解决方案可以通过其他插件解决,将会更新)。
以下插件抽象了 !Sub
的使用,从而解决了问题,
serverless-cloudformation-sub-variables