그 외 메모

[Powershell] json parse error

용감한 개복치 2022. 4. 13. 13:32

오늘의 꿀팁

눈을 크게 뜨자

 

cli 환경에서 인라인으로 작성된 데이터를 결국 json 형태로 변환해야 dynamodb에 넣을 수 있다.

다음은 그것을 위한 옵션이 붙은 invoke 명령어

 

aws lambda invoke를 호출해라
--payload : 뒤에 json으로 변형할 수 있는 포맷으로 string을 넣거나, true, false 형태의 데이터를 넣을 수 있다.
--cli-binary-format raw-in-base64-out : 이진값으로 입력되는 매개변수 값을 해석할 수 있는 플래그 64 기반의 규칙을 명명한다.

aws lambda invoke --function-name {Lambda함수의Arn를입력} --invocation-type Event \
--payload '{ "Metadata": "Hello" }' \ response.json --cli-binary-format raw-in-base64-out

 

문제는 이걸 공식문서 그대로 들고와서 쳤지만 되지않았다.

 

에러를 살펴보면

An error occurred when calling the Invoke operation: Could not parse request body into json: Could not parse payload into json: Unrecognized token 'hello':

 

해석하면 payload 뒤의 넣을 데이터가 json으로 호환되지 않는형식이라는 뜻이다.

더 다양한 에러가 났었는데,

 

'{ "key" : "value" }'

"{ "key" : "value" }"

'{ key : value }'

등등 다양한 방식으로 시도했지만 결국 못넣었다.

이유는 내가 powershell을 기반으로 aws cli를 실행했기 때문이었다.

 

터미널별로 json 스트링을 처리하는 기준이 조금 다른데, 이때 `` 이라던가 '' 의 차이라던가 이런걸 조심해야한다.

powershell의 경우 json을 위해서 double quote 안에 escape 문자인 백슬래쉬(\)를 붙여줘야한다.

 

'{\"Metadata\": \"Hello\" }' 

 

이 백슬래쉬를 제대로 지키지 못해서....세시간쯤 삽질했다....

덕분에 invoke 의 여러 옵션도 알게되고..으응...

좋았을꺼다...