

# Amazon RDS Data API での IPv6 の使用
<a name="data-api.ipv6"></a>

Amazon RDS Data API は、デュアルスタックエンドポイントを介した IPv6 接続をサポートしています。これにより、IPv4 との下位互換性を維持しながら、IPv6 アドレスを使用して Data API に接続できます。

## IPv6 エンドポイントのサポート
<a name="data-api.ipv6.endpoints"></a>

Data 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>

Data API で IPv6 を使用するには、新しいデュアルスタックエンドポイントを使用するようにアプリケーションを更新します。アプリケーションは、使用可能な場合は IPv6 を自動的に使用し、使用できない場合は IPv4 にフォールバックします。

VPC で IPv6 を設定する一般的なガイダンスについては、「*Amazon VPC ユーザーガイド*」の「[IPv6 への移行](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html)」を参照してください。

IPv6 エンドポイントは、次の 2 つの方法で設定できます。
+ **環境変数の使用**: IPv6 環境で `AWS_USE_DUALSTACK_ENDPOINT=true` を設定します。AWS CLI および AWS SDK では、エンドポイント URL を手動で指定する必要はなく、適切な `api.aws` エンドポイントが自動で構築されます。
+ **明示的 URL の使用**: 以下の例に示すように、AWS CLI コマンドまたは SDK 設定でデュアルスタックのエンドポイント URL を直接指定します。

### AWS CLI の設定
<a name="data-api.ipv6.cli"></a>

エンドポイント URL を指定して、IPv6 エンドポイントを使用するように AWS CLI を設定します。

Linux、macOS、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 接続をサポートする Data API の VPC エンドポイントを作成できます。Data API の VPC エンドポイントを作成する詳細な手順については、「[Amazon RDS Data API (AWS PrivateLink) の Amazon VPC エンドポイントの作成](data-api.vpc-endpoint.md)」を参照してください。

IPv6 サポート用の VPC エンドポイントを作成するときは、次の点を確認してください。
+ VPC とサブネットは、IPv6 をサポートするように設定されています
+ セキュリティグループは、必要なポートで IPv6 トラフィックを許可します (通常、HTTPS の場合は 443)
+ ネットワーク ACL は IPv6 トラフィックを許可するように設定されています

## 移行に関する考慮事項
<a name="data-api.ipv6.migration"></a>

IPv6 エンドポイントに移行するときは、次の点を考慮してください。
+ **段階的な移行**: エンドポイント URL を一度に 1 つのアプリケーションごとに更新することで、アプリケーションを段階的に移行できます。
+ **ネットワークの互換性**: 移行する前に、ネットワークインフラストラクチャが IPv6 をサポートしていることを確認します。
+ **セキュリティポリシー**: 必要に応じて、セキュリティグループルールとネットワーク ACL を更新して IPv6 トラフィックを許可します。
+ **モニタリング**: IPv6 アドレスを処理するようにモニタリングとログ記録の設定を更新します。

**注記**  
**データベース接続アドレス**: Data API に IPv6 エンドポイントを使用する場合、基盤となるデータベース接続とデータベースログには IPv4 アドレスが引き続き表示されます。これは想定される動作であり、IPv6 対応アプリケーションの機能には影響しません。

## IPv6 接続のトラブルシューティング
<a name="data-api.ipv6.troubleshooting"></a>

IPv6 接続に問題がある場合は、以下を確認してください。

ネットワーク構成  
ネットワークが IPv6 をサポートし、IPv6 ルーティングが正しく設定されていることを確認します。

DNS 解決  
DNS リゾルバーがデュアルスタックエンドポイントの AAAA レコードを解決できることを確認します。

セキュリティグループ  
セキュリティグループのルールを更新して、必要なポート (通常、HTTPS の場合は 443) で IPv6 トラフィックを許可します。

クライアントライブラリ  
HTTP クライアントライブラリが IPv6 およびデュアルスタック接続をサポートしていることを確認します。