다음을 사용하여 Lambda 함수를 로컬에서 호출합니다. AWS SAM - AWS Serverless Application Model

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

다음을 사용하여 Lambda 함수를 로컬에서 호출합니다. AWS SAM

클라우드에서 테스트 또는 배포하기 전에 Lambda 함수를 로컬에서 호출하면 다양한 이점을 얻을 수 있습니다. 이를 통해 함수의 로직을 더 빠르게 테스트할 수 있습니다. 로컬에서 먼저 테스트하면 클라우드에서 테스트하거나 배포 중에 문제를 식별할 가능성이 줄어들어 불필요한 비용을 피할 수 있습니다. 또한 로컬 테스트를 통해 디버깅을 더 쉽게 수행할 수 있습니다.

명령을 사용하고 sam local invoke 함수의 논리적 ID와 이벤트 파일을 제공하여 Lambda 함수를 로컬에서 호출할 수 있습니다. sam local invoke또한 이벤트로도 stdin 받아들입니다. 자세한 내용은 AWS Lambda 개발자 안내서 이벤트를 참조하세요. 다양한 AWS 서비스의 이벤트 메시지 형식에 대한 자세한 내용은 AWS Lambda 개발자 안내서의 다른 서비스와 AWS Lambda 함께 사용을 참조하십시오.

참고

sam local invoke 명령은 AWS Command Line Interface (AWS CLI) 명령에 해당합니다 aws lambda invoke. 두 명령 중 하나를 사용하여 Lambda 함수를 호출할 수 있습니다.

호출하려는 함수가 포함된 프로젝트 디렉터리에서 sam local invoke 명령을 실행해야 합니다.

예:

# Invoking function with event file $ sam local invoke "Ratings" -e event.json # Invoking function with event via stdin $ echo '{"message": "Hey, are you there?" }' | sam local invoke --event - "Ratings" # For more options $ sam local invoke --help

환경 변수 파일

템플릿에 정의된 값을 재정의하는 환경 변수를 로컬에서 선언하려면 다음을 수행하십시오.

  1. 재정의할 환경 변수가 포함된 JSON 파일을 만듭니다.

  2. --env-vars 인수를 사용하여 템플릿에 정의된 값을 재정의합니다.

환경 변수 선언

모든 리소스에 전체적으로 적용되는 환경 변수를 선언하려면 다음과 같이 Parameters 객체를 지정합니다.

{ "Parameters": { "TABLE_NAME": "localtable", "BUCKET_NAME": "testBucket", "STAGE": "dev" } }

각 리소스에 대해 서로 다른 환경 변수를 선언하려면 다음과 같이 각 리소스에 대하여 객체를 지정합니다.

{ "MyFunction1": { "TABLE_NAME": "localtable", "BUCKET_NAME": "testBucket", }, "MyFunction2": { "TABLE_NAME": "localtable", "STAGE": "dev" } }

각 리소스에 객체를 지정할 때는 우선 순위가 높은 순위에서 가장 낮은 순으로 나열된 다음 식별자를 사용할 수 있습니다.

  1. logical_id

  2. function_id

  3. function_name

  4. 완전 경로 식별자

단일 파일에서 환경 변수를 선언하는 위의 두 가지 방법을 모두 함께 사용할 수 있습니다. 이렇게 하면 특정 리소스에 대해 제공한 환경 변수가 글로벌 환경 변수보다 우선합니다.

귀하의 환경 변수를 JSON 파일(예:env.json)에 저장합니다.

환경 변수 값 재정의

환경 변수를 JSON 파일에 정의된 변수로 재정의하려면 invoke 또는 start-api 명령과 함께 --env-vars 인수를 사용합니다. 예:

sam local invoke --env-vars env.json

계층

귀하의 애플리케이션에 레이어가 포함된 경우 로컬 호스트의 레이어 관련 문제를 디버깅하는 방법에 대한 자세한 내용은을 참조하세요다음과 같은 Lambda 계층을 사용하여 효율성을 높이십시오. AWS SAM.

자세히 알아보기

함수를 로컬에서 호출하는 실습 예제는 전체 워크샵의 모듈 2 - 로컬 실행을 참조하십시오. AWS SAM