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"]}, {})
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"]}, {})
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:*:*:*" ] } ]}
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:
- Abra o console do AWS IAM (Identity and Access Management)
- Clique em "Funções" no painel esquerdo e selecione a função da sua função Lambda
- Clique na guia "Permissões" na parte superior da página
- Clique no botão "Adicionar permissão"
- Selecione "Anexar política existente"
- Procure e selecione a política acima
- Clique no botão "Revisar política"
- 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)

- LocationBrazil
- Joined
Excente artigo@aldeiacloud 🤘🏻
For further actions, you may consider blocking this person and/orreporting abuse