AWS Amplify cloudformation parameter.json 如何工作



我最近开始使用 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.jsonteam-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 内部工作原理的更多信息 放大使用情况和放大架构

最新更新