API Gateway에서 WebSocket API에 대한 스테이지 생성 - Amazon API Gateway

API Gateway에서 WebSocket API에 대한 스테이지 생성

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

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

단계 변수

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

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

참고

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

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

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

Lambda 함수 이름을 단계 변수 값으로 지정할 때는 Lambda 함수에 대한 권한을 수동으로 구성해야 합니다. 이를 위해 AWS Command Line Interface(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 Gateway 스테이지 변수 참조

HTTP 통합 URI

다음 예제에서 보듯 스테이지 변수를 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 함수

다음 예제와 같이 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 통합 자격 증명

다음 예제와 같이 스테이지 변수를 AWS 사용자 또는 역할 자격 증명 ARN의 일부로 사용할 수 있습니다.

  • arn:aws:iam::<account_id>:${stageVariables.<variable_name>}