를 사용한 테스트 소개 sam local start-lambda - AWS Serverless Application Model

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

를 사용한 테스트 소개 sam local start-lambda

AWS Serverless Application Model 명령줄 인터페이스 (AWS SAMCLI) sam local start-lambda 하위 명령을 사용하여 AWS Command Line Interface (AWS CLI) 또는 SDK를 통해 AWS Lambda 함수를 호출합니다. 이 명령은 AWS Lambda를 에뮬레이션하는 로컬 엔드포인트를 시작합니다.

sam local start-lambda를 사용하려면 다음을 완료하여 AWS SAM CLI를 설치합니다.

sam local start-lambda를 사용하기 전에 다음 사항에 대한 기본적인 이해를 하는 것이 좋습니다.

sam local start-lambda 사용하기

sam local start-lambda를 실행하면 AWS SAMCLI는 현재 작업 디렉터리가 프로젝트의 루트 디렉터리라고 가정합니다. AWS SAMCLI는 먼저 .aws-sam 하위 폴더에서 template.[yaml|yml] 파일을 찾습니다. 찾을 수 없는 경우 AWS SAMCLI는 현재 작업 디렉터리 내에서 template.[yaml|yml] 파일을 찾습니다.

sam local start-lambda를 사용하려면
  1. 프로젝트 디렉터리에서 다음 명령을 실행합니다.

    $ sam local start-lambda <options>
  2. AWS SAMCLI는 Lambda 함수를 로컬 Docker 컨테이너에 빌드합니다. 그런 다음 로컬 주소를 HTTP 서버 엔드포인트로 출력합니다. 다음은 그 예제입니다.

    $ sam local start-lambda Initializing the lambda functions containers. Local image is up-to-date Using local image: public.ecr.aws/lambda/python:3.9-rapid-x86_64. Mounting /Users/.../sam-app/hello_world as /var/task:ro,delegated, inside runtime container Containers Initialization is done. Starting the Local Lambda Service. You can now invoke your Lambda Functions defined in your template through the endpoint. 2023-04-13 07:25:43 WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:3001 2023-04-13 07:25:43 Press CTRL+C to quit
  3. AWS CLI 또는 SDK를 사용하여 Lambda 함수를 로컬에서 호출할 수 있습니다.

    다음은 AWS CLI사용을 보여 주는 예제입니다.

    $ aws lambda invoke --function-name "HelloWorldFunction" --endpoint-url "http://127.0.0.1:3001" --no-verify-ssl out.txt StatusCode: 200 (END)

    다음은 for를 사용한 예제입니다. AWS SDK Python

    import boto3 from botocore.config import Config from botocore import UNSIGNED lambda_client = boto3.client('lambda', endpoint_url="http://127.0.0.1:3001", use_ssl=False, verify=False, config=Config(signature_version=UNSIGNED, read_timeout=1, retries={'max_attempts': 0} ) ) lambda_client.invoke(FunctionName="HelloWorldFunction")

옵션

템플릿 지정의 경우 다음을 수행합니다.

AWS SAMCLI가 참조할 템플릿을 지정하려면 --template 옵션을 사용합니다. AWS SAMCLI그러면 해당 AWS SAM 템플릿과 해당 템플릿이 가리키는 리소스만 로드됩니다. 다음은 그 예제입니다.

$ sam local start-lambda --template myTemplate.yaml

모범 사례

애플리케이션에 실행 중인 sam build.aws-sam 디렉터리가 있는 경우 함수 코드를 업데이트할 때마다 sam build를 실행해야 합니다. 그런 다음 sam local start-lambda를 실행하여 업데이트된 함수 코드를 로컬에서 테스트합니다.

로컬 테스트는 클라우드에 배포하기 전에 빠르게 개발하고 테스트할 수 있는 훌륭한 솔루션입니다. 하지만 로컬 테스트는 클라우드의 리소스 간 권한 등 모든 것을 검증하지는 않습니다. 가능한 한 클라우드에서 애플리케이션을 테스트하세요. 클라우드 테스트 워크플로의 속도를 높이려면 sam sync를 사용하는 것이 좋습니다.

자세히 알아보기

sam local start-lambda 옵션 목록은 sam local start-lambda 섹션을 참조하세요.