DynamoDB — 표현식은 비워둘 수 없습니다.

TL;DR — 표현식 매개변수(FilterExpression, KeyConditionExpression, ProjectionExpression, UpdateExpression 또는 ConditionExpression)를 빈 문자열 ""로 전달했습니다. DynamoDB에서는 표현식 매개변수가 비어 있지 않은 유효한 표현식이거나 완전히 없어야 합니다. 빈 문자열은 유효하지 않습니다. 실제로 표현식이 있는 경우에만 매개변수를 포함하세요. 그렇지 않으면 키를 생략하세요.

무엇을 의미하는가

ValidationException: Invalid FilterExpression: The expression can not be empty;
ValidationException: Invalid KeyConditionExpression: The expression can not be empty;

DynamoDB는 빈 문자열을 생략된 파라미터와 다르게 처리합니다. FilterExpression을 생략하면 "필터 없음"을 의미합니다. FilterExpression: ""을 전달한다는 것은 "여기에 필터가 있습니다"라는 의미입니다. 그런 다음 구문 분석할 항목이 없으므로 유효성 검사가 실패합니다. 모든 표현식 매개변수에도 동일하게 적용됩니다.

왜 발생하는가

  • 조건부로 작성된 매개변수는 항상 설정됨 — 코드는 항상 요청 객체에 FilterExpression를 첨부한 다음, 필터가 선택되지 않은 경우 ""를 그대로 둡니다.
  • 필터 목록이 비어 있을 때 키를 삭제하는 대신 빈 표현식 문자열을 내보내는 도우미/ORM/커넥터입니다.
  • 아무것도 생성하지 않는 문자열 연결 — 빈 조건 배열을 결합하면 ""가 생성됩니다.
  • 잘린 콘텐츠 — 자리 표시자가 제거되어 빈 표현식이 남습니다.

어떻게 해결하는가

  1. 비어 있지 않은 경우에만 매개변수를 설정하십시오. 조건부로 params 객체를 구축하십시오: if (filter) params.FilterExpression = filter;""를 할당하지 마십시오.
  2. 호출 전에 빈 키 삭제 — 요청에서 값이 빈/공백 문자열인 표현식 속성을 제거합니다.
  3. 빌더를 보호하세요 — 조건 목록이 비어 있으면 표현식을 전혀 첨부하지 마세요.
  4. 독립적이라는 점을 기억하세요ExpressionAttributeNames/Values는 이를 사용하는 표현이 없을 때 생략되어야 합니다(아무것도 참조하지 않는 {} 아님).
  5. 전체 테이블 읽기의 경우 FilterExpression가 없는 Scan가 정확합니다. 빈 매개변수를 전달하는 대신 매개변수를 생략하세요.

DynoTable에서 실행

DynoTable은 사용자가 실제로 구성한 표현식 매개변수만 보냅니다. 빈 필터 목록은 ""을 전달하는 대신 FilterExpression을 완전히 생략합니다. ⌘K가 포함된 테이블을 열고 쿼리 패널에 필터를 추가한 후 하나 이상의 조건이 있을 때 생성된 요청을 복사합니다.

코드에 조건부 매개변수를 연결하기 전에 Query Builder을 사용하여 프로토타입 읽기를 수행합니다. Staging(⌘S)은 업데이트 시 빈 표현 실수를 포착합니다. ⌘P로 프로필을 전환합니다. 설정 → 프로필의 연결 테스트에서 대상 테이블을 확인합니다. Connect to AWSInstall를 참조하세요. 생략된 매개변수와 빈 문자열은 다릅니다. 후자에서만 이 오류가 발생합니다.

출처

관련 오류

참고 자료

위에 링크된 공식 AWS 문서를 기준으로 2026년 7월 13일에 마지막으로 확인되었습니다.

Console 없이 DynamoDB 작업하기

DynamoDB로는 실행할 수 없는 진짜 SQL(JOINs, GROUP BY, 집계)을 실행하는 빠른 DynamoDB 데스크톱 클라이언트. 시각적 편집과 여러분 자신의 Bedrock 키로 동작하는 AI 에이전트를 제공합니다.

30일 무료 체험, 신용카드 불필요 — 이후 기간 제한 없는 무료 요금제.