API Gateway API에 DNS 장애 조치에 대한 사용자 지정 상태 확인 구성 - Amazon API Gateway

API Gateway API에 DNS 장애 조치에 대한 사용자 지정 상태 확인 구성

Amazon Route 53 상태 확인을 사용하여 기본 AWS 리전의 API Gateway API에서 보조 리전에 있는 API Gateway API로의 DNS 장애 조치를 제어할 수 있습니다. 이는 리전 문제 발생 시 영향을 완화하는 데 도움이 될 수 있습니다. 사용자 지정 도메인을 사용하는 경우 클라이언트가 API 엔드포인트를 변경하지 않고도 장애 조치를 수행할 수 있습니다.

별칭 레코드로 Evaluate Target Health(대상 상태 평가)를 선택하면 해당 레코드는 해당 리전에서 API Gateway 서비스를 사용할 수 없는 경우에만 실패합니다. 경우에 따라 자체 API Gateway API가 그 이전에 중단될 수 있습니다. DNS 장애 조치를 직접 제어하려면 API Gateway API에 대한 사용자 지정 Route 53 상태 확인을 구성하세요. 이 예시에서는 운영자가 DNS 장애 조치를 제어하는 데 도움이 되는 CloudWatch 경보를 사용합니다. 장애 조치 구성을 위한 더 많은 예제 및 기타 고려 사항은 Route 53을 사용한 재해 복구 메커니즘 생성AWS Lambda 및 CloudWatch를 사용하여 VPC의 프라이빗 리소스에 대한 Route 53 상태 확인 수행을 참조하세요.

사전 조건

이 절차를 완료하려면 다음 리소스를 만들고 구성해야 합니다.

  • 자신이 소유한 웹 도메인

  • 두 AWS 리전에 있는 해당 도메인 이름에 대한 ACM 인증서. 자세한 내용은 사전 조건 섹션을 참조하세요.

  • 도메인 이름을 위한 Route 53 호스팅 영역. 자세한 내용은 Amazon Route 53 개발자 안내서의 호스팅 영역 작업 섹션을 참조하세요.

도메인 이름에 대한 Route 53 장애 조치 DNS 레코드를 생성하는 방법에 대한 자세한 내용은 Amazon Route 53 개발자 안내서의 라우팅 정책 선택을 참조하세요. CloudWatch 경보를 모니터링하는 방법에 대한 자세한 내용은 Amazon Route 53 개발자 안내서의 CloudWatch 경보 모니터링을 참조하세요.

1단계: 리소스 설정

이 예에서는 다음 리소스를 생성하여 도메인 이름에 대한 DNS 장애 조치를 구성합니다.

  • 두 AWS 리전에 있는 API Gateway API

  • 두 AWS 리전에 있는 이름이 같은 API Gateway 사용자 지정 도메인 이름

  • API Gateway API를 사용자 지정 도메인 이름에 연결하는 API Gateway API 매핑

  • 도메인 이름에 대한 Route 53 장애 조치 DNS 레코드

  • 보조 리전의 CloudWatch 경보

  • 보조 리전의 CloudWatch 경보를 기반으로 하는 Route 53 상태 확인

먼저 기본 및 보조 리전에 필요한 모든 리소스가 있는지 확인하세요. 보조 리전에는 알람 및 상태 확인이 포함되어야 합니다. 이렇게 하면 장애 조치를 수행하기 위해 기본 리전에 의존하지 않아도 됩니다. 이러한 리소스를 만드는 예제 AWS CloudFormation 템플릿은 primary.yamlsecondary.yaml 섹션을 참조하세요.

중요

보조 리전으로 장애 조치하기 전에 필요한 리소스를 모두 사용할 수 있는지 확인하세요. 그렇지 않으면 API가 보조 리전의 트래픽을 수용할 준비가 되지 않습니다.

2단계: 보조 리전으로의 장애 조치 시작

다음 예에서 대기 리전은 CloudWatch 지표를 수신하고 장애 조치를 시작합니다. 장애 조치를 시작하기 위해 운영자의 개입이 필요한 사용자 지정 메트릭을 사용합니다.

aws cloudwatch put-metric-data \ --metric-name Failover \ --namespace HealthCheck \ --unit Count \ --value 1 \ --region us-west-1

구성한 CloudWatch 경보에 해당하는 데이터로 지표 데이터를 바꿉니다.

3단계: 장애 조치 테스트

API를 호출하고 보조 리전으로부터 응답이 수신되는지 확인하세요. 1단계에서 예제 템플릿을 사용한 경우 장애 조치 후 응답이 {"message": "Hello from the secondary Region!"}에서 {"message": "Hello from the primary Region!"}으로 변경됩니다.

curl https://my-api.example.com {"message": "Hello from the secondary Region!"}

4단계: 기본 리전으로 돌아가기

기본 리전으로 돌아가려면 상태 확인을 통과하도록 하는 CloudWatch 지표를 전송하세요.

aws cloudwatch put-metric-data \ --metric-name Failover \ --namespace HealthCheck \ --unit Count \ --value 0 \ --region us-west-1

구성한 CloudWatch 경보에 해당하는 데이터로 지표 데이터를 바꿉니다.

API를 호출하고 기본 리전으로부터 응답이 수신되는지 확인하세요. 1단계에서 예제 템플릿을 사용한 경우 응답이 {"message": "Hello from the primary Region!"}에서 {"message": "Hello from the secondary Region!"}으로 변경됩니다.

curl https://my-api.example.com {"message": "Hello from the primary Region!"}

다음 단계: 사용자 지정 및 정기적인 테스트

이 예제에서는 DNS 장애 조치를 구성하는 한 가지 방법을 보여줍니다. 장애 조치를 관리하는 상태 확인에 다양한 CloudWatch 지표 또는 HTTP 엔드포인트를 사용할 수 있습니다. 장애 조치 메커니즘을 정기적으로 테스트하여 예상대로 작동하는지, 운영자가 장애 조치 절차를 잘 알고 있는지 확인하세요.