Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Railander Marques
Railander Marques

Posted on • Edited on

     

Lambda 'Start-Stop' AWS RDS - python3.9

Lambda em Python 3.9 paradesligar uma ou várias instâncias RDS, informando os nomes dos bancos a serem desligados na linhastop_rds_instances({"instances": ["my-rds-instance-1", "my-rds-instance-2"]}, {})

import boto3def stop_rds_instances(event, context):    instances = event.get('instances', [])    if not instances:        return {            'statusCode': 400,            'body': 'Please provide a list of instances to stop'        }    rds_client = boto3.client('rds')    stopped_instances = []    for instance in instances:        try:            response = rds_client.stop_db_instance(DBInstanceIdentifier=instance)            stopped_instances.append(instance)        except rds_client.exceptions.DBInstanceNotFoundFault:            print(f'{instance} not found')        except rds_client.exceptions.InvalidDBInstanceStateFault:            print(f'{instance} already stopped')    return {        'statusCode': 200,        'body': f'Successfully stopped instances: {stopped_instances}'    }def lambda_handler(event, context):    stop_rds_instances({"instances": ["my-rds-instance-1", "my-rds-instance-2"]}, {})
Enter fullscreen modeExit fullscreen mode

Lambda em Python 3.9 paraligar uma ou várias instâncias RDS, informando os nomes dos bancos a serem desligados na linhastart_rds_instances({"instances": ["my-rds-instance-1", "my-rds-instance-2"]}, {})

import boto3def start_rds_instances(event, context):    instances = event.get('instances', [])    if not instances:        return {            'statusCode': 400,            'body': 'Please provide a list of instances to start'        }    rds_client = boto3.client('rds')    started_instances = []    for instance in instances:        try:            response = rds_client.start_db_instance(DBInstanceIdentifier=instance)            started_instances.append(instance)        except rds_client.exceptions.DBInstanceNotFoundFault:            print(f'{instance} not found')        except rds_client.exceptions.InvalidDBInstanceStateFault:            print(f'{instance} already started')    return {        'statusCode': 200,        'body': f'Successfully started instances: {started_instances}'    }def lambda_handler(event, context):    start_rds_instances({"instances": ["my-rds-instance-1", "my-rds-instance-2"]}, {})
Enter fullscreen modeExit fullscreen mode

Para que a função Lambda tenha permissão paradesligar ouligar as instâncias RDS usando o cliente do RDS da AWS, você precisará atribuir uma política ao papel da função que permita o acesso ao serviço RDS. Aqui está um exemplo de política JSON que você pode usar:

{    "Version": "2012-10-17",    "Statement": [        {            "Effect": "Allow",            "Action": [              "rds:StartDBInstance",              "rds:StopDBInstance",              "rds:DescribeDBInstances"            ],            "Resource": "*"        },        {            "Effect": "Allow",            "Action": [              "logs:CreateLogGroup",              "logs:CreateLogStream",              "logs:PutLogEvents"            ],            "Resource": [              "arn:aws:logs:*:*:*"            ]        }    ]}
Enter fullscreen modeExit fullscreen mode

Esta política permite que a função Lambda chame os métodosStopDBInstance,StartDBInstance eDescribeDBInstances no serviço RDS, que são necessários para desligar e ligar as instâncias RDS.

Para atribuir essa política ao papel da função lambda, siga estas etapas:

  1. Abra o console do AWS IAM (Identity and Access Management)
  2. Clique em "Funções" no painel esquerdo e selecione a função da sua função Lambda
  3. Clique na guia "Permissões" na parte superior da página
  4. Clique no botão "Adicionar permissão"
  5. Selecione "Anexar política existente"
  6. Procure e selecione a política acima
  7. Clique no botão "Revisar política"
  8. Digite um nome descritivo para a política e clique em "Adicionar permissão"

Obs.:

  • Alterar o tempo de execução para 1 minuto;
  • Para criar o gatilho, clique em Add Trigger, escolha EventBridge e adicione um cron para a função configurada.

Top comments(1)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss
CollapseExpand
 
edsonmarquesio profile image
Edson Marques
AWS Community Builder | HashiCorp Ambassador | IT Engineering Coordinator | Site Reliability Engineer | DevSecOps Engineer | Platform Engineer | Cloud Solutions Architect | Cloud Engineer | Speaker
  • Location
    Brazil
  • Joined

Excente artigo@aldeiacloud 🤘🏻

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

Olá! Eu sou o Railander Marques, criador do canal AldeiaCloud! 🖐️ | 6x AWS Certified | 1x Gitlab Certified | 3x NSE Certified | 1x New Relic Certified | 1x Finops Cert | AWS Community Builder
  • Location
    Brazil
  • Education
    Pós Graduação em Segurança da Informação | Pós Graduação em Cloud Computing
  • Work
    AWS Solutions Architect
  • Joined

More fromRailander Marques

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp