Amazon AWS CLI에서 페이로드 매개 변수에 유효한 JSON을 허용하지 않음
AWS CLI에서 lambda 함수를 호출하려고 하면 오류가 발생합니다.CLI 버전2 를 사용하고 있습니다.합격해야 한다는 것을 알고 있습니다.--payload
인수는 JSON 개체를 포함하는 문자열입니다.
aws lambda invoke --function-name testsms --invocation-type Event --payload '{"key": "test"}' response.json
다음의 에러가 표시됩니다.
Invalid base64: "{"key": "test"}"
JSON 이스케이프 캐릭터 등 여러 가지 변종을 시도해 보았습니다.또, 이 기능을 사용해 본 적이 있습니다.file://test.json
option 같은 에러도 마찬가지입니다.
@MCI가 말했듯이 AWS V2는 기본 64 입력으로 설정됩니다.고객님의 사례를 성공시키려면--cli-binary-format raw-in-base64-out
명령어에 대한 매개 변수입니다.
aws lambda invoke --function-name testsms \
--invocation-type Event \
--cli-binary-format raw-in-base64-out \
--payload '{"key": "test"}' response.json
awscli v2에는 base64로 인코딩된 파라미터가 필요한 것 같습니다.
기본적으로 AWS CLI 버전 2는 모든 바이너리 입력 및 바이너리 출력 파라미터를 base64 인코딩 문자열로 전달합니다.바이너리 입력이 필요한 파라미터의 유형은 설명서에서 blob(바이너리 대형 객체)으로 지정되어 있습니다.
payload 파라미터:lamba invoke
이 중 하나입니다.blob
base64-syslog 형식이어야 합니다.
--blob(블러브)람다에 제공하려는 JSON이 입력으로 기능합니다.
하나의 솔루션은 openssl base64를 사용하여 payload를 부호화하는 것입니다.
echo '{"key": "test"}' > clear_payload
openssl base64 -out encoded_payload -in clear_payload
aws lambda invoke --function-name testsms --invocation-type Event --payload file://~/encoded_payload response.json
첫째, 문자열은 유효한 json입니다.
저 같은 경우에는 이런 문제가 있었습니다.
$ aws --profile diegosasw lambda invoke --function-name lambda-dotnet-function --payload "Just Checking If Everything is OK" out
An error occurred (InvalidRequestContentException) when calling the Invoke operation: Could not parse request body into json: Could not parse payload into json: Unrecognized token 'Just': was expecting ('true', 'false' or 'null')
at [Source: (byte[])"Just Checking If Everything is OK"; line: 1, column: 6]
이 문제는 AWS CLI가 JSON으로 변환하려고 했기 때문입니다.큰따옴표를 피하면 효과가 있었다
$ aws --profile diegosasw lambda invoke --function-name lambda-dotnet-function --payload "\"Just Checking If Everything is OK\"" out
{
"StatusCode": 200,
"ExecutedVersion": "$LATEST"
}
Windows 에서는, 다음의 조작을 실시했습니다만, 효과가 있었습니다.
aws lambda invoke --function-name testsms --invocation-type Event --cli-binary-format raw-in-base64-out --payload {\"key\": \"test\"} response.json
주의: 추가--cli-binary-format raw-in-base64-out
명령어로 excape "를 사용하여 payload로 \"
이 솔루션은 나에게 효과가 있었고 매번 올바른 플래그가 있는지 man 페이지를 기억하거나 확인하는 것보다 간단하다는 것을 알았습니다.
aws lambda invoke --function-name my_func --payload $(echo "{\"foo\":\"bar\"}" | base64) out
LocalStack을 실행하는 Windows PowerShell에서는 다음을 사용해야 했습니다.
--payload '{\"key\": \"test\"}' response.json
언급URL : https://stackoverflow.com/questions/60310607/amazon-aws-cli-not-allowing-valid-json-in-payload-parameter
'programing' 카테고리의 다른 글
angular.js에서 HTML5 푸시 스테이트 사용 (0) | 2023.03.08 |
---|---|
node.js에서 데이터베이스를 조롱하고 있습니까? (0) | 2023.03.08 |
숫자 키가 있는 JavaScript 개체를 배열로 변환하는 중 (0) | 2023.03.08 |
jQuery에서 HTML 문서의 일부를 추출합니다. (0) | 2023.03.08 |
어떻게 Mongodb에서 마지막 N개의 레코드를 얻을 수 있지? (0) | 2023.03.08 |