如何在不**在 cloudformation 中声明弹性 IP 的情况下自动创建具有 Public IP 的 Ec2 实例?
How do I create an Ec2 Instance with a Public IP automatically **without** declaring an Elastic IP in cloudformation?
在 AWS Cloudformation 中,是否可以通过 Public IP 在 VPC 中声明 EC2 实例而无需 声明弹性 IP 并附加到它?
在 AWS::AutoScaling::LaunchConfiguration 中,您可以添加一个属性 "AssociatePublicIpAddress" 表示实例将自动接受 Public IP。我正在寻找 AWS::EC2::Instance
的等价物
下面是我创建 EC2 实例的 cloudformation 片段。我无法在任何文档中提及如何添加 public IP 而无需事先声明弹性 IP。
"MyEc2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"IamInstanceProfile": {
"Ref": "MyEc2InstanceProfile"
},
"ImageId": {
"Fn::FindInMap": [
"MyEc2Box",
{
"Ref": "Region"
},
"ImageId"
]
},
"InstanceType": {
"Fn::FindInMap": [
"MyEc2Box",
{
"Ref": "Region"
},
"InstanceType"
]
},
"KeyName": {
"Ref": "DefaultKeyPair"
},
"Monitoring": "true",
"SecurityGroupIds": [
{
"Ref": "MyEc2SecurityGroup"
}
],
"SubnetId": {
"Ref": "MyBoxSubnet"
},
"Tags": [
{
"Key": "Name",
"Value": "MyBox"
},
]
}
},
假设您在 VPC public 子网中启动您的实例(即具有路由 table 的子网,包括将流量发送到 0.0.0.0/0 到互联网网关的规则),只需在 EC2 资源的 NetworkInterfaces 组中定义 AssociatePublicIpAddress 属性:
"NetworkInterfaces" : [{
"AssociatePublicIpAddress" : "True",
"DeleteOnTermination" : "True",
"SubnetId" : { "Ref" : "PublicSubnet" },
"DeviceIndex" : "0",
"GroupSet" : [ { "Ref" : "SecurityGroup" } ]
}],
处的文档
如果您在 EC2 经典网络(非 VPC)中启动您的实例,它将自动接收一个 public IP 地址。
我看到这是一个旧的 post 但我 post 这个答案无论如何都会有帮助。
在子网中,您可以将:"MapPublicIpOnLaunch" 设置为 True,这样该子网的所有实例都将具有 public IP。
MapPublicIpOnLaunch
Indicates whether instances that are launched in this subnet receive a public IP address. By default, the value is false.
Required: No
Type: Boolean
Update requires: No interruption.
在 AWS Cloudformation 中,是否可以通过 Public IP 在 VPC 中声明 EC2 实例而无需 声明弹性 IP 并附加到它?
在 AWS::AutoScaling::LaunchConfiguration 中,您可以添加一个属性 "AssociatePublicIpAddress" 表示实例将自动接受 Public IP。我正在寻找 AWS::EC2::Instance
的等价物下面是我创建 EC2 实例的 cloudformation 片段。我无法在任何文档中提及如何添加 public IP 而无需事先声明弹性 IP。
"MyEc2Instance": {
"Type": "AWS::EC2::Instance",
"Properties": {
"IamInstanceProfile": {
"Ref": "MyEc2InstanceProfile"
},
"ImageId": {
"Fn::FindInMap": [
"MyEc2Box",
{
"Ref": "Region"
},
"ImageId"
]
},
"InstanceType": {
"Fn::FindInMap": [
"MyEc2Box",
{
"Ref": "Region"
},
"InstanceType"
]
},
"KeyName": {
"Ref": "DefaultKeyPair"
},
"Monitoring": "true",
"SecurityGroupIds": [
{
"Ref": "MyEc2SecurityGroup"
}
],
"SubnetId": {
"Ref": "MyBoxSubnet"
},
"Tags": [
{
"Key": "Name",
"Value": "MyBox"
},
]
}
},
假设您在 VPC public 子网中启动您的实例(即具有路由 table 的子网,包括将流量发送到 0.0.0.0/0 到互联网网关的规则),只需在 EC2 资源的 NetworkInterfaces 组中定义 AssociatePublicIpAddress 属性:
"NetworkInterfaces" : [{
"AssociatePublicIpAddress" : "True",
"DeleteOnTermination" : "True",
"SubnetId" : { "Ref" : "PublicSubnet" },
"DeviceIndex" : "0",
"GroupSet" : [ { "Ref" : "SecurityGroup" } ]
}],
处的文档
如果您在 EC2 经典网络(非 VPC)中启动您的实例,它将自动接收一个 public IP 地址。
我看到这是一个旧的 post 但我 post 这个答案无论如何都会有帮助。 在子网中,您可以将:"MapPublicIpOnLaunch" 设置为 True,这样该子网的所有实例都将具有 public IP。
MapPublicIpOnLaunch
Indicates whether instances that are launched in this subnet receive a public IP address. By default, the value is false.
Required: No
Type: Boolean
Update requires: No interruption.