Lambda 함수의 동기식 간접 호출
함수를 동기식으로 호출하는 경우 Lambda는 함수를 실행하고 응답을 기다립니다. 함수가 완료되면 Lambda는 호출된 함수의 버전과 같은 추가 데이터가 포함된 응답을 함수의 코드에서 반환합니다. AWS CLI를 사용해 동기식으로 함수를 호출하려면 invoke
명령을 사용하세요.
aws lambda invoke --function-name
my-function
\ --cli-binary-format raw-in-base64-out \ --payload '{ "key": "value" }' response.json
cli-binary-format 옵션은 AWS CLI 버전 2를 사용할 때 필요합니다. 이 설정을 기본 설정으로 지정하려면 aws configure set cli-binary-format raw-in-base64-out
을(를) 실행하세요. 자세한 내용은 AWS CLI 지원되는 글로벌 명령줄 옵션을 AWS Command Line Interface 사용 설명서 버전 2에서 참조하세요.
다음 결과가 표시됩니다.
{
"ExecutedVersion": "$LATEST",
"StatusCode": 200
}
다음 다이어그램은 Lambda 함수를 동기적으로 호출하는 클라이언트를 보여줍니다. Lambda는 이벤트를 함수로 직접 보내고 호출자에게 함수의 응답을 다시 보냅니다.
payload
은 JSON 형식의 이벤트를 포함하는 문자열입니다. AWS CLI가 함수에서 응답을 기록하는 파일의 이름은 response.json
입니다 . 함수가 객체 또는 오류를 반환하는 경우, 응답 본문은 JSON 형식의 객체 또는 오류입니다. 함수가 오류 없이 종료되는 경우 응답 본문은 null
입니다.
참고
Lambda는 응답을 전송하기 전에 외부 확장이 완료되는 것을 기다리지 않습니다. 외부 확장은 실행 환경에서 독립 프로세스로 실행되며 함수 호출이 완료된 후에도 계속 실행됩니다. 자세한 내용은 Lambda 확장을 사용하여 Lambda 함수 보강 단원을 참조하십시오.
명령의 출력은 터미널에 표시되며 Lambda의 응답에 있는 헤더의 정보를 포함합니다. 여기에는 이벤트를 처리한 버전(별칭 사용 시 유용)과 Lambda가 반환한 상태 코드가 들어 있습니다. Lambda가 함수를 실행할 수 있었다면 함수가 오류를 반환한 경우에도 상태 코드는 200입니다.
참고
제한 시간이 긴 함수의 경우 클라이언트는 응답을 기다릴 때 동기식 호출 중 연결이 해제될 수 있습니다. HTTP 클라이언트, SDK, 방화벽, 프록시 또는 운영 체제에서 제한 시간과의 장시간 연결 또는 연결 유지 설정을 감안하도록 구성합니다.
Lambda가 함수를 실행할 수 없는 경우 출력에 오류가 표시됩니다.
aws lambda invoke --function-name
my-function
\ --cli-binary-format raw-in-base64-out \ --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]
AWS CLI은(는) 명령줄 셸의 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구입니다. 이 섹션의 단계를 완료하려면 AWS CLI 버전 2가 필요합니다.
AWS CLI를 사용하면 --log-type
명령 옵션을 통해 호출에 대한 로그를 검색할 수 있습니다. 호출에서 base64로 인코딩된 로그를 최대 4KB까지 포함하는 LogResult
필드가 응답에 포함됩니다.
예 로그 ID 검색
다음 예제에서는 LogResult
이라는 함수의 my-function
필드에서 로그 ID를 검색하는 방법을 보여줍니다.
aws lambda invoke --function-name my-function out --log-type Tail
다음 결과가 표시됩니다:
{ "StatusCode": 200, "LogResult": "U1RBUlQgUmVxdWVzdElkOiA4N2QwNDRiOC1mMTU0LTExZTgtOGNkYS0yOTc0YzVlNGZiMjEgVmVyc2lvb...", "ExecutedVersion": "$LATEST" }
예 decode the logs
동일한 명령 프롬프트에서 base64
유틸리티를 사용하여 로그를 디코딩합니다. 다음 예제에서는 my-function
에 대한 base64로 인코딩된 로그를 검색하는 방법을 보여줍니다.
aws lambda invoke --function-name my-function out --log-type Tail \ --query 'LogResult' --output text --cli-binary-format raw-in-base64-out | base64 --decode
cli-binary-format 옵션은 AWS CLI 버전 2를 사용할 때 필요합니다. 이 설정을 기본 설정으로 지정하려면 aws configure set cli-binary-format raw-in-base64-out
을(를) 실행하세요. 자세한 내용은 AWS CLI 지원되는 글로벌 명령줄 옵션을 AWS Command Line Interface 사용 설명서 버전 2에서 참조하세요.
다음 결과가 표시됩니다.
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: 80 ms Memory Size: 128 MB Max Memory Used: 73 MB
base64
유틸리티는 Linux, macOS 및 Ubuntu on Windowsbase64 -D
를 사용해야 할 수도 있습니다.
파라미터, 헤더 및 오류의 전체 목록을 포함한 Invoke
API에 대한 자세한 내용은 호출 단원을 참조하세요.
함수를 직접 호출하는 경우 오류 및 재시도에 대한 응답을 확인할 수 있습니다. AWS CLI 및 AWS SDK 역시 클라이언트 제한 시간, 조절 및 서비스 오류의 경우 자동으로 재시도합니다. 자세한 내용은 Lambda의 재시도 동작 이해 섹션을 참조하세요.