JSONata를 사용한 AWS Step Functions 배열 평탄화 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
DevOps
대상자
AWS Step Functions를 사용하는 개발자, 특히 배열 처리 및 JSONata 활용에 관심 있는 중급 이상 개발자
핵심 요약
- JSONata의
.
표현식을 사용하여 배열 평탄화 가능 (예:states.result.
) - 빈 배열 처리를 위해
$exists()
함수와 삼항 조건식 사용 (예:$exists(states.result.) ? states.result. : []
) ??
또는||
연산자는 현재 JSONata에서 지원되지 않음 (AWS 문서 참조 필요)
섹션별 세부 요약
1. JSONPath 기반 기존 방법
- AWS Step Functions의
ResultSelector
에서[][]
표현식 사용 - 예:
"ResultSelector":{"flattenArray.$":"$[][]"}
- JSONPath는 배열 평탄화에 적합하지만, JSONata로 전환 시 호환성 문제 발생
2. JSONata의 배열 평탄화
- JSONata에서
.
표현식 사용 (예:states.result.
) - 빈 배열일 경우
.*
표현식은 빈 결과 반환 - 배열 강제 형변환(
[]
사용)은 이 경우에 무효
3. 빈 배열 처리 방법
$exists()
함수로 존재 여부 확인 (예:$exists(states.result.*)
)- 삼항 조건식으로 기본값 설정 (예:
$exists(states.result.) ? states.result. : []
) ??
또는||
연산자 사용 시 현재 미지원 (AWS 문서 개선 요청 필요)
4. 실무적 고려사항
- JSONata의
.*
표현식은 성능 개선이 필요할 수 있음 - 빈 배열 처리 로직은 모든 JSONata 스크립트에 포함 권장
- AWS 문서에서 JSONata 기능 설명이 부족한 것으로 확인
결론
- 배열 평탄화 시
$exists()
와 삼항 조건식을 사용해 빈 배열 처리 ??
연산자 사용 시 AWS 문서 확인 필요- JSONata의
.*
표현식은 적극적으로 활용되나, 빈 배열 처리에 주의해야 함