API Gateway에서 리전 사용자 지정 도메인 이름 설정 - Amazon API Gateway

API Gateway에서 리전 사용자 지정 도메인 이름 설정

리전 사용자 지정 도메인 이름을 사용하여 사용자 친화적인 API 기본 URL을 생성합니다. 리전 사용자 지정 도메인 이름을 사용하면 HTTP 및 REST API 스테이지를 동일한 사용자 지정 도메인 이름에 매핑하고 상호 TLS 인증을 사용할 수 있습니다.

고려 사항

다음은 리전 사용자 지정 도메인 이름에 대한 고려 사항입니다.

  • 리전별 ACM 인증서를 제공해야 합니다. 인증서는 API와 동일한 리전에 있어야 합니다. 사용자 지정 도메인 이름 인증서 생성 또는 업로드에 대한 자세한 내용은 AWS Certificate Manager에서 인증서 준비를 참조하세요.

  • ACM 인증서로 리전 사용자 지정 도메인 이름을 생성(또는 마이그레이션)하면 API Gateway는 해당 계정에 서비스 연결 역할을 생성합니다. 서비스 연결 역할은 ACM 인증서를 해당 리전 엔드포인트에 연결하는 데 필요합니다. 그 역할의 이름은 AWSServiceRoleForAPIGateway이고 이 역할에는 APIGatewayServiceRolePolicy 관리형 정책이 연결됩니다. 서비스 연결 역할을 사용하는 방법에 대한 자세한 내용은 서비스 연결 역할 사용을 참조하세요.

  • 리전 사용자 지정 도메인 이름을 생성한 후에는 DNS 레코드를 생성하여 사용자 지정 도메인 이름을 리전 도메인에 연결해야 합니다. 이렇게 하면 목적지가 사용자 지정 도메인 이름인 트래픽이 API의 리전 호스트 이름으로 라우팅됩니다.

    DNS 레코드는 CNAME 또는 A 별칭 레코드일 수 있습니다. Route 53을 DNS 공급자로 사용하는 경우 A 별칭 레코드를 생성합니다. 타사 DNS 공급자를 사용하는 경우 CNAME 레코드를 사용합니다. CNAME 레코드를 사용하고 프라이빗 API에 대해 프라이빗 DNS가 활성화된 API Gateway 인터페이스 VPC 엔드포인트를 생성하는 경우 프라이빗 API를 호스팅하는 VPC 내에서 사용자 지정 도메인 이름을 확인할 수 없습니다.

리전 사용자 지정 도메인 이름 생성

다음 절차는 리전 사용자 지정 도메인 이름을 생성하는 방법을 보여 줍니다. 이 절차를 완료한 후 API의 스테이지를 사용자 지정 도메인 이름에 라우팅하는 라우팅 규칙을 만듭니다.

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

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

  3. 생성을 선택합니다.

  4. 도메인 이름에 도메인 이름을 입력합니다.

  5. 라우팅 모드에서 라우팅 규칙만을 선택합니다.

    이 라우팅 모드에서는 라우팅 규칙을 사용하여 사용자 지정 도메인 이름의 트래픽을 API로 전송할 수만 있습니다. 자세한 내용은 API Gateway에서 사용자 지정 도메인 이름을 통해 API로 트래픽을 전송합니다. 섹션을 참조하세요.

  6. 최소 TLS 버전에서 버전을 선택합니다.

  7. 엔드포인트 구성 아래의 API 엔드포인트 유형에서 리전을 선택합니다.

  8. ACM 인증서를 선택합니다. 인증서는 API와 동일한 리전에 있어야 합니다.

  9. 생성(Create)을 선택합니다.

AWS CLI

다음 create-domain-name 명령은 사용자 지정 도메인 이름을 생성합니다.

aws apigatewayv2 create-domain-name \ --domain-name 'regional.example.com' \ --domain-name-configurations CertificateArn=arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678 \ --routing-mode ROUTING_RULE_ONLY

출력은 다음과 같습니다.

{ "ApiMappingSelectionExpression": "$request.basepath", "DomainName": "regional.example.com", "DomainNameConfigurations": [ { "ApiGatewayDomainName": "d-numh1z56v6.execute-api.us-west-2.amazonaws.com", "CertificateArn": "arn:aws:acm:us-west-2:123456789012:certificate/123456789012-1234-1234-1234-12345678", "DomainNameStatus": "AVAILABLE", "EndpointType": "REGIONAL", "HostedZoneId": "Z2OJLYMUO9EFXC", "SecurityPolicy": "TLS_1_2" } "RoutingMode": "ROUTING_RULE_ONLY" ] }

DomainNameConfigurations 속성 값은 리전 API의 호스트 이름을 반환합니다. DNS 레코드를 생성하여 사용자 지정 도메인 이름이 이 리전 도메인 이름을 가리키도록 해야 합니다. 이렇게 하면 목적지가 사용자 지정 도메인 이름인 트래픽이 이 리전 API의 호스트 이름으로 라우팅됩니다.

