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

8 minuto de leitura
0

Quero interromper um Amazon Relational Database Service (clusters do Amazon Aurora) por mais de sete dias.

Breve descrição

Você pode iniciar e interromper seus clusters do Amazon Aurora facilmente em alguns minutos. Este recurso oferece suporte à economia de custos para bancos de dados que não precisam estar em execução o tempo todo. Você pode interromper um cluster de banco de dados (BD) por até sete dias. Se você não iniciar manualmente seu cluster de banco de dados após sete dias, ele será iniciado automaticamente. Isso acontece para que o cluster não perca nenhuma atualização de manutenção necessária.

Para interromper seu cluster do Aurora por mais de sete dias sem perder as atualizações de manutenção necessárias, faça o seguinte:

1.    Configure as permissões do AWS Identity Access Management (IAM) para permitir que o AWS Lambda faça o seguinte: inicie a instância. Interrompa a instância. Recupere as informações sobre a instância.

2.    Adicione etiquetas para clusters do Aurora que você deseja iniciar e interromper automaticamente.

3.    Crie uma função do Lambda para iniciar o cluster.

4.    Crie uma função do Lambda para interromper o cluster.

5.    Crie um cronograma para fazer o seguinte: inicie um cluster do Aurora no início da janela de manutenção semanal. Interrompa o cluster do Aurora no final da janela de manutenção.

Resolução

Configurar permissões do IAM

Crie uma política do IAM para permitir que o Lambda inicie e interrompa o cluster e recupere informações sobre o cluster.

1.    Abra o console do IAM.

2.    No painel de navegação, selecione Políticas.

3.    Escolha Criar política.

4.    Clique na guia JSON.

5.    Copie a política a seguir e cole a política na guiaJSON para conceder as permissões de IAM necessárias:

{
  "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": "*"
    }
  ]
}

6.    Escolha Próximo: etiquetas.

7.    (Opcional) para adicionar uma etiqueta, escolha Adicionar etiqueta e insira os valores apropriados para os campos Chave e Valor – opcional.

8.    Selecione Próximo: revisar.

9.    Na página Revisar política, em Nome, insira o nome da política. Consulte a seção Resumo para ver as permissões concedidas pela política.

10.    Escolha Criar política.

Para obter mais informações, consulte Criação de políticas na guia JSON.

Criar um perfil do IAM e anexar as políticas necessárias

1.    Abra o console do IAM.

2.    No painel de navegação, escolha Funções.

3.    Selecione Create role (Criar perfil).

4.    Para Select type of trusted entity (Selecionar tipo de entidade confiável), escolha AWS service (Serviço da AWS).

5.    Em Or select a service to view its use cases (Ou selecione um serviço para exibir seus casos de uso), escolha Lambda.

6.    Clique em Next: Permissions (Próximo: permissões).

7.    Para Filter-policies (Políticas de filtro), insira o nome da política criada na seção anterior. Quando a política que você criou for exibida, selecione a política. Para Políticas de filtro, insira AWSLambdaBasicExecutionRole. Quando a política gerenciada AWSLambdaBasicExecutionRole que você criou for exibida, selecione a política.

8.    Escolha Next: Tags (Próximo: etiquetas).

9.    (Opcional) para adicionar uma etiqueta, insira os valores apropriados para os campos Key (Chave) e Value (optional) (Valor [opcional]).

10.    Selecione Next: Review (Próximo: revisar).

11.    Na página Create role (Criar perfil), em Role name (Nome do perfil), insira o nome do perfil que você está criando.

12.    Selecione Create role (Criar perfil).

Para obter mais informações, consulte Creating a role for an AWS service (console) (Criar um perfil para um serviço da AWS [console]).

Adicionar etiquetas para clusters de banco de dados

1.    Abra o console do Amazon RDS.

2.    No painel de navegação, selecione Databases (Bancos de dados).

3.    Escolha o cluster de banco de dados que você deseja iniciar e interromper automaticamente.

4.    Na seção de detalhes, role para baixo até a seção Tags (Etiquetas).

5.    Na guia Tags (Etiquetas), escolha Add (Adicionar). Para a chave Etiqueta, insirainício automático. Para Valor, insira sim. Escolha Add (Adicionar) para salvar as alterações.

6.    Escolha Add (Adicionar) novamente. Para a chave Etiqueta, insira parada automática. Para Valor, insira sim. Escolha Adicionar para salvar as alterações.

