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

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

最近我一直在使用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/

相关文章:

javascript - 解析 DynamoDB 请求

amazon-web-services - 将域分配给 RDS 实例是个坏主意?

python-2.7 - 获取使用云形成模板创建的EC2实例信息

python - 使用 PyOpenGL 渲染带纹理的矩形

python - 使用 `format` 获取字符串的最后一个字符

amazon-web-services - 从 AWS 迁移 : dynamoDB+API gateway to Google: DataStore +?

python - 在Python中将S3数据并行/异步下载到EC2中?

python - python能够在多核上运行吗?

python - 从深度图计算视野

MySQL 服务器负载非常高