AWS powershell中的自定义端点

时间:2015-05-06 14:16:17

标签: amazon-web-services eucalyptus aws-powershell

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

我可以使用带有参数--endpoint-url。

的AWS CLI执行此操作

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

2 个答案:

答案 0 :(得分:2)

- UPDATE -

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

示例:

Get-EC2Instance -EndpointUrl https://somehostnamehere

此外,上述bug已修复。

好东西!

- 原始答案 -

<强> TL; TR

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

    {
        "version": 2,
        "endpoints": {
            "*/*": {
                "endpoint": "your_endpoint_here"
            }
        }
    }
    
  • 导入AWSPowerShell模块后,告诉SDK使用您的自定义端点配置。例如:

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

注意:底层SDK中有一个bug,导致路径组件的端点被正确签名。该错误影响了这个解决方案和@HyperAnthony提出的解决方案。

其他信息

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

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

然后我通过AWSSDK.Core.dll code进行了调查,找到了SDK加载文件的位置(请参阅https://github.com/aws/aws-sdk-net/blob/master/sdk/src/Core/RegionEndpoint.cs处的LoadEndpointDefinitions()方法。)

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

答案 1 :(得分:1)

我不相信它是。此common parameters列表(可与所有AWS PowerShell cmdlet一起使用)不包含服务URL,而是选择使用简单字符串Region来设置基于一组服务URL的服务URL已知地区。

如果您对PowerShell中的可能替代方案感兴趣,则此AWS .NET Development forum post建议您可以在.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是否仍然如此。