【问题标题】:Custom endpoint in AWS powershellAWS PowerShell 中的自定义终端节点
【发布时间】:2015-05-06 14:16:16
【问题描述】:

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

我可以使用带有参数 --endpoint-url 的 AWS CLI 来做到这一点。

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

【问题讨论】:

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


    【解决方案1】:

    --更新--

    较新版本的适用于 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 模块后,告诉开发工具包使用您的自定义终端节点配置。示例:

      [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)加载文件

    【讨论】:

    • @stkxchng 可能有点晚了,但我在处理同样的问题时偶然发现了这个解决方案。希望对您有所帮助!
    • 我使用 EndpointUrl 属性,但 AWS 将存储桶名称添加到 URL(它强制虚拟主机模式)。
    【解决方案2】:

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

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

    $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 是否仍然如此。

    【讨论】:

    • 谢谢,我可以在 powershell 中使用 .NET SDK
    猜你喜欢
    • 1970-01-01
    • 2018-11-13
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    相关资源
    最近更新 更多