Yun*_*Zou 22 amazon-web-services aws-cloudformation aws-cdk
我是 CDK 的新手,对构造和堆栈之间的区别感到困惑。使用 CDK,我们可以定义可重用的云组件(称为 Construct),并且可以进一步将它们组合成堆栈或应用程序。请参阅下面来自 AWS 网站的图表,
但是,我见过通过扩展 Construct 基类创建构造的类,以及通过扩展 Stack 基类创建 Stack 的类。稍后可以使用这两个子类来创建主堆栈。例如,请参阅下面的代码,我可以创建一个名为 HitCounter 类的 Construct 或 Stack,该类创建相同的资源集并在主 Stack 中以相同的方式使用它们。那么使用 Stack 或 Construct 有什么区别呢?
import * as cdk from '@aws-cdk/core';
export class HitCounterConstruct extends cdk.Construct {} // imagine this construct creates a bunch of related resources
export class HitCounterStack extends cdk.Stack {} // imagine this stack creates the same resources as the construct class above
// In main stack file App.ts
new HitCounterConstruct(cdk.App, "construct");
new HitCounterStack(cdk.App, "stack");
Run Code Online (Sandbox Code Playgroud)
如果我在代码中犯了任何错误,请纠正我。提前致谢 :)
Mik*_* P. 22
Stack在CDK术语中代表CF模板。而Construct代表您要创建的AWS资源,例如Lambda函数,S3存储桶,Api网关等。
\n或者如果你愿意,Stack是你的文本文件,当我们用yaml或json编写CF模板时,Constructs是在这个文件中定义的资源。
\n在您的情况下,如果您尝试HitCounterStack在没有任何构造的情况下进行部署,它将是一个没有资源的空 cf 模板。
要通过 CDK 渲染 CF 模板,需要遵循以下结构:\nStack -> 构造,如 file->resources,但在其之上还应该定义App它也扩展基类Construct,因此 CDK 代码的最终正确模式应该是:
应用程序 -> 堆栈 -> 构造。
\n还需要知道Constructs用3个级别来表示。并且只有第一级Construct一对一映射到 AWS 资源。一对一表示Construct代表单个 AWS 资源。第一级名称以CfnConstruct开头。
但第二级和第三级Constructs更高。因此,当您在 CDK 模板中定义第二级构造时,将创建几个AWS 资源,当您定义第 3 级构造 \xe2\x80\x93 时,将创建更多资源。
这是针对抽象例行程序的。例如创建S3存储桶网站、Lambda应用程序等。
\n| 归档时间: |
|
| 查看次数: |
12090 次 |
| 最近记录: |