无服务器框架 - 变量解析错误

ben*_*siu 12 yaml amazon-web-services serverless-framework

我有 serverless.yaml 脚本,用于在更新到较新版本的 SLS (2.72.0) 之前 - 接下来工作,我开始收到警告:

Cannot resolve serverless.yaml: Variables resolution errored with:
  - Cannot resolve variable at "custom.S3_BUCKET_NAME": Value not found at "self" source
Run Code Online (Sandbox Code Playgroud)

我的自定义部分如下所示:

custom:
  S3_BUCKET_NAME: ${self:service}-data-${opt:stage, self:provider.stage}
  s3Sync:
    - bucketName: ${self:custom.S3_BUCKET_NAME}-website
      localDir: ./dist
      deleteRemoved: true
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个警告?

Pro*_*1ve 11

变量解析有细微的变化,在您的情况下,解决它的最佳方法是使用以下语法:

custom:
  S3_BUCKET_NAME: ${self:service}-data-${sls:stage}
  s3Sync:
    - bucketName: ${self:custom.S3_BUCKET_NAME}-website
      localDir: ./dist
      deleteRemoved: true
Run Code Online (Sandbox Code Playgroud)

用于解决阶段。或者,您可以使用旧语法,但为阶段提供显式后备值:

custom:
  S3_BUCKET_NAME: ${self:service}-data-${opt:stage, self:provider.stage, 'dev'}
  s3Sync:
    - bucketName: ${self:custom.S3_BUCKET_NAME}-website
      localDir: ./dist
      deleteRemoved: true
Run Code Online (Sandbox Code Playgroud)

我建议使用sls:stage版本。


小智 5

改变你编写舞台的方式:

self:provider.stage
Run Code Online (Sandbox Code Playgroud)

到:

${sls:stage}
Run Code Online (Sandbox Code Playgroud)

应该做作业!

您可以在以下位置找到更新的文档: https: //www.serverless.com/framework/docs/providers/aws/guide/variables或运行serverless print以获取问题的更详细响应。