

# Amazon RDS용 프록시 만들기
<a name="rds-proxy-creating"></a>

프록시를 RDS for MariaDB, RDS for Microsoft SQL Server, RDS for MySQL 또는 RDS for PostgreSQL DB 인스턴스와 연결할 수 있습니다.

## 콘솔
<a name="rds-proxy-creating.console"></a>

**프록시를 생성하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **Proxies(프록시)**를 선택합니다.

1. **Create proxy(프록시 생성)**를 선택합니다.

1. 프록시에 대한 다음 설정을 구성합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/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**  
대상 LinuxmacOS, 또는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)에서 서브넷 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 프록시를 생성하려면 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` 권한이 있는지 확인합니다.