【问题标题】:Convert CloudFormation template (yaml) to cdk python code将 CloudFormation 模板 (yaml) 转换为 cdk python 代码
【发布时间】:2019-10-06 02:11:29
【问题描述】:

我有这个可以按预期工作的模板。有没有办法把它转换成cdk python代码?

https://github.com/shantanuo/cloudformation/blob/master/updated/api-to-sns-cf%20(1).yml

【问题讨论】:

标签: amazon-cloudformation aws-cdk


【解决方案1】:

使用低级资源并没有错,因为它是一个有用的构建块。是的,有高级构造,但就像软件中的其他所有内容一样,有时您必须更深入地挖掘。遗憾的是,这种态度仍在继续,因为对于我们中的一些人来说,他们已经花费了数年时间构建了一个不错的 CloudFormation 模板集合,不鼓励使用 CDK。

是的,这存在一些问题,主要是因为一些糟糕的架构决策以及希望专注于新功能而不是构建功能层的愿望,但这是可能的,您不应该劝阻您将模板转换为低级构造,然后根据您的用例需要重构为高级构造。

也就是说,我不会使用任何类型的自动工具来进行这种转换。您实际上不会了解正在发生的事情,而且您很可能会遇到不知道如何处理的问题。深入挖掘,逐行转换,然后享受结果。

【讨论】:

  • 我想知道 CDK 是否更早出现,而 Cloudformation 只是有效负载,是否有人需要花费数年时间来构建 Cfn 模板的集合。我想如果你的目标是真正理解所有低级组件,如果手动完成并转换为低级结构是有意义的,但对我来说,我更愿意直接跳到高级结构并继续发货,再也不用看 yaml 了。
  • 完全同意自动化工具肯定很糟糕,并且会生成最小公分母且缺乏语义意义的冗长结构。
【解决方案2】:

您无法将 CloudFormation 模板转换为 CDK 代码。这样做也没有任何意义。有点像要求将程序集或 C 转换为 Python。

在对流层的情况下,这是有道理的,因为对流层与 CloudFormation 具有 1:1 的关系。 CDK 应该是更高级别的,很像 Python 与 Assembly 或 C 的关系。CDK 确实有 CfnResource 类,它们会直接转换为 CloudFormation,但这只是必要的底层,而不是 CDK 应该如何使用.如果你想这样做,最好使用对流层。

听起来在过渡期间能够做到这一点是有道理的,但在我看来,这比它的价值更麻烦。无论如何,目前没有什么可以做的。

编辑:对于 Typescript,有 cdk-dasm。它只是 Typescript,它将 CloudFormation 转换为 Cfn 资源。从该页面引用:

一般来说,在使用 AWS CDK 时,这不是推荐的方法,但有些人可能会发现这对于开始或迁移现有模板很有用。

使用此方法意味着您将不得不使用低级资源(例如 s3.CfnBucket 而不是 s3.Bucket)。这意味着您会失去 CDK 的大部分价值,这会抽象出使用 AWS 资源所需的大部分样板和粘合逻辑。

【讨论】:

    猜你喜欢
    • 2019-09-23
    • 1970-01-01
    • 2021-01-10
    • 2021-08-30
    • 2021-10-30
    • 2018-04-14
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    相关资源
    最近更新 更多