最近我一直在使用aws-cdk创建EC2、VPC和S3服务。
但是,如果我想在 python 中创建自定义 EC2 库(不使用 JSII),则将使用 aws_cdk 的 aws_ec2 库来实际创建 EC2 实例和 VPC。
自定义库将接受诸如 Instance Name(String) 、 InstanceType(String) 、 MachineImage(String) 、 等参数子网类型(字符串)
这个参数将像下面这样引用:
免责声明:下面的代码可能不正确
dummy_ec2 = ec2.Instance(self, <InstanceName>,
vpc=<Created_VPC>,
instance_type=ec2.InstanceType(<InstanceType>),
machine_image=ec2.AmazonLinuxImage(
generation=ec2.AmazonLinuxGeneration.AMAZON_LINUX,
edition=ec2.AmazonLinuxEdition.STANDARD,
virtualization=ec2.AmazonLinuxVirt.HVM,
storage=ec2.AmazonLinuxStorage.GENERAL_PURPOSE
),
key_name="demo-key",
vpc_subnets=ec2.SubnetSelection(subnet_type=<subnet_type>),
role=self.my_role
)
有什么帮助开发人员如何做吗?
最佳答案
要创建构造,您只需创建一个继承自 aws_cdk.core.Construct
的类,下面是一个示例:
class InstanceWithVPC(aws_cdk.core.Construct):
def __init__(self, scope: aws_cdk.core.Construct, id: str, *, instanceType, subnet_type, role, key, **kwargs):
super().__init__(scope, id)
self.vpc = ec2.Vpc(...)
self.instance = ec2.Instance(self, id,
vpc=self.vpc,
instance_type=ec2.InstanceType(instanceType),
machine_image=ec2.AmazonLinuxImage(
generation=ec2.AmazonLinuxGeneration.AMAZON_LINUX,
edition=ec2.AmazonLinuxEdition.STANDARD,
virtualization=ec2.AmazonLinuxVirt.HVM,
storage=ec2.AmazonLinuxStorage.GENERAL_PURPOSE
),
key_name=key,
vpc_subnets=ec2.SubnetSelection(subnet_type),
role=role
)
当然请记住,这只能在 Python 中使用,使用 Typescript 的好处是它也可以在其他语言中使用,从而提高可重用性。
关于python - 如何在 python 中为 aws-cdk 创建自定义构造库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59986081/