기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
를 사용하여 로컬에서 API Gateway 실행 AWS SAM
Amazon API Gateway를 로컬에서 실행하면 다양한 이점이 있을 수 있습니다. 예를 들어 로컬에서 API Gateway를 실행하면 AWS 클라우드에 배포하기 전에 로컬에서 API 엔드포인트를 테스트할 수 있습니다. 먼저 로컬에서 테스트하면 클라우드에서 수행하는 테스트 및 개발을 줄일 수 있으므로 비용을 절감할 수 있습니다. 또한 로컬에서 실행하면 디버깅이 더 쉬워집니다.
HTTP 요청/응답 기능을 테스트하는 데 사용할 수 있는 API Gateway의 로컬 인스턴스를 시작하려면 sam local start-api
AWS SAM CLI 명령. 이 기능에는 핫 리로딩 기능이 있어 함수를 빠르게 개발하고 반복할 수 있습니다.
참고
핫 리로딩은 변경된 파일만 새로 고치고 애플리케이션 상태는 동일하게 유지되는 것을 말합니다. 반대로 라이브 재로드는 전체 애플리케이션을 새로 고치고 애플리케이션의 당시 상태가 손실되는 경우입니다.
sam local start-api
명령을 사용하는 방법은 sam local start-api를 사용한 테스트 소개 섹션을 참조하세요.
기본적으로 는 AWS Lambda 프록시 통합을 AWS SAM 사용하고 HttpApi
및 Api
리소스 유형을 모두 지원합니다. HttpApi
리소스 유형의 프록시 통합에 대한 자세한 내용은 Gateway 개발자 안내서HTTP의 에 대한 AWS Lambda 프록시 통합 작업을 참조하세요APIs. API Api
리소스 유형과의 프록시 통합에 대한 자세한 내용은 API Gateway 개발자 안내서의 Gateway Lambda 프록시 통합 이해를 참조하세요. API
예:
$
sam local start-api
AWS SAM 는 AWS SAM 템플릿 내에서 HttpApi
또는 Api
이벤트 소스가 정의된 함수를 자동으로 찾습니다. 그런 다음 정의된 HTTP 경로에 함수를 탑재합니다.
다음 Api
예제에서 Ratings
함수는 귀하의 요청 ratings.py:handler()
시 /ratings
마운트됩니다. GET
Ratings: Type: AWS::Serverless::Function Properties: Handler: ratings.handler Runtime: python3.9 Events: Api: Type: Api Properties: Path: /ratings Method: get
다음은 Api
응답의 예시입니다.
// Example of a Proxy Integration response exports.handler = (event, context, callback) => { callback(null, { statusCode: 200, headers: { "x-custom-header" : "my custom header value" }, body: "hello world" }); }
귀하의 함수 코드를 수정하는 경우 sam local start-api
를 위한 sam build
명령을 실행하여 변경 내용을 감지하십시오.
환경 변수 파일
템플릿에 정의된 값을 재정의하는 환경 변수를 로컬에서 선언하려면 다음을 수행하십시오.
-
재정의할 환경 변수가 포함된 JSON 파일을 생성합니다.
-
--env-vars
인수를 사용하여 템플릿에 정의된 값을 재정의합니다.
환경 변수 선언
모든 리소스에 전체적으로 적용되는 환경 변수를 선언하려면 다음과 같이 Parameters
객체를 지정합니다.
{ "Parameters": { "TABLE_NAME": "localtable", "BUCKET_NAME": "amzn-s3-demo-bucket", "STAGE": "dev" } }
각 리소스에 대해 서로 다른 환경 변수를 선언하려면 다음과 같이 각 리소스에 대하여 객체를 지정합니다.
{ "MyFunction1": { "TABLE_NAME": "localtable", "BUCKET_NAME": "amzn-s3-demo-bucket", }, "MyFunction2": { "TABLE_NAME": "localtable", "STAGE": "dev" } }
각 리소스에 객체를 지정할 때는 우선 순위가 높은 순위에서 가장 낮은 순으로 나열된 다음 식별자를 사용할 수 있습니다.
logical_id
function_id
function_name
완전 경로 식별자
단일 파일에서 환경 변수를 선언하는 위의 두 가지 방법을 모두 함께 사용할 수 있습니다. 이렇게 하면 특정 리소스에 대해 제공한 환경 변수가 글로벌 환경 변수보다 우선합니다.
환경 변수를 와 같은 JSON 파일에 저장합니다env.json
.
환경 변수 값 재정의
JSON 파일에 정의된 변수로 환경 변수를 재정의하려면 invoke 또는 start-api 명령과 함께 --env-vars
인수를 사용합니다. 예:
$
sam local start-api --env-vars env.json
계층
귀하의 애플리케이션에 레이어가 포함된 경우 로컬 호스트의 레이어 관련 문제를 디버깅하는 방법에 대한 자세한 내용은을 참조하세요AWS SAM에서 Lambda 계층을 사용하여 효율성 향상.