

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 搭配 Amazon RDS 資料 API 使用 IPv6
<a name="data-api.ipv6"></a>

Amazon RDS 資料 API 透過雙堆疊端點支援 IPv6 連線。這可讓您使用 IPv6 地址連線至資料 API，同時保持與 IPv4 的回溯相容性。

## 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 SDKs 會自動建構適當的`api.aws`端點，而不需要您手動指定端點 URLs。
+ **使用明確的端點 URLs**：直接在 AWS CLI 命令或 SDK 組態中指定雙堆疊端點 URL，如以下範例所示。

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

透過指定端點 URL，將 AWS CLI 設定為使用 IPv6 端點：

對於 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 SDKs使用雙堆疊端點：

------
#### [ 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);
```

------

## AWS PrivateLink 搭配 IPv6 使用
<a name="data-api.ipv6.privatelink"></a>

您可以為支援 VPC 內 IPv6 連線的資料 API 建立 VPC 端點。如需為資料 API 建立 VPC 端點的詳細指示，請參閱[建立 Amazon RDS 資料 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。
+ **安全政策**：視需要更新安全群組規則和網路 ACL，以允許 IPv6 流量。
+ **監控**：更新監控和記錄組態以處理 IPv6 地址。

**注意**  
**資料庫連線地址**：使用資料 API 的 IPv6 端點時，基礎資料庫連線和資料庫日誌仍會顯示 IPv4 地址。這是預期的行為，不會影響已啟用 IPv6 的應用程式功能。

## 針對 IPv6 連線進行疑難排解
<a name="data-api.ipv6.troubleshooting"></a>

如果您遇到 IPv6 連線問題，請檢查下列項目：

網路組態  
確認網路支援 IPv6 且 IPv6 路由的設定都正確。

DNS 解析  
確保 DNS 解析程式可以解析雙堆疊端點的 AAAA 記錄。

Security groups (安全群組)  
更新安全群組規則，以允許在必要連接埠的 IPv6 流量 (HTTPS 通常是 443)。

用戶端程式庫  
確認 HTTP 用戶端程式庫支援 IPv6 和雙堆疊連線。