从CloudFormation脚本中将现有弹性IP与Ec2实例关联起来?

时间:2014-11-05 10:54:09

标签: amazon-web-services amazon-ec2

我有一个CloudFormation堆栈,用于创建环境的多个副本。 一些但不是所有这些环境都将具有相关的弹性IP。

现在我:

  1. 运行CF脚本
  2. 将弹性IP分配给approprite
  3. 在不接触实例的堆栈更新中,弹性IP将保留给拥有它的实例。
  4. 对实例本身的更新,关联将丢失。

    当从CF堆栈本身进行更新时,会更改基础实例名称,这会导致IP被取消分配。所以我想将弹性IP的ID作为参数传递给脚本并手动分配。

  5. 似乎有two ways to do this,但我不明白其中的区别。什么是分配ID,何时需要使用它?

    "IPAssoc" : {
         "Type" : "AWS::EC2::EIPAssociation",
         "Properties" : {
             "InstanceId" : { "Ref" : "logical name of an AWS::EC2::Instance resource" },
             "EIP" : "existing Elastic IP address"
         }
     }
    

    VS

    "VpcIPAssoc" : {
         "Type" : "AWS::EC2::EIPAssociation",
         "Properties" : {
             "InstanceId" : { "Ref" : "logical name of an AWS::EC2::Instance resource" },
             "AllocationId" : "existing VPC Elastic IP allocation ID"
         }
     }
    

1 个答案:

答案 0 :(得分:1)

VPC使用与EC2 Classic之间存在差异。

根据http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-eip-association.html,EIP用于EC2 Classic,AllocationId用于VPC。

有关VPC和EC2 Classic之间的区别,请参阅http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-vpc.html#differences-ec2-classic-vpc