【问题标题】:How to create custom construct library for aws-cdk in python如何在 python 中为 aws-cdk 创建自定义构造库
【发布时间】:2020-05-16 01:43:41
【问题描述】:

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

但是,如果我想在 python(不使用 JSII)中创建我的 自定义 EC2 库,那么将使用 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
                                )

任何帮助开发人员如何做?

【问题讨论】:

    标签: python amazon-web-services amazon-ec2 aws-cdk


    【解决方案1】:

    要创建一个构造,您只需创建一个继承自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 的好处是它也可以在其他语言中使用,这将提高可重用性。

    【讨论】:

      猜你喜欢
      • 2020-05-20
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 2020-12-16
      • 2020-03-13
      • 2023-02-04
      • 2020-06-06
      • 1970-01-01
      相关资源
      最近更新 更多