투케이2K

338. (TWOK/ERROR) [AWS] validation error detected: Value at 'tableName' failed to satisfy constraint 본문

투케이2K 에러관리

338. (TWOK/ERROR) [AWS] validation error detected: Value at 'tableName' failed to satisfy constraint

투케이2K 2025. 12. 5. 09:36
728x90

[환경 설정 및 설명]

프로그램 : AWS

설 명 : [AWS] validation error detected: Value at 'tableName' failed to satisfy constraint

 

[설 명]

 

--------------------------------------------------------------------------
[개발 및 테스트 환경]
--------------------------------------------------------------------------

- 제목 : [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 방식 조회 요청 시 테이블 명칭이 올바르지 않아 발생하는 이슈


2. AWS DynamoDB 에 검색하려는 해당 테이블 명칭이 없어서 발생하는 이슈


3. 에러 발생 로그 전문 : 

[Output] ErrorName : ValidationException
[Output] ErrorMessage : 1 validation error detected: Value 'testTable' at 'tableName' failed to satisfy constraint: Member must have length greater than or equal to 3


4. 자바스크립트 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( param ).promise() 요청 후 err 에러 발생 콜백에서 ValidationException 및 'tableName' failed to satisfy constraint 에러 메시지 캡쳐 수행


2. alert 팝업창을 표시해 사용자에게 잘못 된 정보 조회 요청 상황 알림 및 에러 발생 로그 DB 에 저장 수행

  >> ex :  Error - 테이블 조회에 사용 된 명칭이 올바르지 않습니다. 테이블 존재 유무 확인 후 query scan 을 수행해주세요.

--------------------------------------------------------------------------





--------------------------------------------------------------------------
[참고 사이트]
--------------------------------------------------------------------------

[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

--------------------------------------------------------------------------
 
728x90
반응형
Comments