Para obter mais informações, consulte Adicionar, listar e remover etiquetas.

Crie uma função do Lambda para iniciar as instâncias de banco de dados marcadas

1.    Abra o console do Lambda.

2.    No painel de navegação, escolha Funções.

3.    Escolha Create function (Criar função).

4.    Escolha Criar a partir do Scratch.

5.    Em Nome da função, insira o nome da função.

6.    Para Tempo de execução, selecione Python 3.7.

7.    Em arquitetura, deixe a seleção padrão de x86_64.

7.    Expanda Alterar função de execução padrão.

8.    Por exemplo, para a função de execução, selecione Usar uma função existente.

9.    Para função existente, selecione a função do IAM que você criou anteriormente.

10.    Escolha Criar função.

11.    Escolha a guia Código.

12.    No editor de código-fonte, exclua o código de exemplo e cole o seguinte:

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'):
            doNotStart=1
            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']))
                if(doNotStart == 1):
                    doNotStart=1
            except Exception as e:
                print ("Cannot start cluster {0}.".format(db['DBClusterIdentifier']))
                print(e)
                

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

13.    Escolha Arquivo, selecione Salvar e, em seguida, escolha Implantar.

15.    Escolha a guia Configuração, escolha Configuração geral e, em seguida, escolha Editar.

16.    Em Tempo limite, faça o seguinte: por min, selecione 0. Para seg, selecione 10. 17.    Escolha Salvar.

Crie uma função do Lambda para interromper as instâncias de banco de dados marcadas

Use as instruções na seção anterior Criar uma função do Lambda para iniciar os clusters de banco de dados marcados para interromper os clusters de banco de dados marcados. Você deve fazer a seguinte alteração:

No editor de Code source (Origem do código), exclua o exemplo de código e cole o seguinte:

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'):
            doNotStop=1
            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']))
                if(doNotStop == 1):
                    doNotStop=1
            except Exception as e:
                print ("Cannot stop cluster {0}.".format(db['DBClusterIdentifier']))
                print(e)
                

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

Realizar testes de função

Suponha que seus clusters de banco de dados marcados estejam no estado Stopped (Interrompido). Para realizar testes de função, faça o seguinte:

1.    Abra a lista Lambda functions (Funções do Lambda).

2.    Escolha a função que você criou para iniciar os clusters de banco de dados.

3.    Escolha Actions (Ações) e, em seguida, escolha Test (Testar).

4.    Na guia Test (Teste), para Name (Nome), insira o nome do seu evento.

5.    Escolha Save changes (Salvar alterações) e, em seguida, escolha Test (Testar).

Criar o cronograma

Suponha que a janela de manutenção semanal para os clusters de banco de dados marcados seja de Sunday 22:00 - 22:30 (Domingo, das 22h às 22h30). Você pode configurar um cronograma criando duas regras para o seguinte:

  • Iniciar automaticamente o cluster de banco de dados 30 minutos antes do início da janela de manutenção
  • Interromper automaticamente o cluster de banco de dados 30 minutos após o término da janela de manutenção

Para criar a regra para iniciar automaticamente a instância de banco de dados 30 minutos antes da janela de manutenção, faça o seguinte:

1.    Abra a lista Lambda functions (Funções do Lambda).

2.    Escolha a função que você criou para iniciar as instâncias de banco de dados.

3.    Em Function overview (Visão geral da função), escolha Add trigger (Adicionar acionador).

4.    Selecione EventBridge (CloudWatch Events) e, em seguida, selecione Create a new rule (Criar uma nova regra).

5.    Em Rule name (Nome da regra), insira o nome da regra que você deseja criar.

6.    Para Schedule Expression (Expressão de programação), adicione uma expressão cron para a programação automatizada (Exemplo: cron (30 21 ? * SUN *)).

7.    Escolha Add (Adicionar).

Use as mesmas instruções para criar outra regra para interromper automaticamente o cluster de banco de dados 30 minutos após a janela de manutenção. Certifique-se de alterar o nome da regra e a expressão cron para a programação automatizada de acordo (Exemplo: cron (00 23 ? * SUN *)).


Informações relacionadas

Como posso interromper uma instância do Amazon RDS por mais de sete dias?

AWS OFICIAL
AWS OFICIALAtualizada há um ano