2016-07-15 2 views
2

AWS 람다 환경에서 코드가 실행되고 있는지 감지하고 싶습니다. 문서화 된 방법이 있습니까?AWS 람다 환경에서 실행 중인지 확인하는 방법은 무엇입니까?

현재 느낌이 틀린 Exploring The AWS Lambda Runtime Environment 블로그 게시물에 설명 된 환경 변수 LAMBDA_TASK_ROOT의 존재 여부에 달려 있습니다.

+0

? 알림이 필요하십니까? 항상 알고 싶습니까, 아니면 그냥 달렸는지 확인하고 싶습니까? –

+0

당신의 현재 해결책은 내가하는 일입니다. 왜 잘못 생각합니까? –

+0

환경에 따라 구성을 변경합니다. 환경 변수가 공식적으로 문서화되어 있지 않고 공지없이 변경 될 수 있으므로 짜증이납니다. – sumek

답변

3

이 문제를 해결하는 가장 좋은 방법은 직접 추적하는 것입니다. 특히, 람다 진입 점 다음에 전역 변수 또는 환경 변수를 설정할 수 있습니다. Node.js를 예를 보려면 :

const isLambda = !!(process.env.LAMBDA_TASK_ROOT || false); 

if (isLambda) { 
    // You're on AWS Lambda 
} else { 
    // Local or elsewhere 
} 

신용을 watson/is-lambda에 발견을 위해 :

exports.handler = function(event, context, callback) { 
    process.env['LAMBDA_ENV'] = 'true'; 
    ... 
}; 
+0

문서가 작성되었습니다. 그 해결책이 마음에 듭니다. 감사! – sumek

4

을 확인할 수있는 process.env 속성이 있습니다.

편집 : 당신이 예에 대한 확인, 우수한 lambda-local 패키지처럼 람다 환경 사기꾼을 사용하는 경우 공식 AWS 소스 https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html

+0

'const isHostedOnAWS = !! (process.env.LAMBDA_TASK_ROOT || process.env.AWS_EXECUTION_ENV);'는 매력처럼 작동하며 타사 플러그인에 의존하지 않습니다. 좋은 트릭, 고마워! – Vadorequest

1

(더 ENV와 함께 바르) LAMBDA_TASK_ROOT가 작동하지 않습니다.

사용이 대신 : 당신은 단지 코드를 실행 한 경우 알고 싶은

const isLambda = Boolean(process.env['AWS_LAMBDA_FUNCTION_NAME']); 
+0

아마도 이것이 실제로 원하는 것일 수 있습니다 ...? : P 위조범은 의도적으로이 모든 값들을 설정해서는 안되므로, 실제로 람다인지를 알 수 있습니까? :) – Farley

관련 문제