

# API Gateway의 HTTP API에 대한 스테이지
<a name="http-api-stages"></a>

API 스테이지는 API의 수명 주기 상태에 대한 논리적 참조(예: `dev`, `prod`, `beta`, `v2`)입니다. API 스테이지는 API ID 및 스테이지 이름으로 식별되며, API를 호출하는 데 사용하는 URL에 포함됩니다. 각 스테이지는 API 배포에 대한 명명된 참조이며, 클라이언트 애플리케이션 프로그램에서 호출을 하는 데 사용할 수 있습니다.

API의 URL 기반에서 제공되는 `$default` 스테이지를 생성할 수 있습니다(예: `https://{api_id}.execute-api.{region}.amazonaws.com/`). 이 URL을 사용하여 API 단계를 호출합니다.

배포는 API 구성의 스냅샷입니다. 단계에 API를 배포한 후에는 클라이언트가 API를 호출할 수 있습니다. 변경 사항을 적용하려면 API를 배포해야 합니다. 자동 배포를 활성화하면 API에 대한 변경 사항이 자동으로 릴리스됩니다.

# API Gateway에서 HTTP API용 스테이지 변수 사용
<a name="http-api-stages.stage-variables"></a>

스테이지 변수는 HTTP API의 스테이지에 대해 정의할 수 있는 키-값 페어입니다. 환경 변수와 비슷한 역할을 하며, API 설정에 사용할 수 있습니다.

단계 변수는 자격 증명과 같은 중요한 데이터에 사용할 수 없습니다. 중요한 데이터를 통합에 전달하려면 AWS Lambda 권한 부여자를 사용합니다. Lambda 권한 부여자의 출력에서 중요한 데이터를 통합에 전달할 수 있습니다. 자세한 내용은 [Lambda 권한 부여자 응답 형식](http-api-lambda-authorizer.md#http-api-lambda-authorizer.payload-format-response) 단원을 참조하십시오.

## 예 - 스테이지 변수를 사용하여 HTTP 통합 엔드포인트 사용자 지정
<a name="http-api-stages.stage-variables-examples"></a>

예를 들어 스테이지 변수를 정의한 다음, 해당 값을 HTTP 프록시 통합을 위한 HTTP 엔드포인트로서 설정할 수 있습니다. 또한 추후에 연결된 스테이지 변수 이름을 사용하여 엔드포인트를 참조할 수 있습니다. 이렇게 하면 각 스테이지의 서로 다른 엔드포인트에서 동일한 API 설정을 사용할 수 있습니다. 마찬가지로 스테이지 변수를 사용하여 API의 각 스테이지에 대해 서로 다른 AWS Lambda 함수 통합을 지정할 수 있습니다.

스테이지 변수를 사용하여 HTTP 통합 엔드포인트를 사용자 지정하려면 먼저 스테이지(예: `url`)의 이름과 값을 `example.com`로 설정해야 합니다. 그런 다음 HTTP 프록시 통합을 설정합니다. 엔드포인트의 URL을 입력하는 대신, 단계 변수 값인 **http://\$1\$1stageVariables.url\$1**을 사용하도록 API Gateway에 지시할 수 있습니다. 이 값은 API의 스테이지에 따라 실행 시간에 스테이지 변수 `${}`을 대체하도록 API Gateway에 지시합니다.

비슷한 방법으로 스테이지 변수를 참조하여 Lambda 함수 이름이나 AWS 역할 ARN을 지정할 수 있습니다.

Lambda 함수 이름을 단계 변수 값으로 지정할 때는 Lambda 함수에 대한 권한을 수동으로 구성해야 합니다. 다음 [add-permission](https://docs.aws.amazon.com/cli/latest/reference/lambda/add-permission.html) 명령은 Lambda 함수에 대한 권한을 구성합니다.

```
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 Gateway의 HTTP API에 대한 API Gateway의 스테이지 변수 참조
<a name="http-api-stages.stage-variables-reference"></a>

다음과 같은 경우에 HTTP API에 API Gateway 스테이지 변수를 사용할 수 있습니다.

## HTTP 통합 URI
<a name="http-api-stages.stage-variables-in-integration-HTTP-uris"></a>

다음 예제에서 보듯 스테이지 변수를 HTTP 통합 URI의 일부로 사용할 수 있습니다.
+ 프로토콜이 없는 전체 URI - `http://${stageVariables.<variable_name>}`
+ 전체 도메인 - `http://${stageVariables.<variable_name>}/resource/operation`
+ 하위 도메인 - `http://${stageVariables.<variable_name>}.example.com/resource/operation`
+ 경로 - `http://example.com/${stageVariables.<variable_name>}/bar`
+ 쿼리 문자열 - `http://example.com/foo?q=${stageVariables.<variable_name>}` 

## Lambda 함수
<a name="http-api-stages.stage-variables-in-integration-lambda-functions"></a>

 다음 예제와 같이 Lambda 함수 통합 이름이나 별칭 대신 스테이지 변수를 사용할 수 있습니다.
+ `arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/arn:aws:lambda:<region>:<account_id>:function:${stageVariables.<function_variable_name>}/invocations`
+ `arn:aws:apigateway:<region>:lambda:path/2015-03-31/functions/arn:aws:lambda:<region>:<account_id>:function:<function_name>:${stageVariables.<version_variable_name>}/invocations`

**참고**  
Lambda 함수에 대해 단계 변수를 사용하려면 함수가 API와 동일한 계정에 있어야 합니다. 단계 변수는 교차 계정 Lambda 함수를 지원하지 않습니다.

## AWS 통합 자격 증명
<a name="http-api-stages.stage-variables-in-integration-aws-credentials"></a>

 다음 예제와 같이 스테이지 변수를 AWS 사용자 또는 역할 자격 증명 ARN의 일부로 사용할 수 있습니다.
+  `arn:aws:iam::<account_id>:${stageVariables.<variable_name>}` 