4

我正在使用 powershell 使用以下脚本创建一个新的 EC2 密钥对:

Import-Module AWSPowerShell
$Region = "EU West"
$ProfileName = "AWS Default"
Initialize-AWSDefaults -ProfileName $ProfileName
$KeyName = "SecurityEssentials"
$KeyPair = New-EC2KeyPair -KeyName $KeyName 

但是,它在最后一行失败并显示以下消息:

New-EC2KeyPair:无效的 URI:无法解析主机名。在 C:\Users\John\Documents\Cloud\AWS Setup.ps1:12 char:12 + $KeyPair = New-EC2KeyPair -KeyName $KeyName + ~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (Amazon.PowerShe...C2KeyPairCmdlet:NewEC2KeyPairCmdlet) [New-EC2KeyPair], InvalidOperationException + FullyQualifiedErrorId : System.UriFormatException,Amazon.PowerShell.Cmdlets .EC2.NewEC2KeyPairCmdlet

使用调试标志不会提供任何新信息。我正在使用带有最新 AWS 开发工具包和 AWS powershell cmdlet 的 Windows 8.1

编辑:问题似乎与 AWSDefaults 的设置方式有关。事实证明,在此之后发出的任何命令都会产生相同的错误。

4

1 回答 1

6

Invalid URI: The hostname could not be parsed.当您错误地指定您的区域时,可能会发生此错误。在您的情况下,您似乎错误地指定了“欧盟西部”——它应该是eu-west-1

例如,如果我Get-EC2Instances在以其他方式正确配置的会话中使用“EU West”作为我的区域,我将收到相同的错误:

PS C:\> get-ec2instance -Region "EU West"
get-ec2instance : Invalid URI: The hostname could not be parsed.
At line:1 char:1
+ get-ec2instance -Region "EU West"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (Amazon.PowerShe...2InstanceCmdlet:GetEC2InstanceCmdlet) [Get-EC2Insta
   nce], InvalidOperationException
    + FullyQualifiedErrorId : System.UriFormatException,Amazon.PowerShell.Cmdlets.EC2.GetEC2InstanceCmdlet

要从 Powershell 列出可用的 AWS 区域,您可以使用Get-AWSRegion. 这是我的shell默认值的示例us-east-1

PS C:\> Get-AWSRegion

Region         Name                      IsShellDefault
------         ----                      --------------
us-east-1      US East (Virginia)                  True
us-west-1      US West (N. California)            False
us-west-2      US West (Oregon)                   False
eu-west-1      EU West (Ireland)                  False
eu-central-1   EU Central (Frankfurt)             False
ap-northeast-1 Asia Pacific (Tokyo)               False
ap-southeast-1 Asia Pacific (Singapore)           False
ap-southeast-2 Asia Pacific (Sydney)              False
sa-east-1      South America (Sao Paulo)          False

所以在这里我们看到 EU West 实际上是一个区域,但它被指定为eu-west-1而不是EU West. 因此,只需参考 EU West eu-west-1,您就可以设置默认值。

您可以在 Initialize-AWSDefaults 中明确设置要使用的区域:

Initialize-AWSDefaults -ProfileName MyProfileName -Region eu-west-1

有关指定 AWS 区域的更多信息,请参阅文档

于 2015-02-25T13:48:26.367 回答