REST API 배포에 대한 스테이지 변수 설정 - Amazon API Gateway

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

REST API 배포에 대한 스테이지 변수 설정

단계 변수는 REST API의 배포 단계와 연결된 구성 속성으로 정의되는 이름-값 페어입니다. 환경 변수와 비슷한 역할을 하며 API 설정 및 매핑 템플릿에 사용할 수 있습니다.

예를 들어 단계 구성에서 단계 변수를 정의한 다음, 변수 값을 REST API의 메서드에 대한 HTTP 통합의 URL 문자열로 설정할 수 있습니다. 나중에 API 설정에 있는 연결된 스테이지 변수 이름을 사용하여 URL 문자열을 참조할 수 있습니다. 이렇게 하면 스테이지 변수 값을 해당 URL로 재설정함으로써 각 스테이지의 서로 다른 엔드포인트에서 동일한 API 설정을 사용할 수 있습니다.

또한 매핑 템플릿에서 단계 변수에 액세스하거나, 구성 파라미터를 AWS Lambda 또는 HTTP 백엔드에 전달할 수도 있습니다.

매핑 템플릿에 대한 자세한 내용은 API Gateway 매핑 템플릿과 액세스 로깅 변수 참조 단원을 참조하십시오.

참고

단계 변수는 자격 증명과 같은 중요한 데이터에 사용할 수 없습니다. 중요한 데이터를 통합에 전달하려면 AWS Lambda 권한 부여자를 사용합니다. Lambda 권한 부여자의 출력에서 중요한 데이터를 통합에 전달할 수 있습니다. 자세한 내용은 Amazon API Gateway Lambda 권한 부여자의 출력 단원을 참조하십시오.

사용 사례

API Gateway의 배포 단계에서 각 API에 대한 여러 릴리스 단계(예: 알파, 베타 및 프로덕션)를 관리할 수 있습니다. 단계 변수를 사용하여 API 배포 단계가 다양한 백엔드 엔드포인트와 상호 작용하도록 구성할 수 있습니다.

예를 들어, API에서 백엔드 웹 호스트(예: http://example.com)에 GET 요청을 HTTP 프록시로 전달할 수 있습니다. 이 경우 개발자가 프로덕션 엔드포인트를 호출하면 API Gateway가 example.com을 호출하도록 단계 변수에서 백엔드 웹 호스트가 구성됩니다. 베타 엔드포인트를 호출하면, API Gateway는 베타 단계의 단계 변수에서 구성된 값을 사용하고 다른 웹 호스트를 호출합니다(예: beta.example.com). 마찬가지로, 단계 변수를 사용하여 API의 각 단계에 대해 다른 AWS Lambda 함수 이름을 지정할 수 있습니다.

또한 단계 변수를 사용하여 매핑 템플릿을 통해 구성 파라미터를 Lambda 함수에 전달할 수도 있습니다. 예를 들어 API의 여러 단계에 동일한 Lambda 함수를 다시 사용하려고 할 수 있지만, 이 함수는 호출되는 단계에 따라 다른 Amazon DynamoDB 테이블에서 데이터를 읽어야 합니다. 이때 Lambda 함수에 대한 요청을 생성하는 매핑 템플릿에서 단계 변수를 사용하여 테이블 이름을 Lambda에 전달할 수 있습니다.

단계 변수는 API 사양의 보안 정의 섹션에 적용되지 않습니다. 예를 들어 다른 단계에는 다른 Amazon Cognito 사용자 풀을 사용할 수 없습니다.

예제:

스테이지 변수를 사용하여 HTTP 통합 엔드포인트를 사용자 지정하려면, 먼저 지정된 이름(예: url)의 스테이지 변수를 구성하고 여기에 값(예: example.com)을 할당합니다. 그런 다음 메소드 구성에서 HTTP 프록시 통합을 설정합니다. 엔드포인트의 URL을 입력하는 대신, 단계 변수 값인 http://${stageVariables.url}을 사용하도록 API Gateway에 지시할 수 있습니다. 이 값은 API가 실행되는 단계에 따라 실행 시간에 단계 변수 ${}를 대체하도록 API Gateway에 지시합니다.

비슷한 방식으로 단계 변수를 참조하여 자격 증명 필드에서 Lambda 함수 이름, AWS 서비스 프록시 경로 또는 AWS 역할 ARN을 지정할 수 있습니다.

Lambda 함수 이름을 단계 변수 값으로 지정할 때는 Lambda 함수에 대한 권한을 수동으로 구성해야 합니다. AWS 명령줄 인터페이스(AWS CLI)를 사용하여 이 작업을 수행할 수 있습니다.

aws lambda add-permission --function-name arn:aws:lambda:XXXXXX:your-lambda-function-name --source-arn arn:aws:execute-api:us-east-1:YOUR_ACCOUNT_ID:api_id/*/HTTP_METHOD/resource --principal apigateway.amazonaws.com --statement-id apigateway-access --action lambda:InvokeFunction

다음 예에서는 API 메서드 대신 AWS 계정의 미국 서부(오레곤) 리전에서 호스팅하는 helloWorld라는 Lambda 함수를 호출할 수 있도록 API Gateway 권한을 할당합니다.

arn arn:aws:execute-api:us-west-2:123123123123:bmmuvptwze/*/GET/hello

다음은 AWS CLI를 사용하는 동일한 명령입니다.

aws lambda add-permission --function-name arn:aws:lambda:us-east-1:123123123123:function:helloWorld --source-arn arn:aws:execute-api:us-west-2:123123123123:bmmuvptwze/*/GET/hello --principal apigateway.amazonaws.com --statement-id apigateway-access --action lambda:InvokeFunction