라우팅 규칙을 사용하는 방법 - Amazon API Gateway

라우팅 규칙을 사용하는 방법

AWS Management Console, AWS CLI 또는 AWS SDK를 사용하여 라우팅 규칙을 만들 수 있습니다. 규칙을 생성한 후에는 우선순위를 변경할 수 있습니다.

라우팅 규칙 만들기

다음 절차에서는 라우팅 모드가 ROUTING_RULE_THEN_API_MAPPING 또는 ROUTING_RULE_ONLY로 설정된 사용자 지정 도메인 이름에 대한 라우팅 규칙을 만드는 방법을 보여줍니다.

AWS Management Console
  1. https://console.aws.amazon.com/apigateway에서 API Gateway 콘솔에 로그인합니다.

  2. 기본 탐색 창에서 사용자 지정 도메인 이름을 선택합니다.

  3. 사용자 지정 도메인 이름을 선택합니다.

  4. 라우팅 세부 정보 탭에서 라우팅 규칙 추가를 선택합니다.

  5. 새 조건 추가를 선택하여 새 조건을 추가합니다.

    헤더 또는 기본 경로 조건을 추가할 수 있습니다. 모든 수신 요청을 사용자 지정 도메인 이름과 일치시키려면 조건을 추가하지 마세요.

  6. 작업에서 드롭다운을 사용하여 대상 API와 대상 스테이지를 선택합니다.

  7. 다음을 선택합니다.

  8. 우선 순위 필드에 우선 순위의 숫자를 입력합니다.

    API Gateway는 규칙을 가장 낮은 값에서 가장 높은 값에 이르기까지 우선 순위에 따라 평가합니다.

    조건 없이 규칙을 생성하는 경우 높은 값 우선 순위를 사용하는 것이 좋습니다.

  9. 라우팅 규칙 생성을 선택합니다.

AWS CLI

다음 create-routing-rule 명령은 우선 순위가 50인 라우팅 규칙을 만듭니다. 이 예제에서 API Gateway는 헤더 Hello:Worldx-version:beta 및 기본 경로 PetStoreShopper가 있는 모든 수신 요청을 대상 API a1b2c3으로 라우팅합니다.

aws apigatewayv2 create-routing-rule \ --domain-name 'api.example.com' \ --priority 50 \ --conditions '[ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ]'\ --actions '[ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod" } } ]'

출력은 다음과 같습니다.

{ "Actions": [ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod", "StripBasePath": false } } ], "Conditions": [ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ], "Priority": 50, "RoutingRuleArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/api.example.com/routingrules/abc123", "RoutingRuleId": "abc123" }

라우팅 규칙의 우선 순위 변경

라우팅 규칙의 우선 순위를 변경할 수 있습니다. 이는 즉시 적용되며 API 소비자가 사용자 지정 도메인 이름을 간접적으로 호출하는 방식에 영향을 미칠 수 있습니다. 라우팅 규칙의 우선 순위를 설정할 때 규칙 사이에 간격을 두는 것이 좋습니다.

예를 들어 두 가지 라우팅 규칙, 즉 우선 순위가 50인 규칙 abc123과 우선 순위가 150인 규칙 zzz000을 고려합니다. API Gateway가 규칙 zzz000을 먼저 평가하도록 규칙의 우선 순위를 변경하려면 규칙 zzz000의 우선 순위를 30으로 변경할 수 있습니다.

AWS Management Console
  1. https://console.aws.amazon.com/apigateway에서 API Gateway 콘솔에 로그인합니다.

  2. 기본 탐색 창에서 사용자 지정 도메인 이름을 선택합니다.

  3. 사용자 지정 도메인 이름을 선택합니다.

  4. 라우팅 세부 정보 탭에서 라우팅 규칙을 선택한 다음 편집을 선택합니다.

  5. 다음을 선택합니다.

  6. 우선 순위에 새 우선 순위를 입력합니다.

  7. 변경 사항 저장을 선택합니다.

AWS CLI

다음 put-routing-rule 명령은 라우팅 규칙 abc123의 우선 순위를 변경합니다.

aws apigatewayv2 put-routing-rule \ --domain-name 'api.example.com' \ --priority 30 \ --routing-rule-id abc123 \ --conditions '[ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ]'\ --actions '[ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod" } } ]'

출력은 다음과 같습니다.

{ "Actions": [ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod", "StripBasePath": false } } ], "Conditions": [ { "MatchHeaders": { "AnyOf": [ { "Header": "Hello", "ValueGlob": "World" } ] } }, { "MatchHeaders": { "AnyOf": [ { "Header": "x-version", "ValueGlob": "beta" } ] } }, { "MatchBasePaths": { "AnyOf": [ "PetStoreShopper" ] } } ], "Priority": 38, "RoutingRuleArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/api.example.com/routingrules/abc123", "RoutingRuleId": "abc123" }