AWS Lambda
개발자 가이드

동기식 호출

함수를 동기식으로 호출하는 경우 Lambda는 함수를 실행하고 응답을 기다립니다. 함수 실행이 종료되면 Lambda는 실행된 함수의 버전과 같은 추가 데이터가 포함된 응답을 함수의 코드에서 반환합니다. AWS CLI를 사용해 동기식으로 함수를 호출하려면 invoke 명령을 사용하십시오.

$ aws lambda invoke --function-name my-function --payload '{ "key": "value" }' response.json { "ExecutedVersion": "$LATEST", "StatusCode": 200 }

payload는 이벤트를 JSON 형식으로 포함하고 있는 문자열입니다. response.json은 파일의 이름으로서, AWS CLI는 함수에서 온 응답을 이 파일에 씁니다. 함수가 객체 또는 오류를 반환하는 경우 응답은 JSON 형식의 객체 또는 오류입니다. 함수가 오류 없이 종료되는 경우 응답은 null입니다.

명령의 출력은 터미널에 표시되며 Lambda의 응답에 있는 헤더의 정보를 포함합니다. 여기에는 이벤트를 처리한 버전(별칭 사용 시 유용함)과 Lambda가 반환한 상태 코드가 들어 있습니다. Lambda가 함수를 실행할 수 있었다면 함수가 오류를 반환한 경우에도 상태 코드는 200입니다.

참고

제한 시간이 긴 함수의 경우 클라이언트는 응답을 기다릴 때 동기식 호출 중 연결이 해제될 수 있습니다. HTTP 클라이언트, SDK, 방화벽, 프록시 또는 운영 체제에서 제한 시간과의 장시간 연결 또는 연결 유지 설정을 감안하도록 구성합니다.

Lambda가 하수를 실행할 수 없는 경우 출력에 오류가 표시됩니다.

$ aws lambda invoke --function-name my-function --payload value response.json An error occurred (InvalidRequestContentException) when calling the Invoke operation: Could not parse request body into json: Unrecognized token 'value': was expecting ('true', 'false' or 'null') at [Source: (byte[])"value"; line: 1, column: 11]

명령줄에서 호출에 대한 로그를 가져오려면 --log-type 옵션을 사용하십시오. 호출에서 base64로 인코딩된 로그를 최대 4KB까지 포함하는 LogResult 필드가 응답에 포함됩니다.

$ aws lambda invoke --function-name my-function out --log-type Tail { "StatusCode": 200, "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...", "ExecutedVersion": "$LATEST" }

base64 유틸리티를 사용하면 로그를 디코딩할 수 있습니다.

$ aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text | base64 -d START RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Version: $LATEST "AWS_SESSION_TOKEN": "AgoJb3JpZ2luX2VjELj...", "_X_AMZN_TRACE_ID": "Root=1-5d02e5ca-f5792818b6fe8368e5b51d50;Parent=191db58857df8395;Sampled=0"",ask/lib:/opt/lib", END RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 REPORT RequestId: 57f231fb-1730-4395-85cb-4f71bd2b87b8 Duration: 79.67 ms Billed Duration: 100 ms Memory Size: 128 MB Max Memory Used: 73 MB

base64는 Linux, macOS 및 Ubuntu on Windows에서 사용할 수 있습니다. macOS의 경우, 명령은 base64 -D입니다.

파라미터, 헤더 및 오류의 전체 목록을 포함한 Invoke API에 대한 자세한 내용은 Invoke 단원을 참조하십시오.

함수를 직접 호출하는 경우 오류 및 재시도에 대한 응답을 확인할 수 있습니다. AWS CLI 및 AWS SDK 역시 클라이언트 제한 시간, 조절 및 서비스 오류의 경우 자동으로 재시도합니다. 자세한 내용은 AWS Lambda의 오류 처리 및 자동 재시도 단원을 참조하십시오.