AWS Amplify cloudformation parameter.json 如何工作?

Posted

技术标签:

【中文标题】AWS Amplify cloudformation parameter.json 如何工作?【英文标题】:How does AWS Amplify cloudformation parameter.json work? 【发布时间】:2019-12-30 15:53:33 【问题描述】:

我最近开始使用 AWS Amplify,并且有使用 vanilla cloudformation 的经验。除了parameters.json 部分之外,大部分内容都是有意义的。

似乎 Amplify 会为我们使用的资源生成 cloudformation 模板,但它也会生成一个 parameters.json 文件,我认为它相当于 cloudformation 的 Parameters 部分,但似乎不是。

在 Amplify parameters.json 中,内容就在 object 上,带有键值对。而在 cloudformation 中,参数具有定义的语法,如 in the docs 所述。

同样在parameters.json 中,它似乎能够以与cloudformation 模板相同的方式进行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 repo 搜索,但找不到。

【问题讨论】:

天哪,好问题。抱歉,这是一个自以为是的非答案,但我很想看到这个答案。如何使用和修改 Amplify 创建的 CFN 资源在我看来是这个产品的一个巨大差距,好像没有人考虑到开发者可能会改变主意或犯错误。 @Khon 你找到答案了吗?我也对这个话题感兴趣。 【参考方案1】:

有点晚,但可能仍然有用。您在这里有几个问题:

有人知道它使用的是哪个 AuthRoleName 文件吗?根据我在文档中阅读的内容,amplify-meta.json 和 team-provider-info.json 都是自动生成的。

是的,两者都是自动生成的。主要区别在于 team-provider-info.json 包含所有放大环境的参数(假设您有多个环境并且此文件在团队成员之间共享),而 amplify-meta.json 仅包含与当前相关的信息检查环境。简而言之,amplify-meta.json 中的值就是当前使用的值。

AWS Amplify cloudformation parameter.json 如何工作?

放大的工作方式是为每个功能/api网关/存储元素创建一个cloudformation模板(这是放大类别的部分列表),每个迷你模板都有自己的parameters.json文件(你提到的那个) .然后 amplify 会将所有这些文件合并到 amplify/backend/awscloudformation/nested-cloudformation-stack.yml 下的单个模板中(这是一个 json 文件!)。该文件将在每个模板上传到您的部署 S3 存储桶时引用它们(可以在 amplify-meta.json 中找到)以及内联包含的 parameters.json 文件的内容。

更多关于这些嵌套模板的信息可以在AWS Cloudformation User Guide找到 更多关于 Amplify CLI 内部工作的信息可以在Amplify Usage和Amplify Architecture找到

【讨论】:

以上是关于AWS Amplify cloudformation parameter.json 如何工作?的主要内容,如果未能解决你的问题,请参考以下文章

AWS Amplify and React - 找不到模块:无法解析“@aws-amplify/analytics”

使用 Amplify 集成构建 AWS Amplify React 应用程序时总是缺少 aws-exports.js

Android-Amplify:使用 Amplify 向/从 AWS S3 上传/下载文件

如何将 AWS Amplify 控制台中的现有应用程序与 AWS Amplify CLI 连接?

aws-amplify-react Connect 首先返回未定义的数据

使用 Auth0 进行 aws-amplify