Любая команда AWS Powershell завершается ошибкой с сообщением "Неверный URI: не удалось проанализировать имя хоста".

Я использую 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.UriFormatShell.Exception.EC2.NewEC2KeyPairCmdlet

Использование флага отладки не предоставляет никакой новой информации. Я использую Windows 8.1 с последним AWS SDK и командлетом AWS powershell

Изменить: Проблема, похоже, заключается в том, как настроены AWSDefaults. Оказывается, любая команда, выданная после этого, выдает такую ​​же ошибку.

1 ответ

Решение

Эта ошибка Invalid URI: The hostname could not be parsed. может произойти, если вы укажете свой регион неправильно. В вашем случае вы, похоже, неправильно указываете "Запад ЕС" - это должно быть eu-west-1 вместо.

Например, если я использую "EU West" в качестве моего региона для Get-EC2Instances в сеансе, который в противном случае правильно настроен, я получу ту же ошибку:

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

Чтобы получить список доступных регионов AWS от Powershell, вы можете использовать Get-AWSRegion, Вот пример, где моя оболочка по умолчанию 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-1 вместо EU West, Так что просто обратитесь к Западу ЕС как eu-west-1 и вы должны быть в состоянии установить свои значения по умолчанию.

Вы можете явно указать, какой регион вы хотите использовать в Initialize-AWSDefaults:

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

Более подробную информацию об указании регионов AWS можно найти в документации.

Другие вопросы по тегам