!加入 Serverless 框架已损坏

问题描述 投票:0回答:1
  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).
amazon-web-services aws-lambda serverless serverless-framework
1个回答
1
投票

-- 更新2022/01/16 12:49 问题确实出在标签上。一切都可以从这个问题上看出来。太长了;使用完整的函数名称(例如“Fn::Join”)。

但是,我几乎可以肯定速记可以起作用,只是需要首先满足一些条件。我不会调查,因为原始问题的工作解决方案已经实现,其他任何内容都超出了范围。

-- 原创 在瑞安和我之间反复讨论之后。 Ryan 使用了另一种解决方案,涉及

!Sub
serverless-cloudformation-sub-variables
插件,可以在此处查看。

简而言之,问题可能在于涉及标签的依赖关系未正确解决(很可能是由于配置错误。仍在调查并将更新是否可以使用其他插件解决原始解决方案)。

以下插件抽象了

!Sub
的使用,从而解决了问题, serverless-cloudformation-子变量

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