AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Come posso utilizza una funzione Lambda per arrestare un'istanza Amazon RDS per più di sette giorni?
Desidero utilizzare AWS Lambda per arrestare un'istanza Amazon Relational Database Service (Amazon RDS) per un periodo superiore ai sette giorni.
Breve descrizione
Per impostazione predefinita, puoi arrestare un'istanza database Amazon RDS per un massimo di sette giorni alla volta. Dopo sette giorni, l'istanza si riavvia in modo da non perdere alcun aggiornamento di manutenzione.
Per arrestare l'istanza per più di sette giorni, puoi utilizzare Step Functions in modo da automatizzare il flusso di lavoro senza perdere una finestra di manutenzione.
Nota: per una risoluzione alternativa, consulta Come posso utilizzare Step Functions per arrestare un'istanza Amazon RDS per più di 7 giorni?
Risoluzione
Configura le autorizzazioni IAM
Crea una policy AWS Identity and Access Management (AWS IAM) per consentire a Lambda di avviare e arrestare l'istanza e recuperare informazioni sull'istanza.
1. Apri la console IAM.
2. Nel pannello di navigazione, scegli Policy.
3. Scegli Crea policy.
4. Scegli la scheda JSON.
5. Per concedere le autorizzazioni IAM richieste, inserisci la seguente policy nella scheda JSON:
{ "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. Scegli Successivo: tag.
7. (Facoltativo) Per aggiungere un tag, scegli Aggiungi tag, quindi inserisci i valori appropriati per i campi Chiave e Valore - facoltativo.
8. Scegli Successivo: verifica.
9. Nella pagina Verifica policy, alla voce Nome, inserisci il nome della policy. Consulta la sezione Riepilogo per vedere le autorizzazioni concesse dalla policy.
10. Scegli Crea policy.
Per ulteriori informazioni, consulta Creazione di policy utilizzando l'editor JSON.
Crea un ruolo IAM e collega le policy richieste
1. Apri la console IAM.
2. Nel pannello di navigazione, scegliRuoli.
3. Scegli Crea ruolo.
4. Per Select type of trusted entity (Seleziona il tipo di entità affidabile), seleziona Servizio AWS.
5. Per Or select a service to view its use cases (Oppure seleziona un servizio per visualizzarne i casi d'uso), seleziona Lambda.
6. Scegli Successivo: autorizzazioni.
7. In Policy di filtro, inserisci il nome della policy che hai creato nella sezione precedente. Dopo la visualizzazione, seleziona la policy. In Policy di filtro, inserisci AWSLambdaBasicExecutionRole. Una volta visualizzata, seleziona la policy gestita AWSLambdaBasicExecutionRole.
8. Scegli Successivo: tag.
9. (Facoltativo) Per aggiungere un tag, inserisci i valori appropriati per i campi Chiave e ** Valore (facoltativo)**.
10. Scegli Successivo: verifica.
11. Nella pagina Crea ruolo, alla voce Nome ruolo, inserisci il nome del ruolo che stai creando.
12. Scegli Crea ruolo.
Per ulteriori informazioni, consulta Creazione di un ruolo per un AWS servizio (console).
Aggiungi tag per le istanze database
1. Apri la console Amazon Aurora e RDS.
2. Nel pannello di navigazione, scegli Database.
3. Scegli l'istanza database che desideri avviare e arrestare automaticamente.
4. Nella sezione Dettagli, scorri verso il basso fino alla sezione Tag.
5. Nella scheda Tag, scegli Aggiungi. In Chiave di tag, inserisci autostart. In Valore, inserisci yes. Scegli Aggiungi per salvare le modifiche.
6. Scegli di nuovo Aggiungi. In Chiave di tag, inserisci autostop. In Valore, inserisci yes. Scegli Aggiungi per salvare le modifiche.
Per ulteriori informazioni, consulta Aggiunta ed eliminazione di tag in Amazon RDS.
Crea una funzione Lambda per avviare le istanze database con tag
1. Apri la console Lambda.
2. Nel pannello di navigazione, scegli Funzioni.
3. Scegli Crea funzione.
4. Scegli Crea da zero.
5. In Nome funzione, inserisci il nome della funzione.
6. Per Runtime, seleziona Python 3.7.
7. Per Architettura, mantieni la selezione predefinita di x86_64.
8. Espandi Modifica il ruolo di esecuzione predefinito.
9. Per Ruolo di esecuzione, seleziona Utilizza un ruolo esistente.
10. Per Ruolo esistente, seleziona il ruolo IAM che hai creato.
11. Scegli Crea funzione.
12. Scegli la scheda Codice.
13. 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 Instances dbs = rds.describe_db_instances() for db in dbs['DBInstances']: #Check if DB instance stopped. Start it if eligible. if (db['DBInstanceStatus'] == 'stopped'): try: GetTags=rds.list_tags_for_resource(ResourceName=db['DBInstanceArn'])['TagList'] for tags in GetTags: #if tag "autostart=yes" is set for instance, start it if(tags['Key'] == 'autostart' and tags['Value'] == 'yes'): result = rds.start_db_instance(DBInstanceIdentifier=db['DBInstanceIdentifier']) print ("Starting instance: {0}.".format(db['DBInstanceIdentifier'])) except Exception as e: print ("Cannot start instance {0}.".format(db['DBInstanceIdentifier'])) print(e) if __name__ == "__main__": lambda_handler(None, None)
14. Seleziona File, scegli Salva, quindi scegli Distribuisci.
15. Seleziona la scheda Configurazione, scegli Configurazione generale, quindi scegli Modifica.
16. In Timeout, completa i seguenti campi:
Per min, seleziona 0.
Per sec, seleziona 10.
17. Scegli Salva.
Crea una funzione Lambda per arrestare le istanze database con tag
Per arrestare le istanze database con tag creando una funzione Lambda, consulta la sezione precedente Crea una funzione Lambda per avviare le istanze database ocn tag. Segui gli stessi passaggi, ma utilizza un codice diverso per il passaggio 12.
Nell'editor Origine del codice, elimina l'esempio e inserisci il seguente codice:
import boto3 rds = boto3.client('rds') def lambda_handler(event, context): #Stop DB instances dbs = rds.describe_db_instances() for db in dbs['DBInstances']: #Check if DB instance is not already stopped if (db['DBInstanceStatus'] == 'available'): try: GetTags=rds.list_tags_for_resource(ResourceName=db['DBInstanceArn'])['TagList'] for tags in GetTags: #if tag "autostop=yes" is set for instance, stop it if(tags['Key'] == 'autostop' and tags['Value'] == 'yes'): result = rds.stop_db_instance(DBInstanceIdentifier=db['DBInstanceIdentifier']) print ("Stopping instance: {0}.".format(db['DBInstanceIdentifier'])) except Exception as e: print ("Cannot stop instance {0}.".format(db['DBInstanceIdentifier'])) print(e) if __name__ == "__main__": lambda_handler(None, None)
Esegui un test di funzionalità
Per le istanze database con tag che si trovano nello stato Arrestato, completa i seguenti passaggi per eseguire un test di funzionalità:
1. Apri l'elenco Funzioni Lambda.
2. Scegli la funzione che hai creato per avviare le istanze database.
3. Seleziona Operazioni, quindi scegli Test.
4. Nella scheda Test, alla voce Nome, inserisci il nome dell'evento.
5. Seleziona Salva modifiche, quindi scegli Test.
Crea la pianificazione
Puoi creare le regole per impostare una pianificazione. Ad esempio, se la finestra di manutenzione settimanale per le istanze database con tag è domenica dalle 22:00 alle 22:30, puoi creare le seguenti regole:
- Avvia automaticamente l'istanza database 30 minuti prima dell'inizio della finestra di manutenzione.
- Arresta automaticamente l'istanza database 30 minuti dopo la fine della finestra di manutenzione.
Per creare la regola per l'avvio automatico dell'istanza database 30 minuti prima della finestra di manutenzione, completa i seguenti passaggi:
1. Apri l'elenco Funzioni Lambda.
2. Scegli la funzione che hai creato per avviare le istanze database.
3. In Panoramica della funzione, scegli Aggiungi trigger.
4. Seleziona EventBridge (CloudWatch Events), quindi scegli Crea una nuova regola.
5. In Nome regola, inserisci il nome della regola che desideri creare.
6. Per Espressione di pianificazione, aggiungi un'espressione Cron per la pianificazione automatica (esempio: cron(30 21 ? * SUN *)).
7. Scegli Aggiungi.
Utilizza le stesse istruzioni per creare un'altra regola per arrestare automaticamente l'istanza database 30 minuti dopo la finestra di manutenzione. Assicurati di modificare di conseguenza il nome della regola e l'espressione Cron per la pianificazione automatica (esempio: cron(00 23 ? * SUN *)).
Informazioni correlate
Implementing DB Instance Stop and Start in Amazon RDS (Implementazione dell'arresto e dell'avvio di un'istanza database in Amazon RDS)
Stopping an Automatically Started Database Instance with Amazon RDS (Arresto di un'istanza database avviata automaticamente con Amazon RDS)
Come posso arrestare un cluster Amazon Aurora per più di 7 giorni?
- Argomenti
- Database
- Lingua
- Italiano

Contenuto pertinente
AWS UFFICIALEAggiornata un anno fa