如何使用 AWS CDK 创建与 EC2 实例的弹性 IP 关联?
How to create Elastic IP association with an EC2 instance using 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
对象中获取它。
没有解释的很好,解决方案是:
// EC2 Instance <> EIP
let ec2Assoc = new ec2.CfnEIPAssociation(this, "Ec2Association", {
eip: eip.ref,
instanceId: ec2Instance.instanceId
});
对于 Cfn*
CDK 资源,我发现 CloudFormation 文档比 CDK API.
提供更多信息
CloudFormation docs for AWS::EC2::EIP
表明有一个 instanceId
属性 可以在创建 EIP
时使用,我认为这应该避免创建 CfnEIPAssociation
分开。
在 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
对象中获取它。
没有解释的很好,解决方案是:
// EC2 Instance <> EIP
let ec2Assoc = new ec2.CfnEIPAssociation(this, "Ec2Association", {
eip: eip.ref,
instanceId: ec2Instance.instanceId
});
对于 Cfn*
CDK 资源,我发现 CloudFormation 文档比 CDK API.
CloudFormation docs for AWS::EC2::EIP
表明有一个 instanceId
属性 可以在创建 EIP
时使用,我认为这应该避免创建 CfnEIPAssociation
分开。