【问题标题】:Can I use AWS Tools for Powershell to create a new EC2 instance and set the private IP?我可以使用 AWS Tools for Powershell 创建新的 EC2 实例并设置私有 IP 吗?
【发布时间】:2015-03-28 10:04:38
【问题描述】:

Cmdlet:

New-EC2Instance -ImageId ami-abcdefg123 -MinCount 1 -MaxCount 1 -KeyName Keypair `
                -SecurityGroupId sg-abcdefg -InstanceType m1.small ` 
                -SubnetId subnet-01bd1e76

如何更改此设置以向此实例添加私有 IP 地址?另外,我不希望为其分配公共 IP 地址。

【问题讨论】:

  • 这个问题似乎离题了,因为它与编程或开发无关。请参阅帮助中心的What topics can I ask about here。也许Super UserWeb Apps Stack Exchange 会是一个更好的提问地点。
  • 该问题的初始格式可能让人难以确定这是主题,但用户正在寻求有关 AWS Tools For PowerShell 的帮助。这是software tool commonly used by programmers,这种特定用法不太可能出现在脚本之外。这与寻求其他语言的库或 SDK 的帮助没有什么不同。我已经编辑了这个问题,希望能得出这种区别。

标签: powershell amazon-web-services amazon-ec2 amazon-vpc aws-powershell


【解决方案1】:

应始终在实例启动时为您分配一个私有 IP 地址。在 EC2 经典中,每次启动实例时都会从 EC2-Classic 范围分配。在 VPC 中,此地址是静态的(不会在停止/启动时重置)并且来自您的子网的地址范围。

您可以禁用公共 IP 分配,但请注意公共 IP 分配的默认设置:

EC2-Classic:您的实例接收公共 IP 地址。这种行为 无法更改。

默认子网:您的实例默认接收公共 IP 地址, 除非您在启动期间另行指定,或者您修改了子网的 公共 IP 地址属性。

非默认子网:您的实例未收到公共 IP 地址 默认情况下,除非您在启动期间另行指定,或者您修改 子网的公共 IP 地址属性。

由于您在 New-EC2Instance 中指定了 SubnetId,我可以放心地假设您在 VPC 中工作,并且由于您提出这个问题,我可以假设 VPC 配置为通过以下方式设置公共 IP 地址默认。

在这种情况下,切换公共 IP 地址的分配就像指定 New-EC2Instance-AssociatePublicIP 参数一样简单。

示例 1:只需在 EC2 启动时关闭

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

文档:

【讨论】:

  • 感谢您的详细解释。这有助于我学习 powershell。
  • @minisch 没问题!如果这解决了您的问题,您可以单击此答案左侧的复选标记将其标记为“已接受”,这样其他用户无需检查 cmets 即可看到问题已解决。
猜你喜欢
  • 2021-02-18
  • 2013-06-18
  • 2020-12-05
  • 1970-01-01
  • 2021-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-03
相关资源
最近更新 更多