Pianifica i lavori per Amazon RDS for PostgreSQL e Aurora PostgreSQL utilizzando Lambda e 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 PostgreSQL e Aurora PostgreSQL utilizzando Lambda e Secrets Manager

Creato da Yaser Raja (AWS)

Ambiente: PoC o pilota

Fonte: Database: Relazionale

Target: PostgreSQL su AWS

Tipo R: N/A

Carico di lavoro: open source

Tecnologie: database

Servizi AWS: AWS Lambda; Amazon RDS; AWS Secrets Manager; Amazon Aurora

Riepilogo

Per i database e i database locali ospitati su istanze Amazon Elastic Compute Cloud (Amazon EC2), 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 RDS) o Amazon Aurora PostgreSQL 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 lavori per database compatibili con Amazon RDS for PostgreSQL e Aurora PostgreSQL dopo la migrazione.  

Prerequisiti e limitazioni

Prerequisiti

  • Un account AWS attivo 

  • Un database compatibile con Amazon RDS per PostgreSQL o Aurora PostgreSQL

Limitazioni

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

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

Architettura

Stack di tecnologia 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 DB RDS.

Strumenti

  • AWS Lambda è un servizio di elaborazione che consente di eseguire codice senza effettuare il provisioning o la gestione di server. AWS Lambda esegue il codice solo quando è necessario e si dimensiona 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 per praticamente qualsiasi tipo di applicazione o servizio di backend senza alcuna amministrazione. AWS Lambda esegue il codice su un'infrastruttura di calcolo 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 uno dei linguaggi supportati da AWS Lambda.

  • Amazon CloudWatch Events offre un flusso quasi in tempo reale di eventi di sistema che descrivono i cambiamenti nelle risorse AWS. Utilizzando semplici regole che puoi configurare rapidamente, puoi abbinare gli eventi e indirizzarli verso 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.

  • AWS Secrets Manager ti aiuta a proteggere i segreti per l'accesso alle tue applicazioni, servizi e risorse IT. Puoi ruotare, gestire e recuperare facilmente le credenziali del database, le chiavi API e altri segreti durante tutto il loro ciclo di vita. Gli utenti e le applicazioni recuperano i segreti chiamando le API di Secrets Manager, che eliminano la necessità di codificare le informazioni sensibili in testo normale. Secrets Manager offre una rotazione segreta con integrazione integrata per Amazon RDS, Amazon Redshift e Amazon DocumentDB. Il servizio è estensibile ad altri tipi di segreti, tra cui chiavi API e token OAuth. Secrets Manager ti consente di controllare l'accesso ai segreti utilizzando autorizzazioni granulari e di controllare centralmente la rotazione segreta per le risorse nel cloud AWS, 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 Managing PostgreSQL users and roles (post sul blog AWS).

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, consulta Come fornire in modo sicuro le credenziali del database alle funzioni Lambda utilizzando AWS Secrets Manager (post sul blog AWS).

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 AWS Lambda. 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 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