好的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;在这篇博客中:
使用此命令:
get-wmiobject win32_networkadapter | select netconnectionid, name, InterfaceIndex, netconnectionstatus
但在尝试了这些价值后,它显然不是我正在寻找的价值。例如,添加DeviceIndex = 1将在InterfaceIndex = 29处获得网络适配器。
当从控制台附加ENI时,api中需要此参数甚至没有输入此值的位置(并且工作正常),这很奇怪。
总而言之,如何确定用于向Windows EC2添加新ENI的DeviceIndex?
答案 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控制台),因为它很可能会卡在“附加”中。状态。
希望这有助于某人!