

# Amazon RDS Data API에서 IPv6 사용
<a name="data-api.ipv6"></a>

Amazon RDS Data API는 듀얼 스택 엔드포인트를 통한 IPv6 연결을 지원합니다. 이를 통해 IPv4와의 이전 버전과의 호환성을 유지하면서 IPv6 주소를 사용하여 데이터 API에 연결할 수 있습니다.

## IPv6 엔드포인트 지원
<a name="data-api.ipv6.endpoints"></a>

데이터 API는 IPv4 및 IPv6 연결을 모두 지원하는 듀얼 스택 엔드포인트를 제공합니다. 이러한 엔드포인트는 기존 `.aws` 도메인 대신 `.amazonaws.com` 도메인을 사용합니다.

### 사용 가능한 엔드포인트 유형
<a name="data-api.ipv6.endpoint-types"></a>

퍼블릭 듀얼 스택 엔드포인트  
형식: `rds-data.region.api.aws`  
예시: `rds-data.us-east-1.api.aws`

FIPS 듀얼 스택 엔드포인트  
형식: `rds-data-fips.region.api.aws`  
예시: `rds-data-fips.us-east-1.api.aws`

PrivateLink IPv6 엔드포인트  
IPv6를 지원하는 VPC 엔드포인트를 통해 사용 가능  
VPC 내에서 프라이빗 IPv6 연결 허용

### 레거시 IPv4 전용 엔드포인트
<a name="data-api.ipv6.legacy-endpoints"></a>

기존 `.amazonaws.com` 엔드포인트는 IPv4 전용 연결을 계속 지원합니다.
+ `rds-data.region.amazonaws.com`
+ `rds-data-fips.region.amazonaws.com`

**참고**  
레거시 엔드포인트는 기존 애플리케이션과의 이전 버전과의 호환성을 보장하기 위해 변경되지 않습니다.

## IPv6 엔드포인트 사용
<a name="data-api.ipv6.using"></a>

데이터 API와 함께 IPv6를 사용하려면 새 듀얼 스택 엔드포인트를 사용하도록 애플리케이션을 업데이트합니다. 사용 가능한 경우, 애플리케이션은 자동으로 IPv6를 사용하거나 IPv4로 돌아갑니다.

VPC에서 IPv6를 설정하는 방법에 대한 일반적인 지침은 *Amazon VPC 사용 설명서*의 [ IPv6로 마이그레이션](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html)을 참조하세요.

다음 두 가지 방법으로 IPv6 엔드포인트를 구성할 수 있습니다.
+ **환경 변수 사용**: IPv6 환경에서 `AWS_USE_DUALSTACK_ENDPOINT=true`를 설정합니다. AWS CLI 및 AWS SDK는 `api.aws` 엔드포인트 URL을 수동으로 지정할 필요 없이 적절한 엔드포인트를 자동으로 구성합니다.
+ **명시적 엔드포인트 URL 사용**: 아래 예제와 같이 AWS CLI 명령 또는 SDK 구성에서 직접 듀얼 스택 엔드포인트 URL을 지정합니다.

### AWS CLI 구성
<a name="data-api.ipv6.cli"></a>

엔드포인트 URL을 지정하여 IPv6 엔드포인트를 사용하도록 AWS CLI를 구성합니다.

대상 LinuxmacOS, 또는Unix:

```
aws rds-data execute-statement \
    --endpoint-url https://rds-data.us-east-1.api.aws \
    --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:my-cluster" \
    --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret" \
    --database "mydb" \
    --sql "SELECT * FROM users LIMIT 10"
```

Windows의 경우:

```
aws rds-data execute-statement ^
    --endpoint-url https://rds-data.us-east-1.api.aws ^
    --resource-arn "arn:aws:rds:us-east-1:123456789012:cluster:my-cluster" ^
    --secret-arn "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret" ^
    --database "mydb" ^
    --sql "SELECT * FROM users LIMIT 10"
```

### AWS SDK 구성
<a name="data-api.ipv6.sdk"></a>

듀얼 스택 엔드포인트를 사용하도록 AWS SDK를 구성합니다.

------
#### [ Python ]

```
import boto3

# Create RDS Data API client with IPv6 dual-stack endpoint
client = boto3.client(
    'rds-data',
    endpoint_url='https://rds-data.us-east-1.api.aws'
)

# Execute a SQL statement
response = client.execute_statement(
    resourceArn='arn:aws:rds:us-east-1:123456789012:cluster:my-cluster',
    secretArn='arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret',
    database='mydb',
    sql='SELECT * FROM users LIMIT 10'
)

print(response['records'])
```

