AWS Lambda
개발자 안내서

컨텍스트 객체(Node.js)

Lambda 함수는 실행되는 동안 AWS Lambda과 상호 작용을 하여 다음과 같이 유용한 실행 시간 정보를 얻을 수 있습니다.

  • AWS Lambda가 Lambda 함수를 종료하기까지 남은 시간입니다(제한 시간은 Lambda 함수 구성 속성의 하나).

  • 실행 중인 Lambda 함수와 연결된 CloudWatch 로그 그룹과 로그 스트림입니다.

  • Lambda 함수를 호출한 클라이언트에 반환된 AWS 요청 ID입니다. 요청 ID는 AWS 지원을 통한 후속 조회에 사용할 수 있습니다.

  • AWS Mobile SDK를 통해 Lambda 함수가 호출된 경우에는 Lambda 함수를 호출하는 모바일 애플리케이션에 대해 자세히 알아볼 수 있습니다.

AWS Lambda는 서비스가 Lambda 함수 핸들러에 두 번째 파라미터로 전달하는 context 객체를 통해 이 정보를 제공합니다. 자세한 내용은 Lambda 함수 핸들러(Node.js) 단원을 참조하십시오.

다음 단원에는 context 객체를 사용하여 가용한 모든 메서드와 속성을 나열하는 Lambda 함수에 대한 예제가 나와 있습니다.

다음의 Node.js 예제를 고려해 보십시오. 핸들러는 context 파라미터를 통해 실행 시간 정보를 수신합니다.

