如何使用AWS CDK与EC2实例创建弹性IP关联?

时间:2020-05-22 12:45:35

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

在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对象中获取它。

2 个答案:

答案 0 :(得分:2)

拼写不太好,但是解决方法是:

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

答案 1 :(得分:0)

对于Cfn* CDK资源,我发现CloudFormation文档比CDK API信息丰富得多。

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