AWS CDK使用语言扩展(如Python中的装饰器)将构造函数与类相关联,从而“知道”哪些构造已在类中创建。具体来说,可以使用@aws_cdk.core.Construct定义类并使用实例变量将构造添加到类中。例如,以下代码定义了一个类MyStack,并将两个构造函数添加到其中:
from aws_cdk import (
core,
aws_s3 as s3,
)
class MyStack(core.Stack):
def __init__(self, scope: core.Construct, id: str, **kwargs) -> None:
super().__init__(scope, id, **kwargs)
# create a bucket
self.bucket = s3.Bucket(self, "Bucket1")
# create another bucket
self.another_bucket = s3.Bucket(self, "Bucket2")
在这个例子中,MyStack类继承自aws_cdk.core.Stack,它是AWS CDK的根类。在类的构造函数中,使用实例变量self.bucket和self.another_bucket来将两个s3.Bucket构造函数添加到类中。AWS CDK会自动跟踪这些构造函数,以便在部署堆栈时正确处理它们。
此外,MyStack类本身也被视为构造函数,因为它继承自aws_cdk.core.Stack。因此,在使用此类时,必须将其传递给其他构造函数,以便它们可以链接到正确的AWS CDK堆栈。例如,可以使用以下代码创建一个应用程序,并将MyStack添加到它中:
from aws_cdk import core
app = core.App()
MyStack(app, "MyStack")
app.synth()
在这个例子中,MyStack被实例化并附加到App对象中,然后使用app.synth()方法将堆栈部署到AWS中。