AWS Lambda 런타임 인터페이스 - AWS Lambda

AWS Lambda 런타임 인터페이스

AWS Lambda은 사용자 지정 런타임에 HTTP API를 제공하여 Lambda에서 호출 이벤트를 수신하고 Lambda 실행 환경내에서 응답 데이터를 다시 전송합니다.

런타임 API 버전 2018-06-01에 대한 OpenAPI 사양은 runtime-api.zip에서 사용할 수 있습니다.

런타임은 AWS_LAMBDA_RUNTIME_API 환경 변수에서 엔드포인트를 가져와 API 버전을 추가하고 다음의 리소스 경로를 사용하여 API와 상호 작용합니다.

예 요청

curl "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/next"

다음 호출

경로/runtime/invocation/next

메서드GET

호출 이벤트를 검색합니다. 응답 본문에는 호출의 페이로드가 포함되어 있습니다. 이 페이로드는 함수 트리거의 이벤트 데이터를 포함하는 JSON 문서입니다. 응답 헤더에는 호출에 대한 추가 데이터가 포함되어 있습니다.

응답 헤더

  • Lambda-Runtime-Aws-Request-Id – 함수 호출을 트리거한 요청을 식별하는 요청 ID입니다.

    예: 8476a536-e9f4-11e8-9739-2dfe598c3fcd.

  • Lambda-Runtime-Deadline-Ms – 함수가 Unix 시간 형식에 따른 밀리초 단위의 시간 제한에 도달하는 날짜입니다.

    예: 1542409706888.

  • Lambda-Runtime-Invoked-Function-Arn – 호출에 지정된 Lambda 함수, 버전 또는 별칭의 ARN입니다.

    예: arn:aws:lambda:us-east-2:123456789012:function:custom-runtime.

  • Lambda-Runtime-Trace-IdAWS X-Ray 트레이스 헤더입니다.

    예: Root=1-5bef4de7-ad49b0e87f6ef6c87fc2e700;Parent=9a9197af755a6419;Sampled=1.

  • Lambda-Runtime-Client-Context – AWS Mobile SDK 호출에서 클라이언트 애플리케이션 및 디바이스에 관한 데이터입니다.

  • Lambda-Runtime-Cognito-Identity – AWS Mobile SDK 호출에서 Amazon Cognito 자격 증명 공급자에 관한 데이터입니다.

/runtime/invocation/next를 호출하여 호출 이벤트를 받고 이를 함수 핸들러로 전달하여 처리합니다. GET 호출에는 시간 제한을 설정하지 마십시오. Lambda이 런타임을 부트스트랩하는 시점과 런타임에 반환할 이벤트가 있는 시점 사이에 런타임 프로세스가 몇 초 동안 동결될 수 있습니다.

요청 ID는 Lambda 내에서 호출을 추적합니다. 응답을 전송할 때에는 이 ID를 사용하여 호출을 지정합니다.

트레이스 헤더에는 추적 ID, 상위 ID 및 샘플링 결정이 포함되어 있습니다. 요청이 샘플링될 경우, 이 요청은 Lambda 또는 업스트림 서비스에 의해 샘플링된 것입니다. 런타임은 헤더의 값을 사용해 _X_AMZN_TRACE_ID을 설정해야 합니다. X-Ray SDK는 이 값을 판독하여 ID를 가져온 다음, 요청을 추적할지 여부를 결정합니다.

호출 응답

경로/runtime/invocation/AwsRequestId/response

메서드POST

Lambda으로 호출 응답을 전송합니다. 런타임은 함수 핸들러를 호출한 후 함수의 응답을 호출 응답 경로에 게시합니다. 동기식 호출의 경우, Lambda은 응답을 클라이언트로 다시 보냅니다.

예 성공 요청

REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/response" -d "SUCCESS"

호출 오류

경로/runtime/invocation/AwsRequestId/error

메서드POST

함수가 오류를 반환하면 런타임은 JSON 문서로 오류를 포맷하고 호출 오류 경로에 게시합니다.

예 요청 본문

{ "errorMessage" : "Error parsing event data.", "errorType" : "InvalidEventDataException" }

예 오류 요청

REQUEST_ID=156cb537-e2d4-11e8-9b34-d36013741fb9 ERROR="{\"errorMessage\" : \"Error parsing event data.\", \"errorType\" : \"InvalidEventDataException\"}" curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/invocation/$REQUEST_ID/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"

초기화 오류

경로/runtime/init/error

메서드POST

런타임에서 초기화 도중에 오류가 발생하면 초기화 오류 경로에 오류 메시지가 게시됩니다.

예 초기화 오류 요청

ERROR="{\"errorMessage\" : \"Failed to load function.\", \"errorType\" : \"InvalidFunctionException\"}" curl -X POST "http://${AWS_LAMBDA_RUNTIME_API}/2018-06-01/runtime/init/error" -d "$ERROR" --header "Lambda-Runtime-Function-Error-Type: Unhandled"