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.json
和 team-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 连接?