4

次のスクリプトを使用しようとしましたが、成功しませんでした:

$Ami=Get-EC2ImageByName WINDOWS_2012_BASE

New-EC2Instance -ImageId $Ami[0].ImageId -MinCount 1 -MaxCount 1 -KeyName uckey -InstanceType `
t1.micro -SubnetId subnet-56738b33 -AssociatePublicIp $true

エラーは次のとおりです。

New-EC2Instance : Object reference not set to an instance of an object.
At line:1 char:1
+ New-EC2Instance -ImageId $Ami[0].ImageId -MinCount 1 -MaxCount 1 -KeyName uckey  ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (Amazon.PowerShe...2InstanceCmdlet:NewEC2InstanceCmdlet)  
   [New-EC2Instance], InvalidOperationException
    + FullyQualifiedErrorId : System.NullReferenceException,Amazon.PowerShell.Cmdlets.EC2.NewEC2InstanceC 
   mdlet

問題は、パラメータ-AssociatePublicIpがない場合です。スクリプトは機能します。

読んでくれてありがとう

4

3 に答える 3

5

AWS PowerShell バージョン 2.1.3.0 の時点で、このバグは修正されています。

このスクリプトを実行できました:

New-EC2Instance -ImageId $Ami[0].ImageId -MinCount 1 -MaxCount 1 -KeyName uckey -InstanceType `
t1.micro -SubnetId subnet-56738b33 -AssociatePublicIp $true 
于 2014-07-24T18:09:37.923 に答える
3

私は同じ問題に遭遇しました。まだ PowerShell を使用している間に考えられる回避策は、最初にネットワーク インターフェイスを作成し、それをインスタンスに関連付けることです。

$subnetId = "subnet-56738b33"
$keyName = "uckey"
$instanceType = "t1.micro"

$Ami = Get-EC2ImageByName WINDOWS_2012_BASE
$ImageId = $Ami[0].ImageId

$networkInterface = New-EC2NetworkInterface -SubnetId $subnetId -Description "Primary network interface"

$interfaceSpec = New-Object Amazon.EC2.Model.InstanceNetworkInterfaceSpecification -property @{"NetworkInterfaceId"=$networkInterface.NetworkInterfaceId}

$reservation = New-EC2Instance -ImageId $ImageId -MinCount 1 -MaxCount 1 -InstanceType $instanceType -KeyName $keyName -NetworkInterfaces $interfaceSpec

InstanceNetworkInterfaceSpecification には、インターフェイスにパブリック IP アドレスが必要かどうかを示すプロパティがあります (ドキュメントを参照してください) 。

于 2014-07-24T08:52:50.720 に答える