Iniciar / parar automaticamente um AWS RDS SQL Server usando as funções do AWS Lambda

Iniciar / parar automaticamente um AWS RDS SQL Server usando as funções do AWS Lambda


Este artigo fornece uma visão geral da função AWS Lambda para iniciar e parar automaticamente o AWS RDS SQL Server.

Introdução

No artigo, Como parar um AWS RDS SQL Server usando o console da Web e o AWS CLI, exploramos a importância de interromper a instância do RDS para otimizar o custo de seus recursos da AWS. isto
coberto, interrompa e inicie o RDS usando o console da web e a CLI da AWS.

Geralmente, podemos decidir parar o RDS à noite e iniciá-lo novamente pela manhã. Não é viável fazer isso
tarefa manualmente diariamente em um horário fixo. Você também pode esquecê-lo ou ignorá-lo, e isso pode custar-lhe muito dinheiro no final de
o dia. A AWS fornece maneiras de automatizar as instâncias Start e Stop RDS. Você precisa configurá-lo uma vez e segue
os agendamentos definidos por você.

Vamos seguir este artigo para automatizar a atividade Iniciar e Parar da instância do RDS.

Função Lambda para automatizar a inicialização do AWS RDS SQL Server

A AWS fornece um serviço Lambda útil para automatizar a execução de código sem gerenciar a infraestrutura. Nós podemos fornecer
o código em qualquer linguagem suportada, como Python, Node.js, Ruby, Java e executa o código em escalável e
sistemas altamente disponíveis. Ele não cobra por nenhum recurso e você paga apenas pelo tempo de computação do seu código.

Podemos configurar uma função lambda para uma resposta de evento. Por exemplo, podemos acionar um código assim que o usuário carregar uma
arquivo no bucket S3. Podemos implantar um aplicativo da web fornecendo o código nas funções lambda. Suporta
Framework sem servidor.

Etapas para criar uma função do AWS Lambda para o AWS RDS SQL Server

Usamos as seguintes etapas para configurar uma função lambda.

Crie uma política do IAM

A primeira etapa é definir uma política do IAM para obter acesso às ações do RDS e aos eventos de log do AWS Cloud Watch. Navegar para EU SOU nos serviços e clique em Políticas-> Criar Política.

Leia Também  Migrando seus dados para o Azure Cosmos DB

Crie uma política do IAM

Para criar a política, podemos usar o editor Visual ou especificar a instrução JSON. Requer seguir
permissões nesta política

  • RDS:
    • DescribeDBInstances: retorna informações sobre instâncias RDS existentes para sua conta

    • StopDBInstance: permissões para interromper o AWS RDS SQL Server

    • StopDBInstance: permissões para iniciar a instância do RDS

  • Logs do CloudWatch
    • CreateLogGroup: cria um grupo de logs no CloudWatch. O nome do grupo de log permanece exclusivo na conta

    • CreateLogStream: cria um fluxo de logs para o grupo de logs especificado criado usando o CreateLogGroup

    • PutLogEvents: Carrega um lote de eventos no fluxo de logs especificado

Você pode copiar a política JSON acima e colar na política de criação, conforme mostrado abaixo.

Política JSON

Na próxima etapa, forneça um nome e uma descrição para ele. Você também pode visualizar o resumo das permissões que atribuímos para o
Logs RDS e CloudWatch.

Resumo de permissões

Podemos ver que a política gerenciada pelo cliente RDS_Stop_Start_policy é criado.

Política gerenciada pelo cliente

Crie uma função do IAM e anexe a política RDS_Stop_Start_policy ao AWS RDS SQL Server

Nesta etapa, criamos uma função do IAM e anexamos a Política criada na etapa anterior. Clique em Funções -> Criar
Função no painel do IAM.

  • Selecione o tipo de entidade confiável: Selecione Serviço AWS
  • Escolha um caso de uso: Exigimos que a função lambda da AWS execute a tarefa para nós. Selecione os Lambda caso de usuário

Criar uma função do IAM para o AWS RDS SQL Server

Na próxima etapa, pesquise a política que deseja anexar a essa função. No meu caso, é RDS_Stop_StartPolicy.

Pesquisar a política

Podemos pular as tags. É um campo opcional. Revise a definição da função, especifique um nome para a função e crie a função IAM.

especifique um nome de função

Nesta etapa, criamos a função do IAM RDS_Lambda.

Ver função

Criar uma função do AWS Lambda

Depois de configurar a política e a função do IAM, podemos criar funções lambda. Podemos encontrar o serviço Lambda em
a seção Computação de serviços.

Criar uma função do AWS Lambda

Devemos criar a função lambda na mesma região em que nossa instância RDS existe. Você pode ver os existentes utilizados
recursos no painel AWS lambda. Precisamos de funções diferentes para parar e iniciar a instância do RDS.

