在 Amazon CLI 中使用端点 - Amazon Command Line Interface
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在 Amazon CLI 中使用端点

要通过编程方式连接到某个Amazon Web Service,您需要使用终端节点。终端节点是作为 Amazon Web 服务的入口点的 URL。Amazon Command Line Interface (Amazon CLI) 会自动为 Amazon Web Services 区域中的每项服务使用默认端点,但您可以应 API 请求指定备用端点。

为单个命令设置端点

要覆盖单个命令的任何端点设置或环境变量,请使用 --endpoint-url 命令行选项。以下命令示例使用自定义 Amazon S3 端点 URL。

$ aws s3 ls --endpoint-url http://localhost:4567

为所有 Amazon Web Services设置全局端点

要将所有服务的请求路由到自定义端点 URL,请使用以下设置之一:

  • 环境变量:

    • AWS_IGNORE_CONFIGURED_ENDPOINT_URLS – 忽略已配置的端点 URL。

      Linux or macOS
      $ export AWS_IGNORE_CONFIGURED_ENDPOINT_URLS=true
      Windows Command Prompt

      为所有会话设置

      C:\> setx AWS_IGNORE_CONFIGURED_ENDPOINT_URLS true

      仅为当前会话设置

      C:\> set AWS_IGNORE_CONFIGURED_ENDPOINT_URLS=true
      PowerShell
      PS C:\> $Env:AWS_IGNORE_CONFIGURED_ENDPOINT_URLS="true"
    • AWS_ENDPOINT_URL – 设置全局端点 URL。

      Linux or macOS
      $ export AWS_ENDPOINT_URL=http://localhost:4567
      Windows Command Prompt

      为所有会话设置

      C:\> setx AWS_ENDPOINT_URL http://localhost:4567

      仅为当前会话设置

      C:\> set AWS_ENDPOINT_URL=http://localhost:4567
      PowerShell
      PS C:\> $Env:AWS_ENDPOINT_URL="http://localhost:4567"
  • config 文件:

特定于服务的端点和 --endpoint-url 命令行选项会覆盖所有全局端点。

设置成为所有 Amazon Web Services使用 FIPS 端点

要路由所有服务的请求以使用 FIPS 端点,请使用以下设置之一:

  • AWS_USE_FIPS_ENDPOINT 环境变量。

    Linux or macOS
    $ export AWS_USE_FIPS_ENDPOINT=true
    Windows Command Prompt

    为所有会话设置

    C:\> setx AWS_USE_FIPS_ENDPOINT true

    仅为当前会话设置

    C:\> set AWS_USE_FIPS_ENDPOINT=true
    PowerShell
    PS C:\> $Env:AWS_USE_FIPS_ENDPOINT="true"
  • use_fips_endpoint 文件设置。

    use_fips_endpoint = true

在某些 Amazon Web Services 区域,部分 Amazon 服务提供支持美国联邦信息处理标准 (FIPS) 140-2 的端点。当 Amazon 服务支持 FIPS 时,此设置指定 Amazon CLI 应使用哪个 FIPS 端点。与标准 Amazon 端点不同,FIPS 端点使用符合 FIPS 140-2 的 TLS 软件库。与美国政府有业务来往的企业可能需要使用这些端点。

如果启用此设置,但不存在适用于您所在 Amazon Web Services 区域中的服务的 FIPS 端点,则 Amazon 命令可能会失败。在这种情况下,请使用 --endpoint-url 选项手动指定要在命令中使用的端点,或者使用特定于服务的端点

有关按 Amazon Web Services 区域指定 FIPS 端点的更多信息,请参阅按服务列出的 FIPS 端点

设置成为所有 Amazon Web Services使用双堆栈端点

要路由所有服务的请求以在可用时使用双堆栈端点,请使用以下设置之一:

  • AWS_USE_DUALSTACK_ENDPOINT 环境变量。

    Linux or macOS
    $ export AWS_USE_DUALSTACK_ENDPOINT=true
    Windows Command Prompt

    为所有会话设置

    C:\> setx AWS_USE_DUALSTACK_ENDPOINT true

    仅为当前会话设置

    C:\> set AWS_USE_DUALSTACK_ENDPOINT=true
    PowerShell
    PS C:\> $Env:AWS_USE_DUALSTACK_ENDPOINT="true"
  • use_dualstack_endpoint 文件设置。

    use_dualstack_endpoint = true

允许使用双堆栈端点发送 Amazon 请求。要详细了解支持 IPv4 和 IPv6 流量的双堆栈端点,请参阅 Amazon Simple Storage Service 用户指南中的使用 Amazon S3 双堆栈端点。双堆栈端点适用于某些区域。如果不存在适用于服务和/或 Amazon Web Services 区域的双堆栈端点,则请求将失败。默认情况下,将禁用该功能。

设置特定于服务的端点

特定于服务的端点配置提供了一个选项,可使用您应 Amazon CLI 请求选择的永久端点。这些设置可以灵活地支持本地端点、VPC 端点和第三方本地 Amazon 开发环境。不同的端点可分别用于测试环境和生产环境。您可以为个别 Amazon Web Services指定端点 URL。

