사용자 지정 도메인 이름의 라우팅 모드 설정
API Gateway가 API로 트래픽을 라우팅하는 데 사용할 라우팅 모드를 선택할 수 있습니다. 자세한 내용은 API Gateway에서 사용자 지정 도메인 이름을 통해 API로 트래픽을 전송합니다. 섹션을 참조하세요. 이 섹션에서는 사용자 지정 도메인 이름의 라우팅 모드에 대해 설명합니다. API로 트래픽을 라우팅하려면 사용자 지정 도메인 이름에 대한 라우팅 모드를 설정해야 합니다. 지원되는 라우팅 모드는 다음과 같습니다.
-
ROUTING_RULE_THEN_API_MAPPING - 이 모드를 사용하여 라우팅 규칙과 API 매핑을 모두 사용해 API로 트래픽을 전송합니다. 이 모드에서는 모든 라우팅 규칙이 모든 API 매핑보다 우선 적용됩니다. 이 모드의 예제는 예제 2: 라우팅 규칙 및 API 매핑 섹션을 참조하세요.
-
ROUTING_RULE_ONLY - 이 모드를 사용하여 라우팅 규칙이 API로 트래픽을 전송하는 것만 허용합니다. 사용자 지정 도메인 이름이 이 모드를 사용하는 경우 API 매핑을 만들 수 없지만 get-api-mappings 명령을 사용하여 이를 볼 수 있습니다. API 직접 호출자는 API 매핑을 사용하여 이 도메인 이름에 액세스할 수 없습니다.
-
API_MAPPING_ONLY - 이 모드를 사용하여 API 매핑이 API로 트래픽을 전송하는 것만 허용합니다. 사용자 지정 도메인 이름이 이 모드를 사용하는 경우 라우팅 규칙을 만들 수 없지만 list-routing-rules
명령을 사용하여 이를 볼 수 있습니다. API 직접 호출자는 라우팅 규칙을 사용하여 이 도메인 이름에 액세스할 수 없습니다.
이는 모든 기존 도메인 이름 및 앞으로 만드는 새 도메인 이름에 대한 기본 라우팅 모드입니다.
apigateway
를 사용하여 사용자 지정 도메인 이름을 만들면 API_MAPPING_ONLY
를 BASE_PATH_MAPPING_ONLY
로, ROUTING_RULE_THEN_API_MAPPING
을 ROUTING_RULE_THEN_BASE_PATH_MAPPING
으로 부릅니다. 이 동작은 AWS Management Console이 아닌 AWS CLI, AWS CloudFormation 또는 SDK에 대해서만 존재합니다.
다음 절차에서는 기존 사용자 지정 도메인 이름의 라우팅 모드를 변경하는 방법을 보여줍니다. 사용자 지정 도메인 이름의 라우팅 모드를 변경하면 API 직접 호출자는 지원되지 않는 라우팅 모드를 사용하여 도메인 이름에 액세스할 수 없습니다.
- AWS Management Console
-
라우팅 모드를 ROUTING_RULE_ONLY
또는 API_MAPPING_ONLY
로 변경하면 사용자가 만든 API 매핑 또는 라우팅 규칙이 콘솔의 도메인 이름 세부 정보 페이지에서 제거됩니다. 라우팅 규칙 또는 API 매핑을 지원하도록 라우팅 모드를 변경하면 이러한 리소스가 반환됩니다.
- AWS CLI - apigatewayv2
-
다음 update-domain-name 명령은 라우팅 모드 ROUTING_RULE_THEN_API_MAPPING
을 사용하도록 도메인 이름을 업데이트합니다.
aws apigatewayv2 update-domain-name \
--domain-name 'api.example.com' \
--routing-mode "ROUTING_RULE_THEN_API_MAPPING"
출력은 다음과 같습니다.
{
"ApiMappingSelectionExpression": "$request.basepath",
"DomainName": "api.example.com",
"DomainNameArn": "arn:aws:apigateway:us-west-2::/domainnames/api.example.com",
"DomainNameConfigurations": [
{
"ApiGatewayDomainName": "d-abcdefg.execute-api.us-west-2.amazonaws.com",
"CertificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/abcdefg-123456-abcdefg",
"DomainNameStatus": "AVAILABLE",
"EndpointType": "REGIONAL",
"HostedZoneId": "Z2OJLYMUO9EFXC",
"SecurityPolicy": "TLS_1_2"
}
],
"RoutingMode": "ROUTING_RULE_THEN_API_MAPPING",
"Tags": {}
}
- AWS CLI - apigateway
-
다음 update-domain-name 명령은 라우팅 모드 ROUTING_RULE_THEN_BASE_PATH_MAPPING
을 사용하도록 프라이빗 사용자 지정 도메인 이름을 업데이트합니다.
aws apigateway update-domain-name \
--domain-name 'private.example.com' \
--patch-operations "op='replace',path='/routingMode',value='ROUTING_RULE_THEN_BASE_PATH_MAPPING'"
출력은 다음과 같습니다.
{
"domainName": "private.example.com",
"domainNameId": "abcd1234",
"domainNameArn": "arn:aws:apigateway:us-west-2:111122223333:/domainnames/private.example.com+abcd1234",
"certificateArn": "arn:aws:acm:us-west-2:111122223333:certificate/a1b2c3d4-5678-90ab-cdef",
"certificateUploadDate": "2024-09-10T10:31:20-07:00",
"endpointConfiguration": {
"types": [
"PRIVATE"
],
"ipAddressType": "dualstack"
},
"domainNameStatus": "AVAILABLE",
"securityPolicy": "TLS_1_2",
"policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":\"*\",\"Action\":\"execute-api:Invoke\",\"Resource\":\"execute-api:\/*\"},{\"Effect\":\"Deny\",\"Principal\":\"*\",\"Action\":\"execute-api:Invoke\",\"Resource\":\""execute-api:\/*\",\"Condition\":{\"StringNotEquals\":{\"aws:SourceVpce\":\"vpce-abcd1234efg\"}}}]}",
"routingMode" : "ROUTING_RULE_THEN_BASE_PATH_MAPPING"
}