

**本文档仅适用于 AWS CLI 版本 1。**

我们已宣布即将终止对 AWS CLI 版本 1 的支持。建议您迁移到 AWS CLI 版本 2。有关日期、其它详细信息以及如何迁移的信息，请参阅[公告](https://aws.amazon.com/blogs/developer/cli-v1-maintenance-mode-announcement/)。有关 AWS CLI 版本 2 的相关文档，请参阅[版本 2 用户指南](https://docs.aws.amazon.com/cli/latest/userguide/)。

# 在 AWS CLI 中使用 HTTP 代理
<a name="cli-configure-proxy"></a>

要通过代理服务器访问 AWS，您可以使用代理服务器使用的 DNS 域名或 IP 地址和端口号配置 `HTTP_PROXY` 和 `HTTPS_PROXY` 环境变量。

**Topics**
+ [使用示例](#cli-configure-proxy-using)
+ [向代理进行身份验证](#cli-configure-proxy-auth)
+ [对 Amazon EC2 实例使用代理](#cli-configure-proxy-ec2)
+ [故障排除](#cli-configure-proxy-tshoot)

## 使用示例
<a name="cli-configure-proxy-using"></a>

**注意**  
以下示例显示了全部使用大写字母的环境变量名称。但是，如果使用不同的大小写指定一个变量两次，则优先使用小写字母。建议您只定义每个变量一次，以避免系统混淆和意外行为。

以下示例显示如何使用代理的显式 IP 地址或解析为代理 IP 地址的 DNS 名称。两种情况都可以后跟冒号和应将查询发送到的端口号。

------
#### [ Linux or macOS ]

```
$ export HTTP_PROXY=http://10.15.20.25:1234
$ export HTTP_PROXY=http://proxy.example.com:1234
$ export HTTPS_PROXY=http://10.15.20.25:5678
$ export HTTPS_PROXY=http://proxy.example.com:5678
```

------
#### [ Windows Command Prompt ]

**为所有会话设置**

```
C:\> setx HTTP_PROXY http://10.15.20.25:1234
C:\> setx HTTP_PROXY http://proxy.example.com:1234
C:\> setx HTTPS_PROXY http://10.15.20.25:5678
C:\> setx HTTPS_PROXY http://proxy.example.com:5678
```

使用 [https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/setx](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/setx) 设置环境变量会更改当前命令提示符会话和运行该命令后创建的所有命令提示符会话中使用的值。它***不*** 影响在运行该命令时已经运行的其他命令 shell。

**仅为当前会话设置**

使用 `[set](https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/set_1)` 设置环境变量会更改使用的值，直到当前命令提示符会话结束，或者直到您将该变量设置为其他值。

```
C:\> set HTTP_PROXY=http://10.15.20.25:1234
C:\> set HTTP_PROXY=http://proxy.example.com:1234
C:\> set HTTPS_PROXY=http://10.15.20.25:5678
C:\> set HTTPS_PROXY=http://proxy.example.com:5678
```

------

## 向代理进行身份验证
<a name="cli-configure-proxy-auth"></a>

**注意**  
AWS CLI 不支持 NTLM 代理。如果使用 NTLM 或 Kerberos 协议代理，则可以通过身份验证代理（如 [Cntlm](http://cntlm.sourceforge.net)）进行连接。

AWS CLI 支持 HTTP 基本身份验证。在代理 URL 中指定用户名和密码，如下所示。

------
#### [ Linux or macOS ]

```
$ export HTTP_PROXY=http://username:password@proxy.example.com:1234
$ export HTTPS_PROXY=http://username:password@proxy.example.com:5678
```

------
#### [ Windows Command Prompt ]

**为所有会话设置**

```
C:\> setx HTTP_PROXY http://username:password@proxy.example.com:1234
C:\> setx HTTPS_PROXY http://username:password@proxy.example.com:5678
```

**仅为当前会话设置**

```
C:\> set HTTP_PROXY=http://username:password@proxy.example.com:1234
C:\> set HTTPS_PROXY=http://username:password@proxy.example.com:5678
```

------

## 对 Amazon EC2 实例使用代理
<a name="cli-configure-proxy-ec2"></a>

如果是在使用附加 IAM 角色启动的 Amazon EC2 实例上配置代理，请确保排除用于访问[实例元数据](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)的地址。为此，请将 `NO_PROXY` 环境变量设置为实例元数据服务的 IP 地址 169.254.169.254。该地址保持不变。

------
#### [ Linux or macOS ]

```
$ export NO_PROXY=169.254.169.254
```

------
#### [ Windows Command Prompt ]

**为所有会话设置**

```
C:\> setx NO_PROXY 169.254.169.254
```

**仅为当前会话设置**

```
C:\> set NO_PROXY=169.254.169.254
```

------

## 故障排除
<a name="cli-configure-proxy-tshoot"></a>

如果您遇到有关 AWS CLI 的问题，请参阅[排查 AWS CLI 错误](cli-chap-troubleshooting.md)以了解故障排除步骤。有关相关性最高的故障排除步骤，请参阅[SSL 证书错误](cli-chap-troubleshooting.md#tshoot-certificate-verify-failed)。