라우팅 규칙을 사용하여 API 매핑 다시 만들기
라우팅 규칙을 사용하여 API 매핑을 다시 만들 수 있습니다. API 매핑을 다시 만들려면 기본 경로 제거를 켜야 합니다. 이렇게 하면 API 매핑의 동작이 유지됩니다. 자세한 내용은 기본 경로 조건을 사용하여 기본 경로 제거 섹션을 참조하세요.
다음 자습서에서는 API 매핑 https://
을 라우팅 규칙으로 다시 만드는 방법과 API Gateway가 API로 트래픽을 전송하는 데 사용하는 라우팅 규칙 ID를 로깅하도록 액세스 로그를 업데이트하는 방법을 보여줍니다.api.example.com
/orders/v2/items/categories/5
- AWS Management Console
-
라우팅 모드를 ROUTING_RULE_THEN_API_MAPPING으로 설정하려면
https://console.aws.amazon.com/apigateway
에서 API Gateway 콘솔에 로그인합니다. 기본 탐색 창에서 사용자 지정 도메인 이름을 선택합니다.
-
사용자 지정 도메인 이름을 선택합니다.
-
도메인 세부 정보에서 편집을 선택합니다.
-
라우팅 모드에서 ROUTING_RULE_THEN_API_MAPPING을 선택합니다.
-
저장을 선택합니다.
라우팅 모드를 설정한 후 라우팅 규칙을 만듭니다.
라우팅 규칙을 생성하려면
-
라우팅 세부 정보 탭에서 라우팅 규칙 추가를 선택합니다.
-
조건 추가를 선택한 다음 경로를 선택합니다.
-
경로에
orders/v2/items/categories/5
를 입력합니다. -
기본 경로 제거에서 활성을 선택합니다.
대상 API에서 대상 API를 선택합니다.
대상 스테이지에서 대상 스테이지를 선택합니다.
-
다음을 선택합니다.
-
우선순위에 우선순위를 입력합니다.
기존 API 매핑을 유지하더라도 API Gateway는 항상 새 라우팅 규칙을 사용합니다. 라우팅 규칙은 항상 API 매핑보다 우선하기 때문입니다.
변경 사항 저장을 선택합니다.
라우팅 규칙을 생성한 후 스테이지의 액세스 로그 형식을 업데이트하거나 새 로그를 생성하여 API Gateway가 라우팅 규칙을 사용하여 API로 트래픽을 전송하는지 확인합니다.
액세스 로그를 업데이트하려면
https://console.aws.amazon.com/apigateway
에서 API Gateway 콘솔에 로그인합니다. API를 선택합니다.
기본 탐색 창에서 스테이지를 선택합니다.
로그 및 추적에서 편집을 선택합니다.
로그 그룹이 없는 경우 API Gateway에서 REST API에 대한 CloudWatch 로깅 설정 섹션을 참조하세요.
로그 형식에
$context.customDomain.routingRuleIdMatched
를 추가합니다.이 로그 그룹은 API Gateway가 API로 트래픽을 전송하는 데 사용한은 라우팅 규칙 ID를 기록합니다. 자세한 내용은 API Gateway가 내 API로 트래픽을 어떻게 전송했는지 알 수 없음 섹션을 참조하세요.
저장을 선택합니다.
액세스 로그를 업데이트한 후 사용자 지정 도메인 이름을 간접적으로 호출합니다. 다음은 기본 경로
orders/v2/items/categories/5
를 사용하여 사용자 지정 도메인 이름https://
을 간접적으로 호출하는 curl 명령의 예입니다.api.example.com
curl "https://
api.example.com
/orders/v2/items/categories/5"사용자 지정 도메인 이름을 성공적으로 간접 호출한 후 CloudWatch Logs에
routingRuleIdMatched
가 표시되는지 확인합니다. CloudWatch Logs 콘솔을 사용하여 로그 그룹을 보는 방법을 알아보려면 CloudWatch 콘솔에서 API Gateway 로그 이벤트 보기 섹션을 참조하세요. - AWS CLI
-
-
다음 update-domain-name 명령을 사용하여 라우팅 모드
ROUTING_RULE_THEN_API_MAPPING
을 사용하도록 도메인 이름
을 업데이트합니다.api.example.com
aws apigatewayv2 update-domain-name \ --domain-name '
api.example.com
' \ --routing-mode ROUTING_RULE_THEN_API_MAPPING -
다음 create-routing-rule 명령을 사용하여 API 매핑
https://
를 다시 만드는 새 라우팅 규칙을 만듭니다.api.example.com
/orders/v2/items/categories/5aws apigatewayv2 create-routing-rule \ --domain-name '
api.example.com
' \ --priority 50 \ --conditions '[ { "MatchBasePaths": { "AnyOf": [ "orders/v2/items/categories/5" ] } } ]' \ --actions '[ { "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod", "StripBasePath": true } } ]' -
다음 update-stage 명령을 사용하여
$context.customDomain.routingRuleIdMatched
변수를 포함하도록 액세스 로그 형식을 업데이트합니다. 이 변수는 API Gateway가 API로 트래픽을 전송하는 데 사용한은 라우팅 규칙 ID를 기록합니다. 이 로그를 사용하여 API Gateway가 라우팅 규칙을 사용하여 API로 트래픽을 전송하는지 확인합니다. 자세한 내용은 API Gateway가 내 API로 트래픽을 어떻게 전송했는지 알 수 없음 섹션을 참조하세요.aws apigateway update-stage \ --rest-api-id
a1bc2c3
\ --stage-name prod \ --patch-operations "op=replace,path=/accessLogSettings/format,value='\$context.path \$context.customDomain.routingRuleIdMatched \$context.requestId \$context.extendedRequestId'"로그 그룹이 없는 경우 API Gateway에서 REST API에 대한 CloudWatch 로깅 설정 섹션을 참조하세요.
-
다음 예제 curl 명령을 사용하여 기본 경로
orders/v2/items/categories/5
를 사용하여 사용자 지정 도메인 이름을 간접적으로 호출합니다.curl "https://
api.example.com
/orders/v2/items/categories/5 -
다음 filter-log-events 명령을 사용하여 라우팅 규칙 ID
abc123
이 포함된 로그 그룹access-log-group-orders
에서 로그 이벤트를 가져옵니다.aws logs filter-log-events --log-group-name access-log-group-orders --filter-pattern abc123
이렇게 하면 API Gateway가 라우팅 규칙을 사용하여 API로 트래픽을 전송하는지 확인할 수 있습니다.
-