【问题标题】:Serverless error - The CloudFormation template is invalid - during deployment无服务器错误 - CloudFormation 模板无效 - 部署期间
【发布时间】:2021-12-21 00:14:52
【问题描述】:

使用 serverless 部署 lambdas 时,出现以下错误:

CloudFormation 模板无效:模板格式错误:输出 ServerlessDeploymentBucketName 格式错误。必须指定每个导出成员的名称字段,并且只能由字母数字字符、冒号或连字符组成。

我不明白问题出在哪里。

无服务器配置文件:

service: lambdas-${opt:region}

frameworkVersion: '2'

provider:
  name: aws
  runtime: nodejs12.x
  memorySize: 512
  timeout: 10
  lambdaHashingVersion: 20201221
  region: ${opt:region}
  stackName: lambdas-${opt:region}
  logRetentionInDays: 14
  deploymentBucket:
    name: lambdas-${opt:region}

plugins:
  - serverless-deployment-bucket

functions:
  function1:
    handler: function1/index.handler
    name: function1-${opt:stage}
    description: This function should call specific API on Backend server
    events:
      - schedule: cron(0 0 * * ? *)
    environment:
      ENV: ${opt:stage}
  function2:
    handler: function2/index.handler
    name: function2-${opt:stage}
    description: Function should be triggered by invocation from backend.
    environment:
      ENV: ${opt:stage}

【问题讨论】:

    标签: javascript node.js serverless-framework serverless aws-serverless


    【解决方案1】:

    您的艺名很可能包含非法字符。 Serverless 会根据您的阶段名称为您的 s3 存储桶自动生成一个名称。如果您查看生成的模板文件,您将看到完整的导出,如下所示:

    "ServerlessDeploymentBucketName": {
        "Value": "api-deployment",
        "Export": {
          "Name": "sls-api_stage-ServerlessDeploymentBucketName"
        }
      }
    

    解决此问题的方法(假设您不想更改舞台名称)是通过在无服务器配置中添加类似这样的内容来显式设置输出(在这种情况下,非法字符是下划线)

    resources: {
          Outputs: {
              ServerlessDeploymentBucketName: {
                  Export: {
                      Name: `sls-${stageKey.replace('api_', 'api-')}-ServerlessDeploymentBucketName`
                  }
              }
          }
      }
    

    不幸的是,每次导出都必须这样做...更新您的舞台名称以不包含非法字符是一个更好的选择

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题。

      在serverless.yml 中,我将 service 更改为 lambda_function 并将其作为 lambdaFunction

      错误已解决并正确部署。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-05
        • 2020-08-30
        • 2019-01-02
        • 1970-01-01
        • 2021-11-05
        • 2021-05-12
        • 1970-01-01
        • 2019-03-24
        相关资源
        最近更新 更多