【问题标题】:How to create Elastic IP association with an EC2 instance using AWS CDK?如何使用 AWS CDK 创建与 EC2 实例的弹性 IP 关联?
【发布时间】:2021-02-12 17:49:08
【问题描述】:

在 AWS CDK 中,我创建了一个 EC2 实例和弹性 IP,如下所示:

    // EC2 Instance
    let ec2Instance = new ec2.Instance(this, "EC2Instance", {
        instanceType: ec2.InstanceType.of(InstanceClass.T2, InstanceSize.MICRO),
        vpc: vpc,
        securityGroup: securityGroupEc2,
        keyName: Config.keyPairName,
        machineImage: new ec2.GenericLinuxImage({"eu-west-1": Config.ec2ImageAmi}),
        blockDevices: [{deviceName: "/dev/sda1", volume: ec2.BlockDeviceVolume.ebs(30)}]
    });

    // Elastic IP
    let eip = new ec2.CfnEIP(this, "Ip");

我很难理解如何声明它们之间的关联,因为我无法使用AWS CDK documentation 来理解如何声明它。似乎我需要AWS::EC2::EIPAssociation.EIP: string 来提供,我不知道如何从eip 对象中获取它。

【问题讨论】:

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


    【解决方案1】:

    解释的不是很好,但是解决方法是:

        // EC2 Instance <> EIP
        let ec2Assoc = new ec2.CfnEIPAssociation(this, "Ec2Association", {
            eip: eip.ref,
            instanceId: ec2Instance.instanceId
        });
    

    【讨论】:

      【解决方案2】:

      对于Cfn* CDK 资源,我发现 CloudFormation 文档比 CDK API 提供更多信息。

      CloudFormation docs for AWS::EC2::EIP 表明在创建EIP 时可以使用instanceId 属性,我认为这应该避免单独创建CfnEIPAssociation 的需要。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-23
        • 2017-01-12
        • 1970-01-01
        • 2020-02-07
        • 2015-06-19
        • 2018-09-14
        相关资源
        最近更新 更多