无服务器:您的 serverless.yml 的键值无效:"Ref"

Serverless: Your serverless.yml has an invalid value with key: "Ref"

使用以下命令安装无服务器时 sls plugin install -n serverless-alexa-skills --stage dev

我收到类似 Your serverless.yml has an invalid value with key: "Ref"

的错误

下面是我的示例serverless.yml文件

plugins:
- serverless-webpack
- serverless-s3-sync
- serverless-plugin-git-variables
- serverless-alexa-skills

functions: ${file(./deploy/${opt:stage}.yml):functions}
resources: ${file(./deploy/${opt:stage}.yml):resources}
custom: ${file(./deploy/${opt:stage}.yml):custom}

outputs:
DialogflowFunctionArn:
Value:
  Ref: 

这里有问题。有人可以帮我吗。

Ref is a Cloudformation intrinsic function。它需要引用一个资源。整个 outputs 部分也是可选的,仅当您需要在另一个堆栈中引用资源时才使用它。

它基本上是说 Ref: 需要一个值。您已定义它但未为其分配任何值。如果没有用,那么你应该从你的代码中删除这部分:

outputs:
DialogflowFunctionArn:
Value:
  Ref:

Ref 期望引用某些内容,现在您没有将任何内容传递给引用。

因此,假设您需要 DialogflowFunction 的 ARN,并且该函数配置在您的函数文件中如下所示:

DialogflowFunction:
  description: get the flow
  handler: src/functions/dialog-controller.flow
  events:
    - http:
        path: '/dialog/flow'
        method: get
        cors: true

然后你的参考看起来像这样:

outputs:
DialogflowFunctionArn:
Value:
  Ref: DialogflowFunction

Ref 采用您要引用的资源的逻辑 ID,在本例中为 DialogflowFunction,并将 return 该资源的 ARN。