3

我正在尝试将 AWS Powershell 与 Eucalyptus 一起使用。

我可以使用带有参数 --endpoint-url 的 AWS CLI 执行此操作。

是否可以在 AWS Powershell 中设置端点 url?我可以在 AWS Powershell 中使用自己的终端节点 URL 创建自定义区域吗?

4

2 回答 2

2

- 更新 -

适用于 Windows PowerShell 的 AWS 工具的较新版本(根据 Get-AWSPowerShellVersion,我正在运行 3.1.66.0),具有用于相关命令的可选 -EndpointUrl 参数。

例子:

Get-EC2Instance -EndpointUrl https://somehostnamehere

此外,上述 错误已得到修复。

好东西!


--原始答案--

TL;TR

  • 从此处下载默认端点配置文件:https ://github.com/aws/aws-sdk-net/blob/master/sdk/src/Core/endpoints.json
  • 自定义它。例子:

    {
        "version": 2,
        "endpoints": {
            "*/*": {
                "endpoint": "your_endpoint_here"
            }
        }
    }
    
  • 导入 AWSPowerShell 模块后,告诉开发工具包使用您的自定义终端节点配置。例子:

    [Amazon.AWSConfigs]::EndpointDefinition = "path to your customized Amazon.endpoints.json here"
    

注意:底层 SDK 中存在一个错误,导致具有路径组件的端点无法正确签名。该错误影响此解决方案和@HyperAnthony 提出的解决方案。

附加信息

通过阅读 .NET SDK 文档,我偶然发现了一个部分,该部分显示可以在给定文件的情况下全局设置区域规则:http: //docs.aws.amazon.com/AWSSdkDocsNET/latest/V2/DeveloperGuide/net-dg -config-other.html#config-setting-awsendpointdefinition

不幸的是,我找不到任何记录此类文件格式的地方。

然后,我浏览了 AWSSDK.Core.dll代码并找到了 SDK 加载文件的位置(请参阅https://github.com/aws/aws-sdk-net/blob/master/sdk/src/上的 LoadEndpointDefinitions() 方法核心/区域端点.cs)。

通读代码,如果文件没有在 AWSConfigs.EndpointDefinition 上明确指定,它最终会从嵌入式资源加载文件(即https://github.com/aws/aws-sdk-net/blob/master/sdk /src/Core/endpoints.json )

于 2015-08-28T14:42:23.657 回答
1

我不相信它是。此通用参数列表(可与所有 AWS PowerShell cmdlet 一起使用)不包括服务 URL,而是选择一个简单的字符串Region来根据一组已知区域设置服务 URL。

如果您对 PowerShell 中的可能替代方案感兴趣,此AWS .NET Development 论坛帖子建议您可以在 .NET SDK 配置对象上设置服务 URL。这是该线程的示例用法:

$config=New-Object Amazon.EC2.AmazonEC2Config
$config.ServiceURL = "https://ec2.us-west-1.amazonaws.com"
$client=[Amazon.AWSClientFactory]::CreateAmazonEC2Client($accessKeyID,$secretKeyID,$config)

设置客户端时,您似乎可以将它与大多数配置对象一起使用。下面是一些具有 ServiceURL 属性的示例。我想这是在大多数 AWS 配置对象上:

旧版本的文档(针对 v1)指出,如果RegionEndpoint设置了 ,则此属性将被忽略。我不确定v2是否仍然如此。

于 2015-05-06T21:05:05.847 回答