我正在开发一个AWS VPC,它有一个子网,默认情况下不会自动分配公共IP.我想使用boto3来创建实例并自动分配公共IP.目前尚不清楚如何从boto3文档中做到这一点.
我得到的最接近的是以下,但仍有错误:
self._ec2.create_instances(
ImageId=self._cluster._image,
KeyName="key_pair_1",
InstanceType="t2.micro",
MinCount=1,
MaxCount=1,
SecurityGroupIds=["sg-someid"],
SubnetId="subnet-anotherid",
BlockDeviceMappings=[{
"DeviceName": "/dev/sda1",
"Ebs": {
"VolumeType": "gp2",
"VolumeSize": disk_size,
"DeleteOnTermination": True
},
}],
NetworkInterfaces=[{
"DeviceIndex": 0,
"AssociatePublicIpAddress": True
}]
)
小智 6
可能对某人有帮助:您必须将 SecurityGroupIds 和 subnetID 作为网络接口参数,并将它们从实例参数中删除,然后它会运行良好。
NetworkInterfaces=[
{
'DeviceIndex': 0,
'SubnetId' : 'subnet-xxxxxx',
'Groups': [
'sg-xxxxxx','sg-xxxx','sg-xxxxxx'
],
'AssociatePublicIpAddress': True
},
Run Code Online (Sandbox Code Playgroud)
如果您在设为私有的 VPC 子网内启动任何 EC2 实例(未打开自动分配公共 IP),则只有 2 种方法可以使其准备好接入互联网 1. 创建实例后附加弹性 IP 2. 创建 NAT将流量重新路由到允许连接到 Internet 的子网的网关。
此实例网络设置永远不会覆盖 VPC 私有子网规则。
"AssociatePublicIpAddress": True
Run Code Online (Sandbox Code Playgroud)
如果子网功能未更改为自动分配公共 IP,最简单的方法是弹性 IP。因此只需添加 2 个额外进程 1. allocate_address :获取弹性 IP 地址 2. Associate_address :将 EIP-id 附加到 Instance-id
| 归档时间: |
|
| 查看次数: |
2668 次 |
| 最近记录: |