如何在python中为awscdk创建自定义构造库

2024-06-15 09:37:58 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我一直在使用aws cdk创建EC2、VPC和S3服务

但是,如果我想用python(不使用JSII)创建我的定制EC2库,那么将使用aws_cdk的aws_EC2库来实际创建EC2实例和VPC

自定义库将接受诸如实例名称(字符串)实例类型(字符串)机器图像(字符串)子网类型(字符串)

此参数将如下所示:

免责声明:下面的代码可能不正确

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
                                )

有什么帮助吗


Tags: 实例key字符串selfaws类型typeec2
1条回答
网友
1楼 · 发布于 2024-06-15 09:37:58

要创建构造,只需创建一个从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的好处是它也可以在其他语言中使用,这将使其更易于重用

相关问题 更多 >