Notice
Recent Posts
Recent Comments
Link
투케이2K
339. (TWOK/ERROR) [AWS] ValidationException : Query condition missed key schema element PartitionKey 본문
투케이2K 에러관리
339. (TWOK/ERROR) [AWS] ValidationException : Query condition missed key schema element PartitionKey
투케이2K 2025. 12. 8. 20:07728x90
[환경 설정 및 설명]
프로그램 : AWS
설 명 : [AWS] ValidationException : Query condition missed key schema element PartitionKey
[설 명]
--------------------------------------------------------------------------
[개발 및 테스트 환경]
--------------------------------------------------------------------------
- 제목 : [AWS] validation error detected: Value at 'tableName' failed to satisfy constraint
- 테스트 환경 : AWS / Database / DynamoDB / Table / Query
- 사전) DynamoDB 간단 설명 :
>> Aws DynamoDB 는 모든 규모에서 10밀리초 미만의 성능을 제공하는 서버리스, NoSQL, 완전관리형 데이터베이스입니다 (서버리스 NoSQL 데이터베이스 서비스)
>> Aws DynamoDB 는 규모와 관계없이 일관된 성능이 필요한 운영 워크로드에 맞게 특별히 구축되고 최적화되었습니다.
>> Aws DynamoDB 특징 :
- Serverless (서버리스) : 서버를 프로비저닝하거나 소프트웨어를 패치, 관리, 설치, 유지 보수 또는 운영할 필요가 없으며, 가동 중지가 발생하지 않는 유지 관리를 제공합니다
- NoSQL :
$ 기존의 관계형 데이터베이스보다 향상된 성능, 확장성, 관리성 및 유연성을 제공하도록 특별히 구축되었습니다
$ 다양한 사용 사례를 지원하기 위해 DynamoDB 는 키-값 및 문서 데이터 모델을 모두 지원합니다
- 완전관리형 :
$ DynamoDB 는 설정, 구성, 유지 관리, 고가용성, 하드웨어 프로비저닝, 보안, 백업, 모니터링 등을 처리하며 테이블을 생성할 때 프로덕션 워크로드에 즉시 사용할 수 있습니다.
$ 또한, 업그레이드가 필요하지 않고 가동 중지가 발생하지 않으면서 가용성, 신뢰성, 성능, 보안 및 기능을 지속적으로 개선합니다
- 규모를 따지지 않는 한 자릿수 밀리초의 성능 :
$ DynamoDB 는 모든 규모에서 10밀리초 미만의 성능을 제공하여 관계형 데이터베이스의 성능과 확장성을 개선하기 위해 특별히 개발되었습니다.
$ DynamoDB 는 고성능 워크로드에 최적화되어 있으며 효율적인 데이터베이스 사용을 장려하는 API를 제공합니다 (JOIN 작업과 같이 규모에 비해 비효율적이고 성능이 떨어지는 기능은 생략됩니다)
--------------------------------------------------------------------------
--------------------------------------------------------------------------
[에러 원인]
--------------------------------------------------------------------------
1. 클라이언트 (웹, 모바일) 에서 AWS DynamoDB 다이나모 디비 특정 테이블 Query 방식 조회 요청 시 테이블 파티션 키 ( PartitionKey ) 정보가 올바르지 않아 발생하는 이슈
2. 에러 발생 로그 전문 :
>> ValidationException : Query condition missed key schema element PartitionKey
3. 자바스크립트 AWS DynamoDB 조회 간단 예시 코드 :
# 웹 CDN 라이브러리 선언
<script src="https://code.jquery.com/jquery-latest.min.js"></script>
<script src="https://sdk.amazonaws.com/js/aws-sdk-2.1416.0.min.js"></script>
# 웹 스크립트 소스 코드
const tableName = "iot_device_provisioning"; // 조회할 테이블 명칭
const partitionKey = "id"; // 파티션 키 명칭 : 테이블 당 하나
const partitionValue = "TWOK1234"; // 파티션 조회 값
const awsDB = new AWS.DynamoDB.DocumentClient();
const param = {
TableName: tableName, // 테이블 명칭
KeyConditionExpression: '#pk = :pkVal',
ExpressionAttributeNames: { '#pk': partitionKey }, // ✅ 파티션 키명
ExpressionAttributeValues: { ':pkVal': partitionValue }, // ✅ 조회할 파티션 value
Limit: 100 // 한 페이지에 읽을 항목 수 (DynamoDB가 더 적게 줄 수 있음)
};
const [err, res] = await awsDB.query( param ).promise()
.then(data => [null, data])
.catch(error => [error, null]);
if (err) {
console.error("[table query] : [Error] : ", err);
} else {
console.log("[table query] : [Success]");
}
--------------------------------------------------------------------------
--------------------------------------------------------------------------
[해결 방법]
--------------------------------------------------------------------------
1. 클라이언트에서 awsDB.query API 호출 후 err 발생 시 err.name 값 및 err.message 값 체크 후
ValidationException : Query condition missed key schema element PartitionKey 발생 인 경우
테이블 및 파티션 키 정보를 확인해 달라는 에러 팝업 메시지 추가
2. err.name 값 및 err.message 값 체크 예시 코드 :
if (err.name == "ValidationException" && err.message.indexOf("Query condition missed key schema element") >= 0){
resMessage += "<pre></pre>"
resMessage += "\n" + "[Output] ErrorReason : AWS 리전 정보에 생성 된 테이블에 매핑 된 파티션 키 (PartitionKey) 정보를 찾을 수 없습니다. (테이블 및 파티션 키 정보를 다시 확인해주세요.)" + "\n";
}
--------------------------------------------------------------------------
--------------------------------------------------------------------------
[참고 사이트]
--------------------------------------------------------------------------
[Aws NoSQL DynamoDB Service] Aws Dynamo DB 다이나모 디비 개념 및 설명 정리
https://kkh0977.tistory.com/7627
https://blog.naver.com/kkh0977/223734725747?trackingCode=blog_bloghome_searchlist
[Aws NoSQL DynamoDB Service] AWS 콘솔에서 다이나모 데이터베이스 ( Dynamo DB ) 테이블에 저장 된 데이터 조회 방법
https://blog.naver.com/kkh0977/223933617765?trackingCode=blog_bloghome_searchlist
[AWS] [Lambda] 런타임 Python 3.13 - boto3 모듈 사용해 다이나모 DB ( DynamoDB ) 테이블 목록 조회
https://blog.naver.com/kkh0977/223990664323
[간단 소스] 자바스크립트 AWS DynamoDB 다이나모 디비 테이블 파티션키 (PartitionKey) 지정 스캔 수행 - table query
https://blog.naver.com/kkh0977/224098886906
--------------------------------------------------------------------------
728x90
반응형
'투케이2K 에러관리' 카테고리의 다른 글
Comments