可通过以下方式指定特定于服务的端点:

特定于服务的端点:环境变量

环境变量会覆盖配置文件中的设置,但不会覆盖命令行上指定的选项。如果您希望所有配置文件在设备上使用相同的端点,请使用环境变量。

以下是特定于服务的环境变量:

  • AWS_IGNORE_CONFIGURED_ENDPOINT_URLS – 忽略所有已配置的端点 URL,除非在命令行中指定。

    Linux or macOS
    $ export AWS_IGNORE_CONFIGURED_ENDPOINT_URLS=true
    Windows Command Prompt

    为所有会话设置

    C:\> setx AWS_IGNORE_CONFIGURED_ENDPOINT_URLS true

    仅为当前会话设置

    C:\> set AWS_IGNORE_CONFIGURED_ENDPOINT_URLS=true
    PowerShell
    PS C:\> $Env:AWS_IGNORE_CONFIGURED_ENDPOINT_URLS="true"
  • AWS_ENDPOINT_URL_<SERVICE> – 指定用于特定服务的自定义端点,在该服务中 <SERVICE> 替换为 Amazon Web Service标识符。有关所有特定于服务的变量,请参阅特定于服务的端点:特定于服务的标识符列表

    以下环境变量示例设置 Amazon Elastic Beanstalk 的端点。

    Linux or macOS
    $ export AWS_ENDPOINT_URL_ELASTIC_BEANSTALK=http://localhost:4567
    Windows Command Prompt

    为所有会话设置

    C:\> setx AWS_ENDPOINT_URL_ELASTIC_BEANSTALK http://localhost:4567

    仅为当前会话设置

    C:\> set AWS_ENDPOINT_URL_ELASTIC_BEANSTALK=http://localhost:4567
    PowerShell
    PS C:\> $Env:AWS_ENDPOINT_URL_ELASTIC_BEANSTALK="http://localhost:4567"

有关设置环境变量的更多信息,请参阅用于配置 Amazon CLI 的环境变量

特定于服务的端点:共享 config 文件

在共享 config 文件中,endpoint_url 用在多个节中。要设置特定于服务的端点,请使用嵌套在 services 节内服务标识符密钥下的 endpoint_url 设置。有关在共享 config 文件中定义 services 节的详细信息,请参阅 节类型:services

以下示例使用 services 节为 Amazon S3 配置服务特定的端点 URL 和用于其他所有服务的自定义全局端点:

[profile dev1] endpoint_url = http://localhost:1234 services = s3-specific [services testing-s3] s3 = endpoint_url = http://localhost:4567

单个配置文件可以为多个服务配置端点。以下示例在同一配置文件中为 Amazon S3 和 Amazon Elastic Beanstalk 设置服务特定的端点 URL。

有关 services 节中要使用的所有服务标识符密钥的列表,请参阅特定于服务的标识符列表

[profile dev1] services = testing-s3-and-eb [services testing-s3-and-eb] s3 = endpoint_url = http://localhost:4567 elastic_beanstalk = endpoint_url = http://localhost:8000

“服务配置”节可以在多个配置文件中使用。以下示例有两个配置文件使用相同的 services 定义:

[profile dev1] output = json services = testing-s3 [profile dev2] output = text services = testing-s3 [services testing-s3] s3 = endpoint_url = https://localhost:4567

特定于服务的端点:特定于服务的标识符列表

Amazon Web Service标识符基于 API 模型的 serviceId,不过需要将所有空格替换为下划线,并将所有字母小写。

以下服务标识符示例使用Amazon Elastic Beanstalk。Amazon Elastic Beanstalk 具有 Elastic BeanstalkserviceId,因此服务标识符密钥为 elastic_beanstalk

下表列出了所有特定于服务的标识符、config 文件密钥和环境变量。

端点配置和设置优先级

端点配置设置位于多个位置(例如,系统变量或用户环境变量、本地 Amazon 配置文件),或者在命令行上显式声明为参数。Amazon CLI 端点配置设置的优先顺序如下:

  1. --endpoint-url 命令行选项。

  2. 如果启用,则 AWS_IGNORE_CONFIGURED_ENDPOINT_URLS 全局端点环境变量或配置文件设置 ignore_configure_endpoint_urls 将忽略自定义端点。

  3. 由特定于服务的环境变量 AWS_ENDPOINT_URL_<SERVICE> 提供的值,例如 AWS_ENDPOINT_URL_DYNAMODB

  4. AWS_USE_DUALSTACK_ENDPOINTAWS_USE_FIPS_ENDPOINTAWS_ENDPOINT_URL 环境变量提供的值。

  5. 共享 config 文件 services 节中的 endpoint_url 设置提供的特定于服务的端点值。

  6. 共享 config 文件的 profile 中的 endpoint_url 设置提供的值。

  7. use_dualstack_endpointuse_fips_endpointendpoint_url 设置。

  8. 最后使用相应的 Amazon Web Service的任何默认端点 URL。有关每个区域可用的标准服务端点的列表,请参阅《Amazon Web Services 一般参考》中的 Amazon 区域和端点