2

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

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

4

2 回答 2

3

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

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

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

于 2019-10-05T18:11:29.407 回答
2

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

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

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

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

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

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

于 2019-07-23T17:24:10.900 回答