我最近开始使用 AWS Amplify,并且有使用香草云形成的经验。除了parameters.json
部分外,大部分都是有意义的。
似乎Amplify为我们使用的资源生成了cloudformation模板,但它也生成了一个parameters.json
文件,我认为这相当于cloudformation的Parameters
部分,但似乎并非如此。
在 Amplifyparameters.json
中,内容只是与键值对object
。而在 cloudformation 中,参数具有已定义的语法,如文档中所述。
同样在parameters.json
,它似乎能够以与云形成模板相同的方式进行Ref
调用。有谁知道什么是解析parameters.json
文件并用实际值替换Ref
?
例如,在storage
类别中,parameters.json
文件具有这样的键
"authRoleName": {
"Ref": "AuthRoleName"
},
AuthRoleName
似乎在backend
目录下的amplify-meta.json
中定义,但它也在amplify
目录下的team-provider-info.json
中定义。
有谁知道它使用的是哪个AuthRoleName
文件?从我在文档中读到的内容来看,amplify-meta.json
和team-provider-info.json
都是自动生成的。
出现了很多这些问题,因为我很好奇是否可以在 cloudformation UI 中手动执行 CF 中自动生成的 CF 模板。当我尝试复制"参数"部分和"元数据"部分时,语法无效。
这让我认为 Amplify 正在使用它自己的解析器来生成一个最终的 CF 模板并在 CF 中执行它。 我尝试搜索 cli 存储库,但找不到它。
有点晚了,但可能仍然有用。您在这里有几个问题:
有谁知道它使用的是哪个AuthRoleName文件?根据我在文档中读到的内容,amplify-meta.json 和 team-provider-info.json 都是自动生成的。
是的,两者都是自动生成的。主要区别在于team-provider-info.json包含所有扩增环境的参数(假设您有更多这样的参数,并且此文件在团队成员之间共享),而amplify-meta.json仅包含与当前签出环境相关的信息。简而言之,amplify-meta.json 中的值是当前使用的值。
AWS Amplify cloudformation parameter.json 如何工作?
Amplify 的工作方式是为每个函数/API 网关/存储元素创建一个 cloudformation 模板(这是 Amplify 类别的部分列表),每个迷你模板都有自己的 parameters.json 文件(您提到的那个)。然后 amplify 会将所有这些文件合并到一个模板中,在 amplify/backend/awscloudformation/nested-cloudformation-stack.yml(这是一个 json 文件!)下。当每个模板上传到您的部署 S3 存储桶(可在 amplify-meta.json 中找到)以及内联包含的 parameters.json 文件的内容时,此文件将包含对每个模板的引用。
- 有关这些嵌套模板的更多信息,请参阅 AWS Cloudformation 用户指南
- 可以找到有关 Amplify CLI 内部工作原理的更多信息 放大使用情况和放大架构