

# Amazon RDS のプロキシの作成
<a name="rds-proxy-creating"></a>

プロキシは、RDS for MariaDB、RDS for Microsoft SQL サーバー、RDS for MySQL、RDS for PostgreSQL DB の各インスタンスに関連付けることができます。

## コンソール
<a name="rds-proxy-creating.console"></a>

**プロキシを作成するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**プロキシ**] を選択します。

1. [**Create proxy (プロキシの作成)**] を選択します。

1. プロキシについて次の設定を行います。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/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 Proxy のネットワーク前提条件の設定](rds-proxy-network-prereqs.md)」を使用して、ID を検索する方法の例を参照してください。

**注記**  
セキュリティグループは、プロキシの接続先のデータベースへのアクセスを許可する必要があります。同じセキュリティグループが、アプリケーションからプロキシへのイングレスと、プロキシからデータベースへのエグレスに使用されます。例えば、データベースとプロキシに同じセキュリティグループを使用するとします。この場合は必ず、そのセキュリティグループ内のリソースが同じセキュリティグループ内の他のリソースと通信できるように指定してください。  
共有 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 Proxy を作成するには、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 DB インスタンスを関連付けます。

**重要**  
デフォルトの認証スキームに **[IAM 認証]** を選択する場合。  
プロキシが正常に接続する前に、ターゲットデータベースインスタンスまたはクラスターで IAM データベース認証を有効にする必要があります。
**[IAM ロールを作成]** を選択した場合、**[IAM 認証用のデータベースアカウント]** が必要です。
既存の IAM ロールを選択した場合、コンソールはデータベース接続許可でロールを自動的に更新しません。ロールに必要な `rds-db:connect` アクセス許可があることを確認します。