

# Amazon RDS Data API 문제 해결
<a name="data-api.troubleshooting"></a>

공통 오류 메시지로 제목이 지정된 다음 섹션은 Amazon RDS Data API(Data API)를 사용하면서 발생하는 문제를 해결하는 데 유용합니다.

**Topics**
+ [트랜잭션 <transaction\$1ID>을 찾을 수 없음](#data-api.troubleshooting.tran-id-not-found)
+ [쿼리 패킷이 너무 큽니다](#data-api.troubleshooting.packet-too-large)
+ [데이터베이스 응답이 크기 제한을 초과했습니다](#data-api.troubleshooting.response-size-too-large)
+ [HttpEndpoint가 클러스터 <cluster\$1ID>에서 활성화되지 않음](#data-api.troubleshooting.http-endpoint-not-enabled)
+ [DatabaseErrorException: 트랜잭션이 여전히 쿼리 실행 중](#data-api.troubleshooting.txn-concurrent-requests-rejected)
+ [지원되지 않는 결과 예외](#data-api.troubleshooting.unsupported-result)
+ [다중 문은 지원되지 않음](#data-api.troubleshooting.multi-statements)
+ [스키마 파라미터는 지원되지 않음](#data-api.troubleshooting.schema-parameter)
+ [IPv6 연결 문제](#data-api.troubleshooting.ipv6-connectivity)

## 트랜잭션 <transaction\$1ID>을 찾을 수 없음
<a name="data-api.troubleshooting.tran-id-not-found"></a>

위 오류 메시지는 데이터 API 호출 시 지정한 트랜잭션 ID를 찾을 수 없다는 것을 의미합니다. 이러한 문제가 발생하는 원인이 오류 메시지에 추가되며, 다음 중 한 가지로 표시됩니다.
+ 트랜잭션이 만료될 수 있습니다.

  각 트랜잭션 호출은 지난 호출 이후 3분 이내에 실행되어야 합니다.

  지정된 트랜잭션 ID가 [BeginTransaction](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_BeginTransaction.html) 호출에 의해 생성되지 않았을 수도 있습니다. 호출 시 유효한 트랜잭션 ID를 지정해야 합니다.
+ 하나의 이전 호출로 인해 트랜잭션이 종료되었습니다.

  `CommitTransaction` 또는 `RollbackTransaction` 호출에 의해 트랜잭션이 이미 종료되었습니다.
+ 이전 호출의 오류로 인해 트랜잭션이 중단되었습니다.

  이전 호출에서 예외가 발생했는지 확인합니다.

트랜잭션 실행에 대한 자세한 내용은 [Amazon RDS Data API 직접 호출](data-api.calling.md) 섹션을 참조하세요.

## 쿼리 패킷이 너무 큽니다
<a name="data-api.troubleshooting.packet-too-large"></a>

위 오류 메시지는 행마다 반환되는 결과 집합이 너무 크다는 것을 의미합니다. 데이터 API는 데이터베이스에서 반환되는 결과 집합에서 각 행의 크기를 64KB로 제한합니다.

이 문제를 해결하려면 결과 집합의 각 행마다 크기를 64KB 이하로 유지해야 합니다.

## 데이터베이스 응답이 크기 제한을 초과했습니다
<a name="data-api.troubleshooting.response-size-too-large"></a>

위 오류 메시지는 데이터베이스에서 반환되는 결과 집합의 크기가 너무 크다는 것을 의미합니다. Data API는 데이터베이스에서 반환되는 결과 집합의 크기를 1MiB로 제한합니다.

이러한 문제를 해결하려면 데이터 API 호출 시 반환되는 데이터 크기를 1MiB 이하로 유지해야 합니다. 반환해야 하는 결과 집합의 크기가 1MiB보다 크면 쿼리에서 다수의 [https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html](https://docs.aws.amazon.com/rdsdataservice/latest/APIReference/API_ExecuteStatement.html) 호출을 `LIMIT` 절과 함께 사용할 수 있습니다.

`LIMIT` 절에 대한 자세한 내용은 MySQL 설명서에서 [SELECT 구문](https://dev.mysql.com/doc/refman/8.0/en/select.html)을 참조하세요.

## HttpEndpoint가 클러스터 <cluster\$1ID>에서 활성화되지 않음
<a name="data-api.troubleshooting.http-endpoint-not-enabled"></a>

이 문제의 잠재적인 원인은 다음과 같습니다.
+ Aurora DB 클러스터는 데이터 API를 지원하지 않습니다. RDS 데이터 API가 지원하는 DB 클러스터 유형에 대한 자세한 내용은 [Amazon RDS Data API의 리전 및 버전 가용성](data-api.regions.md) 섹션을 참조하세요.
+ Aurora DB 클러스터에서 데이터 API가 활성화되어 있지 않습니다. Aurora DB 클러스터에서 데이터 API를 사용하려면 DB 클러스터에서 데이터 API를 먼저 활성화해야 합니다. 데이터 API 활성화에 대한 자세한 내용은 [Amazon RDS Data API 활성화](data-api.enabling.md) 섹션을 참조하세요.
+ 데이터 API가 활성화된 후 DB 클러스터의 이름이 바뀌었습니다. 이 경우 해당 클러스터에 대한 데이터 API를 끄고 다시 활성화하세요.
+ 지정한 ARN이 클러스터의 ARN과 정확하게 일치하지 않습니다. 다른 소스에서 반환되었거나 프로그램 논리로 구성된 ARN이 클러스터의 ARN과 정확히 일치하는지 확인합니다. 예를 들어 사용하는 ARN에서 모든 영문자의 대소문자가 올바른지 확인하세요.

## DatabaseErrorException: 트랜잭션이 여전히 쿼리 실행 중
<a name="data-api.troubleshooting.txn-concurrent-requests-rejected"></a>

 애플리케이션이 트랜잭션 ID로 요청을 보내고 해당 트랜잭션이 현재 다른 요청을 처리 중인 경우 데이터 API는 이 오류를 애플리케이션에 즉시 반환합니다. 이 조건은 애플리케이션이 Javascript의 'promises'와 같은 메커니즘을 사용하여 비동기식 요청을 하는 경우 발생할 수 있습니다.

 이 문제를 해결하려면 이전 요청이 완료될 때까지 기다린 다음 요청을 다시 시도하세요. 오류가 더 이상 발생하지 않거나 애플리케이션에 몇 가지 다른 오류가 수신될 때까지 계속 재시도를 할 수 있습니다.

 이 조건은 Aurora Serverless v2용 데이터 API 및 프로비저닝된 인스턴스에서 발생할 수 있습니다. Aurora Serverless v1용 데이터 API에서 동일한 트랜잭션 ID에 대한 후속 요청은 이전 요청이 완료될 때까지 자동으로 대기합니다. 그러나 이전 요청이 너무 오래 걸려서 이전 동작에 제한 시간 초과가 발생할 수 있습니다. 동시 요청을 하는 이전 데이터 API 애플리케이션을 이식하는 경우 예외 처리 로직을 수정하여 이 새로운 종류의 오류를 처리하세요.

## 지원되지 않는 결과 예외
<a name="data-api.troubleshooting.unsupported-result"></a>

데이터 API가 모든 데이터 유형을 지원하는 것은 아닙니다. 이 오류는 지원되지 않는 데이터 유형을 반환하는 쿼리를 실행할 때 발생합니다.

이 문제를 해결하려면 지원되지 않는 데이터 유형을 `TEXT`로 캐스팅합니다. 예제:

```
SELECT custom_type::TEXT FROM my_table;
-- OR
SELECT CAST(custom_type AS TEXT) FROM my_table;
```

## 다중 문은 지원되지 않음
<a name="data-api.troubleshooting.multi-statements"></a>

Aurora Serverless v2 및 프로비저닝된 클러스터용 데이터 API에서는 다중 문이 지원되지 않습니다. 단일 API 직접 호출에서 다중 문을 실행하려고 하면 이 오류가 발생합니다.

다중 문을 실행하려면 별도의 `ExecuteStatement` API 직접 호출을 사용하거나 배치 처리를 위해 `BatchExecuteStatement` API를 사용합니다.

## 스키마 파라미터는 지원되지 않음
<a name="data-api.troubleshooting.schema-parameter"></a>

Aurora Serverless v1은 스키마 파라미터를 자동으로 무시합니다. 그러나 Aurora Serverless v2 및 프로비저닝된 클러스터는 스키마 파라미터를 포함하는 API 직접 호출을 명시적으로 거부합니다.

이 문제를 해결하려면 Aurora Serverless v2 또는 프로비저닝된 클러스터를 사용할 때 데이터 API에 대한 모든 직접 호출에서 스키마 파라미터를 제거합니다.

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

IPv6 엔드포인트를 사용하여 데이터 API에 연결할 때 문제가 발생하면 다음과 같은 잠재적 원인을 확인하세요.
+ **네트워크가 IPv6를 지원하지 않음**: 네트워크 인프라가 IPv6를 지원하고 IPv6 라우팅이 올바르게 구성되었는지 확인합니다.
+ **DNS 해결 문제**: DNS 해석기가 듀얼 스택 엔드포인트(예: `rds-data.us-east-1.api.aws`)에 대한 AAAA 레코드를 해결할 수 있는지 확인합니다.
+ **보안 그룹 구성**: 포트 443(HTTPS)에서 IPv6 트래픽을 허용하도록 보안 그룹 규칙을 업데이트합니다. IPv6 CIDR 블록에 대한 규칙을 추가합니다(예: 모든 IPv6 주소에 대해 `::/0`).
+ **네트워크 ACL 구성**: 네트워크 ACL이 필요한 포트에서 IPv6 트래픽을 허용하는지 확인합니다.
+ **클라이언트 라이브러리 호환성**: HTTP 클라이언트 라이브러리 및 AWS SDK를 지원하는지 확인합니다.
+ **VPC 엔드포인트 구성**: PrivateLink를 사용하는 경우 VPC 엔드포인트가 IPv6를 지원하도록 구성되어 있고 연결된 서브넷에 IPv6 CIDR 블록이 할당되어 있는지 확인합니다.

IPv6 연결 문제 해결:

1. IPv4 전용 엔드포인트(`.amazonaws.com`)를 사용하여 연결을 테스트하여 문제가 IPv6에만 해당하는지 확인합니다.

1. 네트워크 진단 도구를 사용하여 듀얼 스택 엔드포인트에 대한 IPv6 연결을 확인합니다.

1. IPv6 엔드포인트를 사용할 때 CloudTrail 로그에 인증 또는 권한 부여 오류가 있는지 확인합니다.

1. 애플리케이션이 새 듀얼 스택 엔드포인트 URL을 사용하도록 올바르게 구성되어 있는지 확인합니다.