Come posso arrestare un cluster Aurora per più di 7 giorni?
Desidero sapere come arrestare un cluster Amazon Aurora per più di 7 giorni.
Risoluzione
Configurare le autorizzazioni IAM
Crea la seguente policy AWS Identity and Access Management (AWS IAM) per consentire ad AWS Lambda di avviare, arrestare e recuperare informazioni dal 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": "*" } ] }
Nota: utilizza un carattere jolly (*) per tutte le risorse o specifica il nome della risorsa Amazon (ARN) del cluster.
Crea un ruolo IAM e collega le policy IAM necessarie
Utilizza la console IAM per creare un ruolo IAM e collegare le policy necessarie. Per Servizio o caso d'uso, scegli Lambda. Per le policy delle autorizzazioni, seleziona la policy AWSLambdaBasicExecutionRole, quindi scegli la policy che hai creato.
Aggiungi tag ai cluster di database
Utilizza la console Amazon Relational Databases (Amazon RDS) per aggiungere due tag al cluster di database. In Chiave, inserisci autostart, quindi inserisci yes per Valore. Scegli Aggiungi un altro tag, quindi inserisci autostop in Chiave e yes in Valore.
Crea funzioni Lambda per avviare e arrestare il cluster di database
Per creare una funzione Lambda che avvii il cluster, completa i seguenti passaggi:
- Apri la console Lambda.
- Nel pannello di navigazione, scegli Funzioni.
- Scegli Crea funzione.
- Scegli Crea da zero.
- In Nome funzione, inserisci un nome per la funzione.
- Per Runtime, scegli Python 3.13.
- Per Architettura, mantieni la selezione predefinita x86_64.
- Espandi Modifica il ruolo di esecuzione predefinito.
- Per Ruolo di esecuzione, scegli Utilizza un ruolo esistente.
- Per Ruolo esistente, seleziona il ruolo IAM.
- Scegli Crea funzione.
- Scegli la scheda Codice.
- Nell'editor Origine del codice, elimina l'esempio e inserisci il seguente codice:
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)
- Scegli Distribuisci.
- Seleziona la scheda Configurazione, quindi scegli Modifica.
- Per Timeout, scegli 0 per min e 10 per sec.
- Scegli Salva.
Per creare una funzione Lambda che arresti il cluster, ripeti i passaggi precedenti. Nell'editor Origine del codice, inserisci il seguente codice:
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)
Esegui un test delle funzioni
Prima del test, arresta il cluster di database. Quindi utilizza la console Lambda per invocare le funzioni. Per Modifica evento salvato, seleziona l'evento.
Crea una pianificazione per avviare e arrestare automaticamente il cluster di database
Puoi utilizzare il Pianificatore Amazon EventBridge per creare una pianificazione che avvii e arresti il cluster in un momento specifico prima e dopo una finestra di manutenzione. Per Tipo di pianificazione, scegli Pianificazione basata su Cron, quindi inserisci l'espressione Cron.
Informazioni correlate
Come posso usare una funzione Lambda per interrompere un'istanza Amazon RDS per più di sette giorni?
- Argomenti
- Database
- Tag
- Aurora MySQL
- Lingua
- Italiano
