繁体   English   中英

如何在 python 中为 aws-cdk 创建自定义构造库

[英]How to create custom construct library for aws-cdk in python

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

但是如果我想在 python 中创建我的自定义 EC2 库(不使用 JSII)而不是使用 aws_cdk 的 aws_ec2 库来实际创建 EC2 实例和 VPC。

自定义库将接受诸如Instance Name(String) , InstanceType(String) , MachineImage(String) , Subnet Type (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 的好处是它也可以在其他语言中使用,这将提高可重用性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM