

# 为 Amazon RDS 创建代理
<a name="rds-proxy-creating"></a>

您可以将代理与 RDS for MariaDB、RDS for Microsoft SQL Server、RDS for MySQL 或 RDS for PostgreSQL 数据库实例相关联。

## 控制台
<a name="rds-proxy-creating.console"></a>

**创建代理**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Proxies (代理)**。

1. 选择 **Create proxy (创建代理)**。

1. 为代理配置以下设置。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/rds-proxy-creating.html)

1.  选择 **Create proxy (创建代理)**。

## AWS CLI
<a name="rds-proxy-creating.CLI"></a>

 要使用 AWS CLI 创建代理，请使用以下必需的参数调用 [create-db-proxy](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-proxy.html) 命令：
+ `--db-proxy-name`
+ `--engine-family`
+ `--role-arn`
+ `--vpc-subnet-ids`

`--engine-family` 值区分大小写。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds create-db-proxy \
    --db-proxy-name proxy_name \
    --engine-family { MYSQL | POSTGRESQL | SQLSERVER } \
    --role-arn iam_role \
    --vpc-subnet-ids space_separated_list \
    [--default-auth-scheme { NONE | IAM_AUTH }] \
    [--auth ProxyAuthenticationConfig_JSON_string] \
    [--vpc-security-group-ids space_separated_list] \
    [--require-tls | --no-require-tls] \
    [--idle-client-timeout value] \
    [--debug-logging | --no-debug-logging] \
    [--endpoint-network-type { IPV4 | IPV6 | DUAL }] \
    [--target-connection-network-type { IPV4 | IPV6 }] \
    [--tags comma_separated_list]
```
对于：Windows  

```
aws rds create-db-proxy ^
    --db-proxy-name proxy_name ^
    --engine-family { MYSQL | POSTGRESQL | SQLSERVER } ^
    --role-arn iam_role ^
    --vpc-subnet-ids space_separated_list ^
    [--default-auth-scheme { NONE | IAM_AUTH }] ^
    [--auth ProxyAuthenticationConfig_JSON_string] ^
    [--vpc-security-group-ids space_separated_list] ^
    [--require-tls | --no-require-tls] ^
    [--idle-client-timeout value] ^
    [--debug-logging | --no-debug-logging] ^
    [--endpoint-network-type { IPV4 | IPV6 | DUAL }] ^
    [--target-connection-network-type { IPV4 | IPV6 }] ^
    [--tags comma_separated_list]
```

以下是 `--auth` 选项的 JSON 值的示例。此示例对每个密钥应用不同的客户端身份验证类型。

```
[
  {
    "Description": "proxy description 1",
    "AuthScheme": "SECRETS",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:123456789123:secret/1234abcd-12ab-34cd-56ef-1234567890ab",
    "IAMAuth": "DISABLED",
    "ClientPasswordAuthType": "POSTGRES_SCRAM_SHA_256"
  },
  
  {
    "Description": "proxy description 2",
    "AuthScheme": "SECRETS",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:111122223333:secret/1234abcd-12ab-34cd-56ef-1234567890cd",
    "IAMAuth": "DISABLED",
    "ClientPasswordAuthType": "POSTGRES_MD5"
    
  },
  
  {
    "Description": "proxy description 3",
    "AuthScheme": "SECRETS",
    "SecretArn": "arn:aws:secretsmanager:us-west-2:111122221111:secret/1234abcd-12ab-34cd-56ef-1234567890ef",
    "IAMAuth": "REQUIRED"
  }
  
]
```

`--endpoint-network-type` 参数指定客户端用于连接代理的代理端点的 IP 版本。有效值为：
+ `IPV4` – 代理端点仅使用 IPv4 地址（默认）。
+ `IPV6` – 代理端点仅使用 IPv6 地址。
+ `DUAL` – 代理端点支持 IPv4 和 IPv6 地址。

`--target-connection-network-type` 参数指定代理用于连接到目标数据库的 IP 版本。有效值为：
+ `IPV4` – 代理使用 IPv4 地址连接到数据库（默认）。
+ `IPV6` – 代理使用 IPv6 地址连接到数据库。

要使用 IPv6 或双栈端点网络类型，必须将您的 VPC 和子网配置为支持所选网络类型。要使用 IPv6 目标连接网络类型，您的数据库必须支持双栈模式。

**提示**  
 如果您尚不知道要用于 `--vpc-subnet-ids` 参数的子网 ID，请参阅 [设置 RDS 代理的网络先决条件](rds-proxy-network-prereqs.md) 获取有关如何查找它们的示例。

**注意**  
安全组必须允许访问代理连接到的数据库。同一安全组用于从应用程序到代理的入口以及从代理到数据库的出口。例如，假设您对数据库和代理使用同一安全组。在这种情况下，请确保您指定该安全组中的资源可以与同一安全组中的其他资源进行通信。  
使用共享 VPC 时，您不能使用 VPC 的默认安全组，也不能使用属于其他账户的安全组。选择属于您账户的安全组。如果不存在，请创建一个。有关此限制的详细信息，请参阅[使用共享 VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-sharing.html#vpc-share-limitations)。

 要为代理创建正确的关联，您还可以使用 [register-db-proxy-targets](https://docs.aws.amazon.com/cli/latest/reference/rds/register-db-proxy-targets.html) 命令。指定目标组名称 `default`。创建每个代理时，RDS Proxy 会自动创建一个此名称的目标组。

```
aws rds register-db-proxy-targets
    --db-proxy-name value
    [--target-group-name target_group_name]
    [--db-instance-identifiers space_separated_list]  # rds db instances, or
    [--db-cluster-identifiers cluster_id]        # rds db cluster (all instances)
```

## RDS API
<a name="rds-proxy-creating.API"></a>

 要创建 RDS 代理，请调用 Amazon RDS API 操作 [CreateDBProxy](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBProxy.html)。传递具有 [AuthConfig](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_AuthConfig.html) 数据结构的参数。

 创建每个代理时，RDS Proxy 会自动创建一个名为 `default` 的目标组。通过调用函数 [RegisterDBProxyTargets](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RegisterDBProxyTargets.html)，将 RDS 数据库实例与目标组关联。

**重要**  
当您选择 **IAM 身份验证**作为默认身份验证方案时：  
在代理成功连接之前，您必须在目标数据库实例或集群上启用 IAM 数据库身份验证。
如果选择**创建 IAM 角色**，则必须填写**用于 IAM 身份验证的数据库账户**字段。
如果选择现有 IAM 角色，则控制台不会自动更新具有数据库连接权限的角色。请检查该角色是否具有必要的 `rds-db:connect` 权限。