------
#### [ Java ]

```
import software.amazon.awssdk.services.rdsdata.RdsDataClient;
import software.amazon.awssdk.services.rdsdata.model.ExecuteStatementRequest;
import software.amazon.awssdk.services.rdsdata.model.ExecuteStatementResponse;
import java.net.URI;

// Create RDS Data API client with IPv6 dual-stack endpoint
RdsDataClient client = RdsDataClient.builder()
    .endpointOverride(URI.create("https://rds-data.us-east-1.api.aws"))
    .build();

// Execute a SQL statement
ExecuteStatementRequest request = ExecuteStatementRequest.builder()
    .resourceArn("arn:aws:rds:us-east-1:123456789012:cluster:my-cluster")
    .secretArn("arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret")
    .database("mydb")
    .sql("SELECT * FROM users LIMIT 10")
    .build();

ExecuteStatementResponse response = client.executeStatement(request);
System.out.println(response.records());
```

------
#### [ JavaScript ]

```
const { RDSDataClient, ExecuteStatementCommand } = require("@aws-sdk/client-rds-data");

// Create RDS Data API client with IPv6 dual-stack endpoint
const client = new RDSDataClient({
    endpoint: "https://rds-data.us-east-1.api.aws"
});

// Execute a SQL statement
const command = new ExecuteStatementCommand({
    resourceArn: "arn:aws:rds:us-east-1:123456789012:cluster:my-cluster",
    secretArn: "arn:aws:secretsmanager:us-east-1:123456789012:secret:my-secret",
    database: "mydb",
    sql: "SELECT * FROM users LIMIT 10"
});

const response = await client.send(command);
console.log(response.records);
```

------

## IPv6과 함께 AWS PrivateLink 사용
<a name="data-api.ipv6.privatelink"></a>

VPC 내에서 IPv6 연결을 지원하는 데이터 API용 VPC 엔드포인트를 생성할 수 있습니다. 데이터 API용 VPC 엔드포인트 생성에 대한 자세한 지침은 [Amazon RDS Data API에 대한 Amazon VPC 엔드포인트(AWS PrivateLink) 만들기](data-api.vpc-endpoint.md) 섹션을 참조하세요.

IPv6 지원을 위한 VPC 엔드포인트를 생성할 때 다음을 확인합니다.
+ VPC 및 서브넷은 IPv6을 지원하도록 구성됩니다.
+ 보안 그룹은 필요한 포트에서 IPv6 트래픽을 허용합니다(일반적으로 HTTPS의 경우 443).
+ 네트워크 ACL IPv6 트래픽을 허용하도록 구성됩니다.

## 마이그레이션 고려 사항
<a name="data-api.ipv6.migration"></a>

IPv6 엔드포인트로 마이그레이션할 때는 다음 사항을 고려하세요.
+ **점진적 마이그레이션**: 엔드포인트 URL 한 번에 한 애플리케이션씩 업데이트하여 애플리케이션을 점진적으로 마이그레이션할 수 있습니다.
+ **네트워크 호환성**: 마이그레이션하기 전에 네트워크 인프라가 IPv6를 지원하는지 확인합니다.
+ **보안 정책**: 필요한 경우 IPv6 트래픽을 허용하도록 보안 그룹 규칙 및 네트워크 ACL을 업데이트합니다.
+ **모니터링**: IPv6 주소를 처리하도록 모니터링 및 로깅 구성을 업데이트합니다.

**참고**  
**데이터베이스 연결 주소**: 데이터 API에 IPv6 엔드포인트를 사용하는 경우 기본 데이터베이스 연결 및 데이터베이스 로그에 여전히 IPv4 주소가 표시됩니다. 이는 예상되는 동작이며 IPv6 지원 애플리케이션의 기능에 영향을 주지 않습니다.

## IPv6 연결 문제 해결
<a name="data-api.ipv6.troubleshooting"></a>

IPv6 연결에 문제가 있는 경우 다음을 확인하세요.

네트워크 구성  
네트워크가 IPv6를 지원하고 IPv6 라우팅이 올바르게 구성되었는지 확인합니다.

DNS 확인  
DNS 해석기가 듀얼 스택 엔드포인트에 대한 AAAA 레코드를 확인할 수 있는지 확인합니다.

보안 그룹  
필요한 포트(일반적으로 HTTPS의 경우 443)에서 IPv6 트래픽을 허용하도록 보안 그룹 규칙을 업데이트합니다.

클라이언트 라이브러리  
HTTP 클라이언트 라이브러리가 IPv6 및 듀얼 스택 연결을 지원하는지 확인합니다.