Amazon RDS Data API 문제 해결
공통 오류 메시지로 제목이 지정된 다음 섹션은 Amazon RDS Data API(Data API)를 사용하면서 발생하는 문제를 해결하는 데 유용합니다.
주제
트랜잭션 <transaction_ID>을 찾을 수 없음
위 오류 메시지는 데이터 API 호출 시 지정한 트랜잭션 ID를 찾을 수 없다는 것을 의미합니다. 이러한 문제가 발생하는 원인이 오류 메시지에 추가되며, 다음 중 한 가지로 표시됩니다.
-
트랜잭션이 만료될 수 있습니다.
각 트랜잭션 호출은 지난 호출 이후 3분 이내에 실행되어야 합니다.
지정된 트랜잭션 ID가 BeginTransaction 호출에 의해 생성되지 않았을 수도 있습니다. 호출 시 유효한 트랜잭션 ID를 지정해야 합니다.
-
하나의 이전 호출로 인해 트랜잭션이 종료되었습니다.
CommitTransaction
또는RollbackTransaction
호출에 의해 트랜잭션이 이미 종료되었습니다. -
이전 호출의 오류로 인해 트랜잭션이 중단되었습니다.
이전 호출에서 예외가 발생했는지 확인합니다.
트랜잭션 실행에 대한 자세한 내용은 Amazon RDS Data API 직접 호출 단원을 참조하세요.
쿼리 패킷이 너무 큽니다
위 오류 메시지는 행마다 반환되는 결과 집합이 너무 크다는 것을 의미합니다. 데이터 API는 데이터베이스에서 반환되는 결과 집합에서 각 행의 크기를 64KB로 제한합니다.
이 문제를 해결하려면 결과 집합의 각 행마다 크기를 64KB 이하로 유지해야 합니다.
데이터베이스 응답이 크기 제한을 초과했습니다
위 오류 메시지는 데이터베이스에서 반환되는 결과 집합의 크기가 너무 크다는 것을 의미합니다. Data API는 데이터베이스에서 반환되는 결과 집합의 크기를 1MiB로 제한합니다.
이러한 문제를 해결하려면 데이터 API 호출 시 반환되는 데이터 크기를 1MiB 이하로 유지해야 합니다. 반환해야 하는 결과 집합의 크기가 1MiB보다 크면 쿼리에서 다수의 ExecuteStatement
호출을 LIMIT
절과 함께 사용할 수 있습니다.
LIMIT
절에 대한 자세한 내용은 MySQL 설명서에서 SELECT 구문
HttpEndpoint가 클러스터 <cluster_ID>에서 활성화되지 않음
이 문제의 잠재적인 원인은 다음과 같습니다.
-
Aurora DB 클러스터는 데이터 API를 지원하지 않습니다. RDS 데이터 API가 지원하는 DB 클러스터 유형에 대한 자세한 내용은 Amazon RDS Data API의 리전 및 버전 가용성 섹션을 참조하세요.
-
Aurora DB 클러스터에서 데이터 API가 활성화되어 있지 않습니다. Aurora DB 클러스터에서 데이터 API를 사용하려면 DB 클러스터에서 데이터 API를 먼저 활성화해야 합니다. 데이터 API 활성화에 대한 자세한 내용은 Amazon RDS Data API 활성화 섹션을 참조하세요.
-
데이터 API가 활성화된 후 DB 클러스터의 이름이 바뀌었습니다. 이 경우 해당 클러스터에 대한 데이터 API를 끄고 다시 활성화하세요.
-
지정한 ARN이 클러스터의 ARN과 정확하게 일치하지 않습니다. 다른 소스에서 반환되었거나 프로그램 논리로 구성된 ARN이 클러스터의 ARN과 정확히 일치하는지 확인합니다. 예를 들어 사용하는 ARN에서 모든 영문자의 대소문자가 올바른지 확인하세요.
DatabaseErrorException: 트랜잭션이 여전히 쿼리 실행 중
애플리케이션이 트랜잭션 ID로 요청을 보내고 해당 트랜잭션이 현재 다른 요청을 처리 중인 경우 데이터 API는 이 오류를 애플리케이션에 즉시 반환합니다. 이 조건은 애플리케이션이 Javascript의 'promises'와 같은 메커니즘을 사용하여 비동기식 요청을 하는 경우 발생할 수 있습니다.
이 문제를 해결하려면 이전 요청이 완료될 때까지 기다린 다음 요청을 다시 시도하세요. 오류가 더 이상 발생하지 않거나 애플리케이션에 몇 가지 다른 오류가 수신될 때까지 계속 재시도를 할 수 있습니다.
이 조건은 Aurora Serverless v2용 데이터 API 및 프로비저닝된 인스턴스에서 발생할 수 있습니다. Aurora Serverless v1용 데이터 API에서 동일한 트랜잭션 ID에 대한 후속 요청은 이전 요청이 완료될 때까지 자동으로 대기합니다. 그러나 이전 요청이 너무 오래 걸려서 이전 동작에 제한 시간 초과가 발생할 수 있습니다. 동시 요청을 하는 이전 데이터 API 애플리케이션을 이식하는 경우 예외 처리 로직을 수정하여 이 새로운 종류의 오류를 처리하세요.
지원되지 않는 결과 예외
데이터 API가 모든 데이터 유형을 지원하는 것은 아닙니다. 이 오류는 지원되지 않는 데이터 유형을 반환하는 쿼리를 실행할 때 발생합니다.
이 문제를 해결하려면 지원되지 않는 데이터 유형을 TEXT
로 캐스팅합니다. 예시:
SELECT custom_type::TEXT FROM my_table; -- OR SELECT CAST(custom_type AS TEXT) FROM my_table;
다중 문은 지원되지 않음
Aurora Serverless v2 및 프로비저닝된 클러스터용 데이터 API에서는 다중 문이 지원되지 않습니다. 단일 API 직접 호출에서 다중 문을 실행하려고 하면 이 오류가 발생합니다.
다중 문을 실행하려면 별도의 ExecuteStatement
API 직접 호출을 사용하거나 배치 처리를 위해 BatchExecuteStatement
API를 사용합니다.
스키마 파라미터는 지원되지 않음
Aurora Serverless v1은 스키마 파라미터를 자동으로 무시합니다. 그러나 Aurora Serverless v2 및 프로비저닝된 클러스터는 스키마 파라미터를 포함하는 API 직접 호출을 명시적으로 거부합니다.
이 문제를 해결하려면 Aurora Serverless v2 또는 프로비저닝된 클러스터를 사용할 때 데이터 API에 대한 모든 직접 호출에서 스키마 파라미터를 제거합니다.