Função Lambda para iniciar o AWS RDS SQL Server

Aqui, criamos uma função para iniciar o AWS RDS SQL Server. Clique em Criar função no painel.

Painel Lambda

Na função Criar, execute as seguintes tarefas.

Configurações de funções

Ele cria a função lambda, como mostrado abaixo. Você pode ver o ARN (nome do recurso da Amazon) na parte superior do painel.
Exigimos esse ARN (Amazon Resource Name) na próxima etapa da configuração da função lambda.

ARN: arn: aws: lambda: us-east-1: 147081669821: function: RDSStartFunction

Nome do recurso da Amazon

Adicionar política embutida na função existente do IAM

Agora, abra uma nova guia para a função do IAM e edite a função existente RDS_Lambda. Na página de resumo, clique em Adicionar política embutida.

Adicionar política embutida

No editor de políticas Inline, cole o seguinte JSON. Aqui, observe que usamos o ARN do AWS lambda na seção de recursos. Você pode copiar o ARN para o seu ARN lambda existente.

O ARN do Lambda segue o formato: arn: aws: lambda::função:

Lambda ARN

Clique em Revisar política, especifique o nome da política e Criar Política embutida.

Política de revisão

Agora, podemos ver duas políticas na função RDS_Lambda:

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
  • Política gerenciada: RDS_Stop_Start_Policy
  • Política em linha: Manual_RDS_Schedule

Sumário

Agora, volte para a função lambda. No designer, podemos ver a função e as opções para adicionar gatilho e
destino.

Designer de funções

Código da função: Role para baixo e cole o código Python dentro do editor. Você precisa selecionar
idioma apropriado no tempo de execução. Eu vou com a versão mais recente Python 3.8

Código da função

Neste código, realizamos as seguintes tarefas:

  • Importar módulos Python

    • O Botocore funciona como base para o módulo AWS CLI e boto3

    • Boto3 é o AWS SDK para Python

  • A função lambdaFunc.get_function_configuration () obtém a configuração da função lambda

  • Ele usa a função CLI da AWS rds.start_db_instance () para iniciar a função programaticamente

  • Podemos criar outra função para interromper a instância do RDS com etapas semelhantes. Nós só precisamos modificar a função
    rds.start_db_instance () para rds.stop_db_instance ():
    response = rds.stop_db_instance

    (

    DBInstanceIdentifier = DBinstance
    )

  • Variável de ambiente: Usamos a variável de ambiente no script acima para obter o nome da instância do RDS.

    Role para baixo na seção variável de ambiente. Precisamos mapear a instância RDS existente usando a variável de ambiente

    Variável de ambiente

    Nas variáveis ​​de ambiente de edição, clique em Adicionar variável de ambiente

    Editar variável de ambiente

    O AWS Lambda usa um par de valores-chave para a variável de ambiente:

    Clique em Salvar e você receberá uma confirmação na caixa verde:

    Salvar função

Clique em Teste, e dá a opção de Configurar teste. Você obtém o modelo de evento hello world com o nome do evento e os pares de valores-chave. Precisamos de alterações aqui. Especifique um nome de evento e clique em Crio.

modelo de evento olá mundo

Podemos ver um nome de evento na caixa destacada da captura de tela abaixo. Agora, estamos prontos para iniciar o RDS
instância. Clique em Testar para executar a função lambda.

Clique em Teste

Você vê os logs e inicia o processo de iniciar a instância do RDS.

Ver registros

Você pode clicar na guia Monitoramento e mostra as solicitações, duração e duração cobradas do CloudWatch.

Solicitações do CloudWatch

Podemos atualizar o painel do RDS e ele altera o status da instância de Parado para Iniciando.

Painel RDS

Crie uma regra do CloudWatch para iniciar / parar automaticamente o RDS

Depois de criar uma função lambda, podemos agendá-la usando as regras do CloudWatch. Vá para o CloudWatch e clique em Regras -> Criar regra.

Regra do CloudWatch

Etapa 1: criar regra:

Você pode consultar expressões Cron para aprender a programação usando expressões Cron.

Expressões Cron

Clique em Configurar detalhes e digite o nome da regra, descrição. Você também pode ativar e desativar a regra.

Etapa 2: configurar detalhes da regra

Etapa 2: configurar detalhes da regra

Ele cria as regras para executar a função lambda automaticamente.

Pesquisar função do IAM

Conclusão

Neste artigo, exploramos a função lambda para iniciar automaticamente uma instância do RDS. Você pode configurar um similar
função para interromper o AWS RDS SQL Server. Ajuda a gerenciar os custos do RDS de maneira eficaz, sem intervenção manual.
Você também pode criar scripts bash para gerenciar as instâncias do RDS para / inicia. Vou abordá-lo em outros artigos. Fique
sintonizado!

Rajendra Gupta
Últimas mensagens de Rajendra Gupta (ver todos)

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br