정적 웹 사이트 호스팅이 활성화된 버킷 2개를 생성하고 교차 리전 복제가 활성화되어 있고 객체가 대상 버킷에 복제되고 있는지 확인하세요.
CloudFront 배포를 생성하고 기본 S3 버킷을 오리진으로 사용합니다.
상태 확인 객체의 경로(예: d123456789.cloudfront.net/healthcheck.txt)를 포함하여 CF 배포의 CNAME(d123456789.cloudfront.net도 작동)을 대상으로 하는 새 R53 상태 확인을 생성합니다.
상태 확인에서 고급 구성을 확장하고 요청 간격을 표준(30초)으로 설정하고 실패 임계값을 3 이상으로 설정합니다.
새 경보를 생성하고 기존 또는 새 SNS 주제를 선택합니다(US-EAST-1 지역에 있어야 함).
s3_site_failover.py를 사용하여 US-EAST-1 이외의 지역에서 새 Lambda 함수를 생성합니다.
아래 CLI 명령을 사용하여 Lambda 함수에 대한 새 SNS 트리거를 생성합니다.
Lambda 함수에 대한 새 SNS 구독을 생성합니다.
aws sns subscribe --topic-arn "YourSNSTopicARN" --protocol lambda --notification-endpoint "YourLambdaARN" --region "us-east-1"
함수를 호출하기 위해 SNS에 대한 Lambda 호출 권한을 생성합니다.
aws lambda add-permission --function-name "YourLambdaARN" --statement-id "HealthCheck_SNS_Lambda" --action "lambda:InvokeFunction" --principal "sns.amazonaws.com" --source-arn "YourSNSTopicARN"
두 버킷 정책 모두 버킷에 대한 공개 읽기 액세스를 허용하는지 확인하세요.
존재하지 않는 객체에 대한 URI 쿼리에 대한 403 응답이 표시되지 않도록 하려면 새 error.html 페이지를 소스 버킷에 업로드하세요.
S3 -> Bucket -> Properties -> Static website hosting -> Error document
캐시 제어 헤더가 no-cache로 설정된 원본 S3 버킷에 상태 확인 객체를 업로드합니다(이렇게 하면 R53 상태 확인으로 오탐지를 무효화하는 데 도움이 됩니다).
aws s3 cp "local/path/healthcheck.txt" "s3://bucketName/healthcheck.txt" --cache-control no-cache
권한을 변경하거나 상태 확인 객체를 삭제하여 버킷 실패를 시뮬레이션합니다. 이로 인해 R53 상태 확인이 실패하고 장애 조치 절차를 위해 SNS/Lambda가 트리거됩니다.