You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不修改所有资源文件结构的情况下启用AWS::LanguageExtensions?

问题:在不修改所有资源文件结构的前提下启用AWS::LanguageExtensions?

因需使用Fn::ToJsonString,必须启用AWS::LanguageExtensions。当前项目结构如下:

serverless.yml

resources: ${file(./src/resources.yml)}

src/resources.yml

- ${file(./src/resources/resources1.yml)}
- ${file(./src/resources/resources2.yml)}
# ...

单个资源文件示例(src/resources/resources1.yml):

Resources:
    MyResource1:
        Type: AWS::IAM::Role
        Properties:
        # ...

启用AWS::LanguageExtensions的标准配置格式为:

# serverless.yml
resources: 
    Transform: AWS::LanguageExtensions
    Resources:
        MyResource1:
            Type: AWS::IAM::Role
            Properties:
                # ...

我尝试修改src/resources.yml为以下内容:

# src/resources.yml
Transform: AWS::LanguageExtensions
Resources:
    - ${file(./src/resources/resources1.yml)}
    - ${file(./src/resources/resources2.yml)}
    # ...

但触发错误:

Transform AWS::LanguageExtensions failed with: Error parsing the template

看起来resources.Resources下不能使用资源数组。随后我又尝试:

# src/resources.yml
Transform: AWS::LanguageExtensions
Resources:
    ${file(./src/resources/resources1.yml)}
    ${file(./src/resources/resources2.yml)}
    # ...

同样报错:

Cannot resolve variable at "resources.Resources": String value consist of variable which resolve with non-string value

请问是否可以在不修改所有资源文件结构的前提下启用AWS::LanguageExtensions?


可以实现,无需修改现有资源文件的结构,只需调整src/resources.yml的写法,利用Serverless Framework的变量引用特性直接提取每个资源文件内的Resources对象:

修改后的src/resources.yml:

Transform: AWS::LanguageExtensions
Resources:
  ${file(./src/resources/resources1.yml):Resources}
  ${file(./src/resources/resources2.yml):Resources}
  # 其他资源文件按此格式依次添加

原理是通过:Resources后缀,直接引用每个资源文件中定义的Resources键值对,而非引入整个文件。这样所有资源会被合并到顶层Resources下,既符合CloudFormation模板对Resources格式的要求(必须是键值对而非数组),又能保留原有资源文件的结构,同时成功启用AWS::LanguageExtensions。

内容的提问来源于stack exchange,提问作者fstaine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:05:24