在无服务器框架中的多个文件中声明资源

Declaring resources in multiple files in Serverless framework

有没有办法把serverless框架中的资源定义拆分成多个文件?类似于:

resources:
  - ${resources/base.yml}
  - ${resources/foo.yml}

我一直在尝试多种组合,但我总是收到有关未找到引用的错误。

请注意,resources 属性 必须是包含 Resources 属性 的对象, 不是 数组资源,例如您在代码段中想要的资源。

因此,要使用外部文件引用,您可以执行类似...

resources
    Resources:
        UsersTable: ${file(../resources/base.yml):UsersTable}
        FooTable: ${file(../resources/foo.yml):FooTable}

参考:Reference variables in other files

尽管 dashmug 的答案是正确的,但我发现我尝试使其工作的方式也非常接近有效的解决方案。如 this github comment 中所述,可以在资源部分引用其他文件:

resources:
   - ${file(resources/first-cf-resources.yml)}
   - ${file(resources/second-cf-resources.yml)}

前提是每个文件都定义了自己的 "Resources" 键,例如:

---
Resources:
  MyCFResource:
    Type:.....

我没有做到的是采用混合方法,例如:

resources:
  - ${file(resources/first-cf-resources.yml)}
  - ${file(resources/second-cf-resources.yml)}
  SomeResource:
    Type: ...

所以我只有一个 resources/base.yml 来代替。

我无法发表评论,但我想扩展 Jesuspc 的回答。

有一种方法可以实现 'mixed' 方法,在 serverless.yml:

resources:
  - ${file(resources/first-cf-resources.yml)}
  - ${file(resources/second-cf-resources.yml)}
  - Resources:
      SomeResource:
        Type: ...

在这种情况下,文件 first-cf-resources.ymlsecond-cf-resources.yml 必须具有下一个结构:

Resources:
  SomeResourceA:
    ...
  AnotherResourceB:
    ...