Pianifica i lavori per Amazon RDS for Postgre e SQL Aurora Postgre utilizzando SQL Lambda and Secrets Manager - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Pianifica i lavori per Amazon RDS for Postgre e SQL Aurora Postgre utilizzando SQL Lambda and Secrets Manager

Creato da Yaser Raja () AWS

Ambiente: PoC o pilota

Fonte: Database: Relazionale

Obiettivo: SQL Postgre on AWS

Tipo R: N/A

Carico di lavoro: open source

Tecnologie: database

AWSservizi: AWS LambdaRDS; Amazon; AWS Secrets Manager; Amazon Aurora

Riepilogo

Per i database e i database locali ospitati su istanze Amazon Elastic Compute Cloud EC2 (Amazon), gli amministratori di database utilizzano spesso l'utilità cron per pianificare i lavori.

Ad esempio, un lavoro per l'estrazione dei dati o un lavoro per l'eliminazione dei dati può essere facilmente pianificato utilizzando cron. Per questi lavori, le credenziali del database sono in genere codificate o archiviate in un file di proprietà. Tuttavia, quando esegui la migrazione ad Amazon Relational Database Service (Amazon) o RDS Amazon Aurora SQL Postgre -Compatible Edition, perdi la possibilità di accedere all'istanza host per pianificare cron job. 

Questo modello descrive come utilizzare AWS Lambda e AWS Secrets Manager per pianificare i lavori per i database compatibili con Amazon RDS for SQL Postgre e SQL Aurora Postgre dopo la migrazione.  

Prerequisiti e limitazioni

Prerequisiti

  • Un account attivo AWS 

  • Un database compatibile con Amazon RDS for Postgre o SQL Aurora Postgre SQL

Limitazioni

  • Un processo deve essere completato entro 15 minuti, che è il limite di timeout della funzione Lambda. Per altri limiti, consulta la documentazione di AWSLambda.

  • Il codice Job deve essere scritto in un linguaggio supportato da Lambda.

Architettura

Stack tecnologico di origine

Questo stack include lavori scritti in linguaggi come Bash, Python e Java. Le credenziali del database sono memorizzate nel file delle proprietà e il lavoro viene pianificato utilizzando Linux cron.

Stack tecnologico Target

Questo stack ha una funzione Lambda che utilizza le credenziali archiviate in Secrets Manager per connettersi al database ed eseguire l'attività. La funzione Lambda viene avviata a intervalli pianificati utilizzando Amazon Events. CloudWatch

Architettura Target

CloudWatch evento che avvia una funzione Lambda che pianifica i lavori per l'istanza RDS DB.

Strumenti

  • AWSLambda è un servizio di elaborazione che consente di eseguire codice senza effettuare il provisioning o la gestione di server. AWSLambda esegue il codice solo quando necessario e si ridimensiona automaticamente, da poche richieste al giorno a migliaia al secondo. Paghi solo per il tempo di elaborazione che consumi; non ci sono costi quando il codice non è in esecuzione. Con AWS Lambda, puoi eseguire codice praticamente per qualsiasi tipo di applicazione o servizio di backend senza alcuna amministrazione. AWSLambda esegue il codice su un'infrastruttura di elaborazione ad alta disponibilità e gestisce tutte le risorse di calcolo, tra cui la manutenzione di server e sistemi operativi, il provisioning della capacità e il ridimensionamento automatico, il monitoraggio del codice e la registrazione. Tutto ciò che devi fare è fornire il codice in una delle lingue supportate da AWS Lambda.

  • Amazon CloudWatch Events offre un flusso quasi in tempo reale di eventi di sistema che descrivono i cambiamenti nelle AWS risorse. Utilizzando semplici regole che puoi configurare rapidamente, puoi abbinare gli eventi e indirizzarli a una o più funzioni o flussi di destinazione. CloudWatch Gli eventi vengono a conoscenza dei cambiamenti operativi man mano che si verificano. Risponde a questi cambiamenti operativi e adotta le azioni correttive necessarie, inviando messaggi per rispondere all'ambiente, attivando funzioni, apportando modifiche e acquisendo informazioni sullo stato. Puoi anche utilizzare CloudWatch Events per pianificare azioni automatiche che si avviano automaticamente in determinati momenti utilizzando le espressioni cron o rate.

  • AWSSecrets Manager ti aiuta a proteggere i segreti per l'accesso alle tue applicazioni, servizi e risorse IT. È possibile ruotare, gestire e recuperare facilmente le credenziali, le API chiavi e altri segreti del database durante tutto il loro ciclo di vita. Gli utenti e le applicazioni recuperano i segreti chiamando Secrets ManagerAPIs, che elimina la necessità di codificare le informazioni sensibili in testo normale. Secrets Manager offre una rotazione segreta con integrazione integrata per AmazonRDS, Amazon Redshift e Amazon DocumentDB. Il servizio è estensibile ad altri tipi di segreti, tra cui API chiavi e token. OAuth Secrets Manager consente di controllare l'accesso ai segreti utilizzando autorizzazioni granulari e di controllare centralmente la rotazione segreta per le risorse nel AWS cloud, nei servizi di terze parti e in locale.

