在实例启动时,您应该始终被分配一个私有 IP 地址。在 EC2 经典中,每次启动实例时都会从 EC2-Classic 范围分配。在 VPC 中,此地址是静态的(不会在停止/启动时重置)并且来自您的子网的地址范围。
您可以禁用公共 IP 分配,但请注意公共 IP 分配的默认设置:
EC2-Classic:您的实例接收公共 IP 地址。此行为无法更改。
默认子网:您的实例默认接收一个公有 IP 地址,除非您在启动期间另行指定,或者您修改了子网的公有 IP 地址属性。
非默认子网:默认情况下,您的实例不会收到公有 IP 地址,除非您在启动期间另行指定,或者您修改了子网的公有 IP 地址属性。
由于您在您的文件中指定了 SubnetId,New-EC2Instance
我可以放心地假设您在 VPC 中工作,并且由于您提出这个问题,我可以假设 VPC 配置为默认设置公共 IP 地址。
在这种情况下,切换公共 IP 地址的分配就像指定-AssociatePublicIP
参数一样简单New-EC2Instance
。
示例 1:只需在 EC2 Launch 上关闭
New-EC2Instance -ImageId ami-abcdefg123 -MinCount 1 -MaxCount 1 -KeyName Keypair `
-SecurityGroupId sg-abcdefg -InstanceType m1.small `
-SubnetId subnet-1a2b3c4d -AssociatePublicIP $false
示例 2:在您的子网中的所有新实例上禁用默认公共 IP。在脚本中指定时使用 -Force 以跳过交互式确认。
Edit-EC2SubnetAttribute -MapPublicIpOnLaunch $false -SubnetId subnet-1a2b3c4d -Force
文档: