아마존 문제 해결 QLDB - 아마존 퀀텀 레저 데이터베이스 (아마존QLDB)

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

아마존 문제 해결 QLDB

중요

지원 종료 알림: 기존 고객은 2025년 7월 31일 지원이 종료될 QLDB 때까지 Amazon을 사용할 수 있습니다. 자세한 내용은 아마존 QLDB 원장을 Amazon Aurora SQL Postgre로 마이그레이션을 참조하십시오.

다음 섹션은 QLDB Amazon을 사용할 때 발생할 수 있는 일반적인 오류의 전체 목록과 이러한 오류를 해결하는 방법에 대한 지침을 제공합니다.

IAM액세스와 관련된 문제 해결 지침은 을 참조하십시오. Amazon QLDB 자격 증명 및 액세스 문제 해결

PartiQL 문 조정에 대한 모범 사례는 쿼리 성능 최적화을 참조하세요.

QLDB드라이버를 사용하여 트랜잭션 실행

이 섹션에는 Amazon QLDB 드라이버를 사용하여 원장에서 PartiQL 트랜잭션을 실행할 때 반환할 수 있는 일반적인 예외가 나열되어 있습니다. 이 기능에 대한 자세한 내용은 드라이버 시작하기을 참조하세요. 드라이버 구성 및 사용에 대한 모범 사례는 드라이버 권장 사항을 참조하세요.

각 예외에는 특정 오류 메시지와 가능한 해결 방법에 대한 간단한 설명 및 제안이 포함됩니다.

CapacityExceededException

메시지: 용량 초과

Amazon은 원장의 처리 용량을 초과했다는 이유로 요청을 QLDB 거부했습니다. QLDB서비스의 상태와 성능을 유지하기 위해 원장당 내부 규모 조정 한도를 적용합니다. 이 한도는 각 개별 요청의 워크로드 크기에 따라 달라집니다. 예를 들어, 인덱스가 아닌 정규화된 쿼리로 인한 테이블 스캔과 같은 비효율적인 데이터 트랜잭션을 수행하는 요청의 경우 워크로드가 증가할 수 있습니다.

요청을 재시도하기 전에 잠시 기다릴 것을 권장합니다. 애플리케이션에서 이 예외가 지속적으로 발생하는 경우 문을 최적화하고 원장에 보내는 요청의 속도와 볼륨을 줄이세요. 명령문 최적화의 예로는 트랜잭션당 더 적은 수의 명령문을 실행하고 테이블 인덱스를 조정하는 경우를 들 수 있습니다. 명령문을 최적화하고 테이블 스캔을 방지하는 방법을 알아보려면 쿼리 성능 최적화을 참조하세요.

또한 최신 버전의 드라이버를 사용하는 것이 좋습니다. QLDB 드라이버에는 지수 백오프 및 Jitter를 사용하여 이와 같은 예외가 발생할 경우 자동으로 재시도하는 기본 재시도 정책이 있습니다. 지수 백오프의 개념은 오류 응답이 연속될 때마다 재시도 간 대기 시간을 점진적으로 늘린다는 것입니다.

InvalidSessionException

메시지: 거래 transactionId 만료되었습니다

트랜잭션이 최대 수명을 초과했습니다. 트랜잭션은 커밋되기 전까지 최대 30초 동안 실행될 수 있습니다. 이 제한 시간이 지나면 트랜잭션에서 수행된 모든 작업이 거부되고 세션이 QLDB 삭제됩니다. 이 제한은 트랜잭션을 시작하고 커밋하거나 취소하지 않기 때문에 클라이언트의 세션 유출을 방지합니다.

이것이 애플리케이션에서 일반적인 예외인 경우, 트랜잭션을 실행하는 데 시간이 너무 오래 걸릴 수 있습니다. 트랜잭션 런타임이 30초 이상 걸리는 경우 문을 최적화하여 트랜잭션 속도를 높이세요. 명령문 최적화의 예로는 트랜잭션당 더 적은 수의 명령문을 실행하고 테이블 인덱스를 조정하는 경우를 들 수 있습니다. 자세한 내용은 쿼리 성능 최적화 단원을 참조하십시오.

InvalidSessionException

메시지: 세션 sessionId 만료되었습니다

QLDB최대 총 수명을 초과하여 세션을 삭제했습니다. QLDB활성 트랜잭션과 상관없이 13~17분 후에 세션을 삭제합니다. 세션은 하드웨어 장애, 네트워크 장애 또는 애플리케이션 재시작과 같은 여러 가지 이유로 손실되거나 손상될 수 있습니다. 따라서 QLDB 클라이언트 소프트웨어가 세션 장애에 대해 복원력을 발휘할 수 있도록 세션에 최대 수명을 적용합니다.

이 예외가 발생하는 경우 새 세션을 획득하고 트랜잭션을 다시 시도할 것을 권장합니다. 또한 응용 프로그램을 대신하여 세션 풀과 상태를 관리하는 최신 버전의 QLDB 드라이버를 사용하는 것이 좋습니다.

InvalidSessionException

메시지: 해당 세션이 없습니다

클라이언트가 존재하지 않는 세션을 QLDB 사용하여 거래를 시도했습니다. 클라이언트가 이전에 존재했던 세션을 사용하고 있다고 가정하면 다음 중 하나로 인해 세션이 더 이상 존재하지 않을 수 있습니다.

  • 세션이 내부 서버 장애 (즉, HTTP 응답 코드 500 오류) 와 관련된 경우 고객이 불확실한 상태의 세션과 거래하도록 허용하는 대신 세션을 완전히 삭제하도록 선택할 QLDB 수 있습니다. 그러면 해당 세션에 대한 모든 재시도가 실패하고 이 오류가 발생합니다.

  • 만료된 세션은 결국 잊어버립니다. QLDB 그런 다음 세션을 계속 사용하려고 하면 초기 InvalidSessionException이 아닌 이 오류가 발생합니다.

이 예외가 발생하는 경우 새 세션을 획득하고 트랜잭션을 다시 시도할 것을 권장합니다. 또한 응용 프로그램을 대신하여 세션 풀과 상태를 관리하는 최신 버전의 QLDB 드라이버를 사용하는 것이 좋습니다.

RateExceededException

메시지: 속도가 초과되었습니다

QLDB호출자의 ID를 기반으로 클라이언트를 제한했습니다. QLDB토큰 버킷 제한 알고리즘을 사용하여 지역별, 계정별로 제한을 적용합니다. QLDB이는 서비스 성능을 높이고 모든 고객이 공평하게 사용할 수 있도록 하기 위한 것입니다. QLDB 예를 들어, StartSessionRequest 작업을 사용하여 많은 수의 동시 세션을 획득하려고 하면 제한이 발생할 수 있습니다.

애플리케이션 상태를 유지하고 추가적인 제한을 완화하기 위해 지수 백오프 및 Jitter를 사용하여 이 예외를 다시 시도할 수 있습니다. 지수 백오프의 개념은 오류 응답이 연속될 때마다 재시도 간 대기 시간을 점진적으로 늘린다는 것입니다. 최신 버전의 QLDB 드라이버를 사용하는 것이 좋습니다. 드라이버에는 지수 백오프 및 Jitter를 사용하여 이와 같은 예외가 발생할 경우 자동으로 재시도하는 기본 재시도 정책이 있습니다.

응용 프로그램의 호출이 계속 제한되는 경우에도 최신 버전의 QLDB 드라이버가 도움이 될 수 있습니다. QLDB StartSessionRequest 드라이버는 여러 트랜잭션에서 재사용되는 세션 풀을 유지 관리하므로 애플리케이션이 수행하는 StartSessionRequest 호출 수를 줄이는데 도움이 될 수 있습니다. API스로틀링 한도 증가를 요청하려면 센터에 문의하세요.AWS Support

LimitExceededException

메시지: 세션 제한을 초과했습니다

원장이 활성 세션 수의 할당량(한도라고도 함)을 초과했습니다. 이 할당량은 아마존의 할당량 및 한도 QLDB에 정의되어 있습니다. 원장의 활성 세션 수는 최종적으로 일정하게 유지되며, 할당량 근처에서 지속적으로 실행되는 원장에서는 이 예외가 주기적으로 발생할 수 있습니다.

