将 CloudFormation 模板 (yaml) 转换为 cdk python 代码

Convert CloudFormation template (yaml) to cdk python code

我有这个模板,可以按预期工作。有什么方法可以将其转换为 cdk python 代码吗?

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

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

在 Troposphere 的情况下,这是有道理的,因为 Troposphere 与 CloudFormation 有 1:1 关系。 CDK 应该是更高级别的,很像 Python 与 Assembly 或 C 的关系。CDK 确实有 CfnResource 类,它确实直接转换为 CloudFormation,但这只是必要的底层,这不是应该使用 CDK 的方式。如果你想走那条路,你最好使用 Troposphere。

在过渡期间执行此操作听起来似乎很有意义,但在我看来,这样做麻烦多于它的价值。无论如何,目前没有任何东西可以做到这一点。

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

Generally, this is not a recommended approach when using the AWS CDK, but some people may find this useful as a means to get started or migrate an existing template.

Using this method means that you will have to use the low-level resources (e.g. s3.CfnBucket instead of s3.Bucket). This means that you lose a substantial portion of the value of the CDK, which abstracts away much of the boilerplate and glue logic required to work with AWS resources.

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

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

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