将ENI(弹性网络接口)添加到Windows EC2

时间:2017-05-17 21:58:45

标签: powershell amazon-ec2

好的AWS Windows Powershell家伙......这里有一个问题。如何在Windows EC2中添加ENI(弹性网络接口)?似乎很简单,因为许多例子显示:

Add-EC2NetworkInterface -NetworkInterfaceId <your-eni-id> `
                        -InstanceId <your-ec2-id> `
                        -DeviceIndex 1 `
                        -Force

但在我过去的经验中,DeviceId = 1停止工作,我切换到DeviceIndex = 2。我一路走来,突然DeviceIndex = 2无法正常工作,产生异常

Instance 'i-xxxxxxxxxxxxxxxxx' already has an interface attached at device index '2'

和ENI显示&#39;附加&#39;永远(并且必须被强行分离)。但是,今天使用DeviceIndex = 1会再次附加ENI。现在我认识到我应该以编程方式确定哪个DeviceIndex可用并使用它,但最接近我看到的这个值是&#34; InterfaceIndex&#34;在这篇博客中:

https://blogs.technet.microsoft.com/heyscriptingguy/2014/01/15/using-powershell-to-find-connected-network-adapters/

使用此命令:

get-wmiobject win32_networkadapter | select netconnectionid, name, InterfaceIndex, netconnectionstatus

但在尝试了这些价值后,它显然不是我正在寻找的价值。例如,添加DeviceIndex = 1将在InterfaceIndex = 29处获得网络适配器。

当从控制台附加ENI时,api中需要此参数甚至没有输入此值的位置(并且工作正常),这很奇怪。

总而言之,如何确定用于向Windows EC2添加新ENI的DeviceIndex?

1 个答案:

答案 0 :(得分:0)

我正在玩较小的EC2实例,只允许最多两个网络设备,但我愿意打赌这就是答案。如果你看一下ec2的网络接口:

$instances = Get-Instances -InstanceId <your-ec2-id>
$instances.Instances[0].NetworkInterfaces.Attachment

您将看到附加的网络设备以及我一直在寻找的DeviceIndex属性:

AttachmentId        : eni-attach-aaaaaaaa
AttachTime          : 5/15/2017 12:47:31 PM
DeleteOnTermination : True
DeviceIndex         : 0
Status              : attached

AttachmentId        : eni-attach-bbbbbbbb
AttachTime          : 5/17/2017 5:28:21 PM
DeleteOnTermination : False
DeviceIndex         : 1
Status              : attached

我的猜测是控制台找到当前值并为您生成下一个值,因此您不必提供它,但由于Add-EC2NetworkInterface需要它,因此找到DeviceIndex的最大值并使用附加值下一个最高的数字。

请记住,即使您的呼叫失败,您仍然必须分离ENI(使用Dismount-EC2NetworkInterface或从AWS控制台),因为它很可能会卡在“附加”中。状态。

希望这有助于某人!