console.log('Loading function'); exports.handler = function(event, context, callback) { //console.log('Received event:', JSON.stringify(event, null, 2)); console.log('value1 =', event.key1); console.log('value2 =', event.key2); console.log('value3 =', event.key3); console.log('remaining time =', context.getRemainingTimeInMillis()); console.log('functionName =', context.functionName); console.log('AWSrequestID =', context.awsRequestId); console.log('logGroupName =', context.log_group_name); console.log('logStreamName =', context.log_stream_name); console.log('clientContext =', context.clientContext); if (typeof context.identity !== 'undefined') { console.log('Cognito identity ID =', context.identity.cognitoIdentityId); } callback(null, event.key1); // Echo back the first key value // or // callback("some error type"); };

이 예제의 핸들러 코드는 Lambda 함수의 실행 시간 정보 중 일부를 CloudWatch에 로깅합니다. Lambda 콘솔을 사용하여 이 함수를 호출한 경우에는 콘솔이 [Log output] 섹션에 로그를 표시합니다. 이 코드를 사용하여 Lambda 함수를 생성하고 콘솔을 사용하여 이를 테스트할 수 있습니다.

AWS Lambda 콘솔에서 이 코드를 테스트하려면

  1. 콘솔에서 hello-world 블루프린트를 사용하여 Lambda 함수를 생성합니다. [runtime]에서 [nodejs6.10]을 선택합니다. 작업 방법에 대한 지침은 단순한 Lambda 함수 생성 단원을 참조하십시오.

  2. 함수를 테스트하고 나면, 코드를 업데이트하여 더 많은 컨텍스트 정보를 얻을 수도 있습니다.

컨텍스트 객체 메서드(Node.js)

컨텍스트 객체는 다음과 같은 메서드를 제공합니다.

context.getRemainingTimeInMillis()

현재 실행 중인 Lambda 함수에서 시간 초과가 발생하기까지 대략적으로 남은 실행 시간을 반환합니다. 제한 시간은 Lambda 함수 구성의 속성 중 하나입니다. 제한 시간에 도달하면 AWS Lambda는 Lambda 함수를 종료합니다.

이 메서드를 사용하여 함수가 실행되는 동안 남은 시간을 확인하고 실행 시간 시 적절한 교정 조치를 취할 수 있습니다.

일반적인 구문은 다음과 같습니다.

context.getRemainingTimeInMillis();

컨텍스트 객체 속성(Node.js)

context 객체는 다음과 같이 업데이트가 가능한 속성을 제공합니다.

callbackWaitsForEmptyEventLoop

기본값은 true입니다. 이 속성은 콜백의 기본 동작을 수정할 때만 유용합니다. 기본적으로 이 콜백은 이벤트 루프가 비워진 뒤에 프로세스를 일시 중지하고 호출자에게 결과를 반환합니다. 이 속성을 false로 설정하면 이벤트 루프에 이벤트가 있는 경우라도 callback이 호출된 직후에 프로세스를 일시 중지하도록 AWS Lambda에 요청할 수 있습니다. AWS Lambda는 프로세스와 모든 상태 데이터, 이벤트 루프의 이벤트를 일시 중지합니다(이벤트 루프에 남은 모든 이벤트는 Lambda 함수가 다음에 호출이 될 때나 AWS Lambda가 일시 중지된 프로세스를 사용하기로 선택한 경우에 처리가 됨). 콜백에 대한 자세한 내용은 콜백 파라미터 사용을 참조하십시오.

뿐만 아니라 context 객체는 다음과 같이 실행 시간 정보를 얻는 데 사용할 수 있는 속성을 제공합니다.

functionName

실행 중인 Lambda 함수의 이름입니다.

functionVersion

실행 중인 Lambda 함수의 버전입니다. 별칭을 사용하여 함수를 호출하는 경우에는 별칭이 가리키는 버전이 function_version이 됩니다.

invokedFunctionArn

이 함수를 호출하는 데 사용된 ARN입니다. 함수 ARN이나 별칭 ARN이 사용될 수 있습니다. 정규화되지 않은 ARN은 $LATEST 버전을 실행하고 별칭은 해당 별칭이 가리키는 함수 버전을 실행합니다.

memoryLimitInMB

Lambda 함수에서 구성한 메모리 제한(MB)입니다. Lambda 함수를 생성한 시점에 메모리 제한을 설정하고 나중에 이를 변경할 수 있습니다.

awsRequestId

요청과 연결된 AWS 요청 ID입니다. invoke 메서드를 호출한 클라이언트에 반환된 ID입니다.

참고

AWS Lambda가 호출을 재시도해도(예를 들어 Kinesis를 처리 중인 Lambda 함수에서 예외가 발생한 경우) 요청 ID는 변경되지 않습니다.

logGroupName

Lambda 함수가 기록한 로그를 찾을 수 있는 CloudWatch 로그 그룹의 이름입니다.

logStreamName

Lambda 함수가 기록한 로그를 찾을 수 있는 CloudWatch 로그 그룹의 이름입니다. 로그 스트림은 Lambda 함수가 호출될 때마다 바뀔 수도 있고 그렇지 않을 수도 있습니다.

Lambda 함수가 로그 스트림을 생성할 수 없는 경우에는 이 값이 null이 됩니다. Lambda 함수에 필요한 권한을 부여하는 실행 역할에 CloudWatch 작업에 대한 권한이 포함되어 있지 않은 경우에 이런 일이 발생할 수 있습니다.

identity

AWS Mobile SDK를 통해 호출되었을 때 Amazon Cognito 자격 증명 공급자에 대한 정보입니다. null일 수 있습니다.

  • identity.cognitoIdentityId

  • identity.cognitoIdentityPoolId

특정 모바일 플랫폼의 정확한 값에 대한 자세한 내용은 AWS Mobile SDK for iOS Developer Guide자격 증명 컨텍스트와 Android용 AWS Mobile SDK Developer Guide의 자격 증명 컨텍스트를 참조하십시오.

clientContext

AWS Mobile SDK를 통해 호출되었을 때 클라이언트 애플리케이션 및 디바이스에 대한 정보입니다. null일 수 있습니다. clientContext를 사용하여 다음 정보를 얻을 수 있습니다.

  • clientContext.client.installation_id

  • clientContext.client.app_title

  • clientContext.client.app_version_name

  • clientContext.client.app_version_code

  • clientContext.client.app_package_name

  • clientContext.Custom

    모바일 클라이언트 애플리케이션에서 설정된 사용자 지정 값입니다.

  • clientContext.env.platform_version

  • clientContext.env.platform

  • clientContext.env.make

  • clientContext.env.model

  • clientContext.env.locale

특정 모바일 플랫폼의 정확한 값에 대한 자세한 내용은 AWS Mobile SDK for iOS Developer Guide클라이언트 컨텍스트Android용 AWS Mobile SDK Developer Guide클라이언트 컨텍스트를 참조하십시오.