Epiche

AttivitàDescrizioneCompetenze richieste

Crea un utente del database per la funzione Lambda.

È buona norma utilizzare utenti di database separati per diverse parti dell'applicazione. Se esiste già un utente del database separato per i tuoi cron job, usalo. Altrimenti, crea un nuovo utente del database. Per ulteriori informazioni, consulta Gestione degli SQL utenti e dei ruoli di Postgre (post AWS del blog).

DBA

Memorizza le credenziali del database come segreto in Secrets Manager.

Segui le istruzioni riportate in Creare un database segreto (documentazione di Secrets Manager).

DBA, DevOps
AttivitàDescrizioneCompetenze richieste

Scegli un linguaggio di programmazione supportato da AWS Lambda.

Per un elenco delle lingue supportate, consulta Lambda runtimes (documentazione Lambda).

Developer

Scrivi la logica per recuperare le credenziali del database da Secrets Manager.

Per un codice di esempio, vedi Come fornire in modo sicuro le credenziali del database alle funzioni Lambda utilizzando Secrets Manager AWS (AWSpost di blog).

Developer

Scrivi la logica per eseguire l'attività pianificata del database.

Esegui la migrazione del codice esistente per il processo di pianificazione che stai utilizzando in locale alla funzione LambdaAWS. Per ulteriori informazioni, consulta Implementazione delle funzioni Lambda (documentazione Lambda).

Developer
AttivitàDescrizioneCompetenze richieste

Crea il pacchetto di distribuzione della funzione Lambda.

Questo pacchetto contiene il codice e le sue dipendenze. Per ulteriori informazioni, consulta Pacchetti di distribuzione (documentazione Lambda).

Developer

Creazione della funzione Lambda

Nella console AWS Lambda, scegli Crea funzione, inserisci il nome di una funzione, scegli l'ambiente di runtime, quindi scegli Crea funzione.

DevOps

Carica il pacchetto di distribuzione.

Scegli la funzione Lambda che hai creato per aprirne la configurazione. Puoi scrivere il codice direttamente nella sezione codice o caricare il pacchetto di distribuzione. Per caricare il pacchetto, vai alla sezione Codice funzione, scegli il tipo di immissione del codice per caricare un file.zip, quindi seleziona il pacchetto.

DevOps

Configura la funzione Lambda in base alle tue esigenze.

Ad esempio, puoi impostare il parametro Timeout sulla durata prevista per la funzione Lambda. Per ulteriori informazioni, consulta Configurazione delle opzioni delle funzioni (documentazione Lambda).

DevOps

Imposta le autorizzazioni per il ruolo della funzione Lambda per accedere a Secrets Manager.

Per istruzioni, consulta Usare i segreti nelle funzioni AWS Lambda (documentazione di Secrets Manager).

DevOps

Prova la funzione Lambda.

Avvia la funzione manualmente per assicurarti che funzioni come previsto.

DevOps
AttivitàDescrizioneCompetenze richieste

Crea una regola per eseguire la funzione Lambda secondo una pianificazione.

Pianifica la funzione Lambda utilizzando CloudWatch Events. Per istruzioni, consulta Pianifica le funzioni Lambda utilizzando CloudWatch gli eventi (tutorial sugli CloudWatch eventi).

DevOps

Risorse correlate