Ir para o conteúdo

Como faço para interromper um cluster do Aurora por mais de sete dias?

4 minuto de leitura
0

Quero saber como interromper um cluster do Amazon Aurora por mais de sete dias.

Resolução

Configure permissões do IAM

Crie a seguinte política do AWS Identity and Access Management (IAM) para permitir que o AWS Lambda inicie, interrompa e recupere informações do cluster:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": [
        "rds:StartDBCluster",
        "rds:StopDBCluster",
        "rds:ListTagsForResource",
        "rds:DescribeDBInstances",
        "rds:StopDBInstance",
        "rds:DescribeDBClusters",
        "rds:StartDBInstance"
      ],
      "Resource": "*"
    }
  ]
}

Observação: use um curinga (*) para todos os recursos ou especifique o nome do recurso da Amazon (ARN) do seu cluster.

Crie um perfil do IAM e anexe as políticas necessárias

Use o console do IAM para criar um perfil do IAM e anexar as políticas necessárias. Para Serviço ou caso de uso, escolha Lambda. Para políticas de permissões, selecione a política AWSLambdaBasicExecutionRole e, em seguida, escolha a política que você criou.

Adicione tags aos clusters de banco de dados

Use o console do Amazon Relational Databases (Amazon RDS) para adicionar duas tags ao seu cluster de banco de dados. Em Chave, insira Inicialização automática e, em seguida, insira Sim para Valor. Escolha Adicionar outra tag e, em seguida, insira ** Interrupção automática** em Chave e Sim para Valor.

Crie funções do Lambda para iniciar e interromper o cluster de banco de dados

Para criar uma função do Lambda a fim de iniciar o cluster, conclua as seguintes etapas:

  1. Abra o console do Lambda.
  2. No painel de navegação, clique em Funções.
  3. Selecione Criar função.
  4. Escolha Criar do zero.
  5. Em Nome da função, insira um nome para sua função.
  6. Em Runtime, escolha Python 3.13.
  7. Para Arquitetura, mantenha a seleção padrão de x86_64.
  8. Expanda Alterar o perfil de execução padrão.
  9. Em Perfil de execução, escolha Usar um perfil existente.
  10. Em Perfil existente, selecione seu perfil do IAM.
  11. Selecione Criar função.
  12. Escolha a guia Código.
  13. No editor de Código-fonte, exclua o código de amostra e insira o seguinte código:
import boto3
rds = boto3.client('rds')

def lambda_handler(event, context):
    #Start DB clusters
    dbs = rds.describe_db_clusters()
    for db in dbs['DBClusters']:
        #Check if DB cluster stopped. Start it if eligible.
        if (db['Status'] == 'stopped'):
            try:
                GetTags = rds.list_tags_for_resource(ResourceName=db['DBClusterArn'])['TagList']
                for tags in GetTags:
                    #if tag "autostart=yes" is set for cluster, start it
                    if(tags['Key'] == 'autostart' and tags['Value'] == 'yes'):
                        result = rds.start_db_cluster(DBClusterIdentifier=db['DBClusterIdentifier'])
                        print("Starting cluster: {0}.".format(db['DBClusterIdentifier']))
            except Exception as e:
                print("Cannot start cluster {0}.".format(db['DBClusterIdentifier']))
                print(e)

if __name__ == "__main__":
    lambda_handler(None, None)
  1. Clique em Implantar.
  2. Clique na guia Configuração e, em seguida, selecione Editar.
  3. Em Tempo limite, escolha 0 para min e 10 para s.
  4. Escolha Salvar.

Para criar uma função do Lambda para interromper o cluster, repita as etapas anteriores. No editor de Código-fonte, insira este código:

import boto3
rds = boto3.client('rds')

def lambda_handler(event, context):
    #Stop DB clusters
    dbs = rds.describe_db_clusters()
    for db in dbs['DBClusters']:
        #Check if DB cluster started. Stop it if eligible.
        if (db['Status'] == 'available'):
            try:
                GetTags = rds.list_tags_for_resource(ResourceName=db['DBClusterArn'])['TagList']
                for tags in GetTags:
                #if tag "autostop=yes" is set for cluster, stop it
                    if(tags['Key'] == 'autostop' and tags['Value'] == 'yes'):
                        result = rds.stop_db_cluster(DBClusterIdentifier=db['DBClusterIdentifier'])
                        print ("Stopping cluster: {0}.".format(db['DBClusterIdentifier']))
            except Exception as e:
                print ("Cannot stop cluster {0}.".format(db['DBClusterIdentifier']))
                print(e)


if __name__ == "__main__":
    lambda_handler(None, None)

Teste suas funções

Antes de testar suas funções, interrompa o cluster de banco de dados. Em seguida, use o console do Lambda para invocar suas funções. Em Editar evento salvo, selecione o evento.

Crie um cronograma para iniciar e interromper automaticamente o cluster de banco de dados

Use o Agendador do Amazon EventBridge para criar um cronograma que inicia e interrompe o cluster em um horário especificado antes e depois da janela de manutenção. Para Tipo de cronograma, escolha Cronograma baseado em expressão cron e, em seguida, insira a expressão cron.

Informações relacionadas

How can I use a Lambda function to stop an Amazon RDS instance for longer than seven days? (Como posso usar uma função do Lambda para interromper uma instância do Amazon RDS por mais de sete dias?)

AWS OFICIALAtualizada há 7 meses