리전 사용자 지정 도메인 이름에 대한 라우팅 규칙 만들기

사용자 지정 도메인 이름을 만든 후 사용자 지정 도메인 이름에서 API로 트래픽이 라우팅되는 방법을 구성합니다. 라우팅 모드를 ROUTING_RULE_ONLY로 설정했으므로 라우팅 규칙을 사용하여 수신 요청을 사용자 지정 도메인 이름으로 라우팅한 다음, API로 다시 라우팅합니다.

이 예제에서는 모든 수신 요청을 사용자 지정 도메인 이름으로 라우팅한 다음 API의 한 스테이지로 다시 라우팅하는 catch-all 규칙을 만듭니다. 다른 헤더 및 경로 조건에 따라 라우팅 규칙을 구성할 수도 있습니다. 자세한 내용은 API 스테이지를 REST API의 사용자 지정 도메인 이름에 연결하는 라우팅 규칙 섹션을 참조하세요.

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

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

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

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

  5. 이 규칙을 조건 없이 유지합니다. 이렇게 하면 모든 요청이 사용자 지정 도메인 이름으로 라우팅된 다음 대상 API 및 대상 스테이지로 다시 라우팅됩니다.

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

  7. 다음을 선택합니다.

  8. 우선 순위 필드에 100을 입력합니다.

    API Gateway는 규칙을 가장 낮은 값에서 가장 높은 값에 이르기까지 우선 순위에 따라 평가합니다. 이는 catch-all 규칙이므로 사용자가 생성하는 추가 규칙을 API Gateway가 먼저 일치시킬 수 있도록 높은 우선 순위를 사용합니다.

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

AWS CLI

다음 create-routing-rule 명령은 catch-all 라우팅 규칙을 만듭니다.

aws apigatewayv2 create-routing-rule \ --domain-name 'regional.example.com' \ --priority 100 \ --conditions \ --actions '[{ "InvokeApi": { "ApiId": "a1b2c3", "Stage": "prod" } }]'

언제든지 라우팅 모드를 변경하고 새 규칙을 만들 수 있습니다. 자세한 내용은 API Gateway에서 사용자 지정 도메인 이름을 통해 API로 트래픽을 전송합니다. 섹션을 참조하세요.

리전 사용자 지정 도메인 이름에 대한 DNS 레코드 생성

사용자 지정 도메인 이름을 생성하고 기본 경로 매핑을 생성한 후 DNS 레코드를 생성하여 사용자 지정 도메인 이름을 새로 만든 리전 도메인 이름에 연결합니다.

AWS Management Console

AWS Management Console을 사용하려면 Route 53 설명서에 따라 트래픽을 API Gateway로 라우팅하도록 Route 53를 구성합니다.

AWS CLI

리전 사용자 지정 도메인 이름을 지정된 호스팅 영역 ID의 호스트 이름으로 매핑하도록 DNS 레코드를 구성하려면 먼저 리전 도메인 이름에 대해 DNS 레코드를 설정하기 위한 구성을 포함하는 JSON 파일을 생성합니다.

다음 setup-dns-record.json에서는 DNS A 레코드를 생성하여 사용자 지정 도메인 이름을 생성하는 과정에서 프로비저닝된 리전 호스트 이름(d-numh1z56v6.execute-api.us-west-2.amazonaws.com)에 리전 사용자 지정 도메인 이름(regional.example.com)을 매핑하는 방법을 보여 줍니다. DNSNameHostedZoneIdAliasTarget 속성은 사용자 지정 도메인 이름의 regionalDomainNameregionalHostedZoneId 값을 가져올 수 있습니다. 또한 Amazon API Gateway 엔드포인트 및 할당량에서 리전 Route 53 호스팅 영역 ID를 가져올 수 있습니다.

{ "Changes": [ { "Action": "CREATE", "ResourceRecordSet": { "Name": "regional.example.com", "Type": "A", "AliasTarget": { "DNSName": "d-numh1z56v6.execute-api.us-west-2.amazonaws.com", "HostedZoneId": "Z2OJLYMUO9EFXC", "EvaluateTargetHealth": false } } } ] }

다음 change-resource-record-sets 명령은 리전 사용자 지정 도메인 이름에 대한 DNS 레코드를 생성합니다.

aws route53 change-resource-record-sets \ --hosted-zone-id Z2OJLYMUO9EFXC \ --change-batch file://path/to/your/setup-dns-record.json

hosted-zone-id를 계정에 설정된 DNS 레코드의 Route 53 호스팅 영역 ID로 교체합니다. change-batch 파라미터 값은 폴더(path/to/your)의 JSON 파일(setup-dns-record.json)을 가리킵니다.