애플리케이션의 상태를 유지하려면 이 예외를 다시 시도할 것을 권장합니다. 이 예외를 피하려면 모든 클라이언트에서 단일 원장에 1,500개 이상의 동시 세션을 사용하도록 구성하지 않았는지 확인하세요. 예를 들어 Amazon Java 드라이버의 maxConcurrentTransactions메서드를 사용하여 QLDB 드라이버 인스턴스에서 사용 가능한 최대 세션 수를 구성할 수 있습니다.

QldbClientException

메시지: 스트리밍된 결과는 상위 트랜잭션이 열려 있을 때만 유효합니다

트랜잭션이 종료되었으므로 트랜잭션을 사용하여 결과를 검색할 수 없습니다QLDB. 트랜잭션은 커밋되거나 취소되면 종료됩니다.

이 예외는 클라이언트가 해당 Transaction 개체로 직접 작업하고 트랜잭션을 커밋하거나 QLDB 취소한 후 결과를 검색하려고 할 때 발생합니다. 이 문제를 완화하려면 클라이언트가 트랜잭션을 닫기 전에 데이터를 읽어야 합니다.

저널 데이터 내보내기

이 섹션에는 원장에서 Amazon S3 버킷으로 저널 데이터를 내보낼 때 QLDB 반환될 수 있는 일반적인 예외가 나열되어 있습니다. 이 기능에 대한 자세한 내용은 Amazon에서 저널 데이터 내보내기 QLDB을 참조하세요.

각 예외에는 특정 오류 메시지와 가능한 해결 방법에 대한 간단한 설명 및 제안이 포함됩니다.

AccessDeniedException

메시지: 사용자: userARN PassRole 리소스에서 iam: 을 수행할 권한이 없습니다.roleARN

QLDB서비스에 IAM 역할을 전달할 권한이 없습니다. QLDB모든 저널 내보내기 요청에 대한 역할이 필요하며 이 역할을 전달할 권한이 있어야 QLDB 합니다. 역할은 지정된 Amazon S3 버킷에 대한 쓰기 권한을 제공합니다QLDB.

QLDB서비스의 지정된 IAM 역할 리소스 (qldb.amazonaws.com) 에서 PassRole API 작업을 수행할 권한을 부여하는 IAM 정책을 정의했는지 확인하십시오. 정책 예제는 Amazon의 자격 증명 기반 정책 예제 QLDB을 참조하십시오.

IllegalArgumentException

메시지: S3 구성을 검증하는 중 오류가 QLDB 발생했습니다.errorCode errorMessage

이 오류의 가능한 원인은 제공된 Amazon S3 버킷이 Amazon S3에 존재하지 않기 때문입니다. 또는 지정된 Amazon S3 버킷에 객체를 쓸 수 있는 충분한 권한이 QLDB 없습니다.

내보내기 작업 요청에 제공한 S3 버킷 이름이 정확한지 확인하세요. 버킷 이름 지정에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서버킷 규제 및 제한을 참조하세요.

또한 QLDB 서비스에 권한을 PutObject 부여하고 PutObjectAcl 권한을 부여하는 지정된 버킷의 정책을 정의했는지 확인하십시오 (qldb.amazonaws.com). 자세한 내용은 내보내기 권한을 참조하십시오.

IllegalArgumentException

메시지: S3 구성을 검증하는 동안 Amazon S3에서 예상치 못한 응답이 발생했습니다. S3로부터의 응답: errorCode errorMessage

제공된 Amazon S3 오류 응답으로 인해 제공된 S3 버킷에 저널 내보내기 데이터를 쓰려는 시도가 실패했습니다. 발생 가능한 원인에 대한 자세한 내용은 Amazon Simple Storage Service 사용 설명서 Amazon S3 문제 해결 를 참조하세요.

IllegalArgumentException

메시지: Amazon S3 버킷 접두사는 128자를 초과할 수 없습니다

저널 내보내기 요청에 제공된 접두사가 128자를 초과합니다.

IllegalArgumentException

메시지: 시작 날짜는 종료 날짜보다 이후일 수 없습니다.

둘 다 InclusiveStartTime ISO8601 날짜 및 시간 형식이고 협정 세계시 () ExclusiveEndTime 여야 합니다. UTC

IllegalArgumentException

메시지: 종료일은 미래일 수 없습니다

두 가지 모두 ISO 8601 날짜 InclusiveStartTime 및 시간 형식과 ExclusiveEndTime 단위여야 합니다. UTC

