Crie dois buckets com hospedagem de site estático habilitada e certifique-se de que a replicação entre regiões esteja habilitada e que os objetos estejam sendo replicados para o bucket de destino.
Crie uma distribuição do CloudFront e use o bucket S3 primário como origem.
Crie uma nova verificação de integridade R53 direcionada ao CNAME da distribuição CF (d123456789.cloudfront.net também funciona), incluindo o caminho do objeto de verificação de integridade (por exemplo, d123456789.cloudfront.net/healthcheck.txt)
Expanda Configuração avançada em Verificação de integridade e defina o intervalo de solicitação como Padrão (30 segundos) e Limite de falha de pelo menos 3.
Crie um novo alarme e selecione um tópico SNS existente ou novo (deve estar na região US-EAST-1)
Crie uma nova função Lambda em qualquer região diferente de US-EAST-1 usando s3_site_failover.py.
Crie um novo gatilho SNS para a função Lambda usando os comandos CLI abaixo.
Crie uma nova assinatura SNS para a função Lambda:
aws sns subscribe --topic-arn "YourSNSTopicARN" --protocol lambda --notification-endpoint "YourLambdaARN" --region "us-east-1"
Crie permissões de invocação do Lambda para o SNS invocar a função:
aws lambda add-permission --function-name "YourLambdaARN" --statement-id "HealthCheck_SNS_Lambda" --action "lambda:InvokeFunction" --principal "sns.amazonaws.com" --source-arn "YourSNSTopicARN"
Certifique-se de que ambas as políticas de bucket permitam acesso público de leitura no bucket.
Faça upload de uma nova página error.html no bucket de origem para evitar ver a resposta 403 para consultas URI de objetos inexistentes.
S3 -> Bucket -> Properties -> Static website hosting -> Error document
Faça upload de um objeto de verificação de integridade no bucket S3 original com o cabeçalho de controle de cache definido como sem cache (isso ajudará a negar falsos positivos com a verificação de integridade R53):
aws s3 cp "local/path/healthcheck.txt" "s3://bucketName/healthcheck.txt" --cache-control no-cache
Simule uma falha no bucket alterando a permissão ou excluindo o objeto de verificação de integridade. Isso resultará em falha na verificação de integridade do R53 e no acionamento do SNS/Lambda para o procedimento de failover.