IllegalArgumentException

메시지: 제공된 객체 암호화 설정 (S3EncryptionConfiguration) 이 AWS Key Management Service (AWS KMS) 키와 호환되지 않습니다.

KMSKeyArnNO_ENCRYPTION 또는 SSE_S3ObjectEncryptionType를 제공했습니다. SSE_KMS의 객체 암호화 유형에 고객 관리형 AWS KMS key 만 제공할 수 있습니다. Amazon S3의 서버 측 암호화 옵션에 대한 자세한 내용은 Amazon S3 개발자 안내서서버 측 암호화를 사용한 데이터 보호를 참조하세요.

LimitExceededException

메시지: 동시 실행 저널 내보내기 작업 제한인 2개를 초과했습니다‭ ‬

QLDB동시 저널 내보내기 작업 2개로 기본 제한을 적용합니다.

저널 데이터 스트리밍

이 섹션에는 원장에서 Amazon Kinesis Data Streams로 저널 데이터를 스트리밍할 때 반환될 QLDB 수 있는 일반적인 예외가 나열되어 있습니다. 이 기능에 대한 자세한 내용은 Amazon에서 저널 데이터 스트리밍 QLDB을 참조하세요.

각 예외에는 특정 오류 메시지와 가능한 해결 방법에 대한 간단한 설명 및 제안이 포함됩니다.

AccessDeniedException

메시지: 사용자: userARN PassRole 리소스에서 iam: 을 수행할 권한이 없습니다.roleARN

QLDB서비스에 IAM 역할을 전달할 권한이 없습니다. QLDB모든 저널 스트림 요청에 대한 역할이 필요하며 이 역할을 전달할 권한이 있어야 QLDB 합니다. 역할은 지정된 Amazon Kinesis Data Streams 리소스에 대한 쓰기 권한을 제공합니다QLDB.

QLDB서비스의 지정된 IAM 역할 리소스 (qldb.amazonaws.com) 에서 PassRole API 작업을 수행할 권한을 부여하는 IAM 정책을 정의했는지 확인하십시오. 정책 예제는 Amazon의 자격 증명 기반 정책 예제 QLDB을 참조하십시오.

IllegalArgumentException

메시지: Kinesis Data Streams: Kinesis의 응답을 검증하는 중 오류가 QLDB 발생했습니다.errorCode errorMessage

이 오류의 가능한 원인은 제공된 Kinesis Data Streams 리소스가 존재하지 않기 때문입니다. 또는 지정된 Kinesis 데이터 스트림에 데이터 레코드를 쓸 수 있는 충분한 권한이 QLDB 없습니다.

스트림 요청에서 제공하는 Kinesis 데이터 스트림이 올바른지 확인하세요. 자세한 내용은 Amazon Kinesis Data Streams 개발자 안내서데이터 스트림 생성 및 업데이트를 참조하세요.

또한 지정된 Kinesis 데이터 스트림에 대해 다음 작업에 대한 QLDB 서비스 (qldb.amazonaws.com) 권한을 부여하는 정책을 정의했는지 확인하십시오. 자세한 내용은 스트림 권한 단원을 참조하십시오.

  • kinesis:PutRecord

  • kinesis:PutRecords

  • kinesis:DescribeStream

  • kinesis:ListShards

IllegalArgumentException

메시지: Kinesis 구성을 검증하는 동안 Kinesis 데이터 스트림에서 예상치 못한 응답이 발생했습니다. Kinesis의 응답: errorCode errorMessage

제공된 Kinesis 오류 응답으로 인해 제공된 Kinesis 데이터 스트림에 데이터 레코드를 쓰려는 시도가 실패했습니다. 발생 가능한 원인에 대한 자세한 내용은 Amazon Kinesis Data Streams 개발자 안내서Amazon Kinesis Data Streams 생산자 문제 해결을 참조하세요.

IllegalArgumentException

메시지: 시작 날짜는 종료 날짜보다 이후일 수 없습니다.

둘 다 InclusiveStartTime ISO8601 날짜 및 시간 형식과 협정 세계시 () ExclusiveEndTime 여야 합니다. UTC

IllegalArgumentException

메시지: 종료일은 미래일 수 없습니다

두 가지 모두 ISO 8601 날짜 InclusiveStartTime 및 시간 형식과 ExclusiveEndTime 단위여야 합니다. UTC

LimitExceededException

메시지: Kinesis Data Streams에 대한 동시 실행 저널 스트림 제한인 5개를 초과했습니다‭ ‬

QLDB동시 저널 스트림 5개로 기본 제한을 적용합니다.

저널 데이터 확인

이 섹션에는 원장의 분개 데이터를 검증할 때 QLDB 반환될 수 있는 일반적인 예외가 나열되어 있습니다. 이 기능에 대한 자세한 내용은 아마존에서의 데이터 검증 QLDB을 참조하세요.

각 예외에는 특정 오류 메시지, 오류가 발생할 수 있는 API 작업, 간단한 설명, 가능한 해결 방법에 대한 제안 순서가 포함됩니다.

IllegalArgumentException

메시지: 제공된 Ion 값이 유효하지 않아 구문 분석할 수 없습니다.

API작업: GetDigest, GetBlock, GetRevision

요청을 재시도하기 전에 유효한 Amazon Ion 값을 제공했는지 확인하세요.

IllegalArgumentException

메시지: 제공된 블록 주소가 유효하지 않습니다.

API운영: GetDigest, GetBlock, GetRevision

요청을 다시 시도하기 전에 유효한 블록 주소를 입력했는지 확인하세요. 블록 주소는 strandIdsequenceNo라는 두 개의 필드를 갖는 Amazon Ion 구조입니다.

예: {strandId:"BlFTjlSXze9BIh1KOszcE3",sequenceNo:14}

IllegalArgumentException

메시지: 제공된 다이제스트 팁 주소의 시퀀스 번호가 스트랜드의 최근 커밋된 레코드를 벗어났습니다.

API운영: GetDigest, GetBlock, GetRevision

제공하는 다이제스트 팁 주소의 시퀀스 번호는 저널 스트랜드의 최근 커밋된 레코드의 시퀀스 번호보다 작거나 같아야 합니다. 요청을 다시 시도하기 전에 유효한 시퀀스 번호가 있는 다이제스트 팁 주소를 제공해야 합니다.

IllegalArgumentException

메시지: 제공된 블록 주소의 스트랜드 ID가 유효하지 않습니다.

API운영: GetDigest, GetBlock, GetRevision

제공하는 블록 주소에는 저널의 스트랜드 ID와 일치하는 스트랜드 ID가 있어야 합니다. 요청을 다시 시도하기 전에 유효한 스트랜드 ID를 가진 블록 주소를 제공해야 합니다.

IllegalArgumentException

메시지: 제공된 블록 주소의 시퀀스 번호가 스트랜드의 최신 커밋 레코드를 벗어났습니다.

API운영: GetBlock, GetRevision

제공하는 블록 주소는 스트랜드의 최근 커밋된 레코드의 시퀀스 번호보다 작거나 같은 시퀀스 번호를 가져야 합니다. 요청을 재시도하기 전에 유효한 시퀀스 번호가 있는 블록 주소를 제공해야 합니다.

IllegalArgumentException

메시지: 제공된 블록 주소의 스트랜드 ID는 제공된 다이제스트 팁 주소의 스트랜드 ID와 일치해야 합니다.

API운영: GetBlock, GetRevision

제공한 다이제스트와 동일한 저널 스트랜드에 문서 개정 또는 블록이 존재하는 경우에만 문서 수정 또는 차단을 확인할 수 있습니다.

IllegalArgumentException

메시지: 제공된 블록 주소의 시퀀스 번호가 스트랜드의 최신 커밋 레코드를 벗어났습니다.

API운영: GetBlock, GetRevision

제공한 다이제스트에 포함된 경우에만 문서 수정 또는 차단을 확인할 수 있습니다. 즉, 다이제스트 팁 주소보다 먼저 저널에 커밋되었다는 뜻입니다.

IllegalArgumentException

메시지: 지정한 블록 주소의 블록에서 제공된 문서 ID를 찾을 수 없습니다.

API작업: GetRevision

제공하는 문서 ID는 입력한 블록 주소에 있어야 합니다. 요청을 재시도하기 전에 이 두 파라미터가 일치하는지 확인하세요.