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à.
Automatizza la distribuzione di applicazioni annidate utilizzando AWS SAM
Creato dal dott. Rahul Sharad Gaikwad (AWS), Dmitry Gulin (AWS), Ishwar Chauthaiwale (AWS) e Tabby Ward (AWS)
aws-sam-nested-stackArchivio | Ambiente: PoC o pilota | Tecnologie: modernizzazione; Serverless; DevOps |
Carico di lavoro: tutti gli altri carichi di lavoro | Servizi AWS: AWS Serverless Application Repository |
Riepilogo
Su Amazon Web Services (AWS), AWS Serverless Application Model (AWS SAM) Serverless Application Model (AWS) Serverless Application Model (AWS) Serverless Application Model (AWS SAM) è un framework open source che fornisce una sintassi abbreviata per esprimere funzioni, API, database e mappature delle sorgenti degli eventi. Con solo poche righe per ogni risorsa, puoi definire l'applicazione che desideri e modellarla utilizzando YAML. Durante la distribuzione, SAM trasforma ed espande la sintassi SAM in sintassi AWS CloudFormation che puoi usare per creare applicazioni serverless più velocemente.
AWS SAM semplifica lo sviluppo, la distribuzione e la gestione di applicazioni serverless sulla piattaforma AWS. Fornisce un framework standardizzato, una distribuzione più rapida, funzionalità di test locali, gestione delle risorse, perfetta integrazione con gli strumenti di sviluppo e una community di supporto. Queste caratteristiche lo rendono uno strumento prezioso per creare applicazioni serverless in modo efficiente ed efficace.
Questo modello utilizza modelli AWS SAM per automatizzare la distribuzione di applicazioni annidate. Un'applicazione annidata è un'applicazione all'interno di un'altra applicazione. Le applicazioni principali chiamano le proprie applicazioni secondarie. Si tratta di componenti liberamente accoppiati di un'architettura serverless.
Utilizzando applicazioni annidate, puoi creare rapidamente architetture serverless altamente sofisticate riutilizzando servizi o componenti creati e gestiti in modo indipendente ma composti utilizzando AWS SAM e Serverless Application Repository. Le applicazioni annidate ti aiutano a creare applicazioni più potenti, a evitare il lavoro duplicato e a garantire la coerenza e le migliori pratiche tra i tuoi team e le tue organizzazioni. Per dimostrare le applicazioni annidate, il pattern distribuisce un esempio di applicazione AWS serverless per il carrello degli acquisti
Prerequisiti e limitazioni
Prerequisiti
Un account AWS attivo
Un cloud privato virtuale (VPC) e sottoreti esistenti
Un ambiente di sviluppo integrato, come AWS Cloud9 o Visual Studio Code (per ulteriori informazioni, consulta Tools to Build
on AWS) Libreria Python wheel installata utilizzando pip install wheel, se non è già installata
Limitazioni
Il numero massimo di applicazioni che possono essere annidate in un'applicazione serverless è 200.
Il numero massimo di parametri per un'applicazione annidata può essere 60.
Versioni del prodotto
Questa soluzione è basata sull'interfaccia a riga di comando AWS SAM (AWS SAM CLI) versione 1.21.1, ma questa architettura dovrebbe funzionare con le versioni successive dell'interfaccia a riga di comando AWS SAM.
Architettura
Stack tecnologico Target
Amazon API Gateway
AWS SAM
Amazon Cognito
Amazon DynamoDB
AWS Lambda
Coda Amazon Simple Queue Service (Amazon SQS)
Architettura di destinazione
Il diagramma seguente mostra come vengono effettuate le richieste degli utenti ai servizi di acquisto chiamando le API. La richiesta dell'utente, incluse tutte le informazioni necessarie, viene inviata ad Amazon API Gateway e all'autorizzatore Amazon Cognito, che esegue i meccanismi di autenticazione e autorizzazione per le API.
Quando un elemento viene aggiunto, eliminato o aggiornato in DynamoDB, un evento viene inserito in DynamoDB Streams, che a sua volta avvia una funzione Lambda. Per evitare l'eliminazione immediata dei vecchi elementi come parte di un flusso di lavoro sincrono, i messaggi vengono inseriti in una coda SQS, che avvia una funzione di lavoro per eliminare i messaggi.
![Operazioni POST e PUT da API Gateway alle funzioni Lambda a DynamoDB e Product Service.](images/pattern-img/218adecc-b5b8-4193-9012-b5d584e2e128/images/5b454bae-5fd4-405d-a37d-6bafc3fcf889.png)
In questa configurazione della soluzione, AWS SAM CLI funge da interfaccia per gli stack CloudFormation AWS. I modelli AWS SAM distribuiscono automaticamente applicazioni annidate. Il modello SAM principale chiama i modelli secondari e lo stack principale distribuisce gli CloudFormation stack secondari. Ogni stack secondario crea le risorse AWS definite nei modelli AWS SAM CloudFormation .
![Processo in quattro fasi che utilizza AWS SAM CLI con uno stack principale e tre CloudFormation stack secondari.](images/pattern-img/218adecc-b5b8-4193-9012-b5d584e2e128/images/5828026e-72ad-4a3f-a5f2-bffac0f13e42.png)
Crea e distribuisci gli stack.
Lo CloudFormation stack di autenticazione contiene Amazon Cognito.
Lo CloudFormation stack di prodotti contiene una funzione Lambda e Amazon API Gateway.
Lo CloudFormation stack Shopping contiene una funzione Lambda, Amazon API Gateway, la coda SQS e il database Amazon DynamoDB.
Strumenti
Strumenti
Amazon API Gateway ti aiuta a creare, pubblicare, gestire, monitorare e proteggere REST, HTTP e WebSocket API su qualsiasi scala.
AWS ti CloudFormation aiuta a configurare le risorse AWS, effettuarne il provisioning in modo rapido e coerente e gestirle durante tutto il loro ciclo di vita su account e regioni AWS.
Amazon Cognito fornisce autenticazione, autorizzazione e gestione degli utenti per app Web e mobili.
Amazon DynamoDB è un servizio di database NoSQL interamente gestito che offre prestazioni elevate, prevedibili e scalabili.
AWS Lambda è un servizio di elaborazione che ti aiuta a eseguire codice senza dover fornire o gestire server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di calcolo che utilizzi.
AWS Serverless Application Model (AWS SAM) Serverless Application Model (AWS SAM) è un framework open source che ti aiuta a creare applicazioni serverless nel cloud AWS.
Amazon Simple Queue Service (Amazon SQS) fornisce una coda ospitata sicura, durevole e disponibile che ti aiuta a integrare e disaccoppiare sistemi e componenti software distribuiti.
Codice
Il codice per questo modello è disponibile nel repository GitHub AWS SAM Nested Stack Sample
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Installa AWS SAM CLI. | Per installare AWS SAM CLI, consulta le istruzioni nella documentazione di AWS SAM. | DevOps ingegnere |
Configura le credenziali AWS. | Per impostare le credenziali AWS in modo che la CLI di AWS SAM possa effettuare chiamate ai servizi AWS per tuo conto, esegui
| DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Clona il repository di codice AWS SAM. |
| DevOps ingegnere |
Implementa modelli per inizializzare il progetto. | Per inizializzare il progetto, esegui il comando. | DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Esamina i modelli di applicazione AWS SAM. | Esamina i modelli per le applicazioni annidate. Questo esempio utilizza i seguenti modelli di applicazioni annidate:
| DevOps ingegnere |
Rivedi il modello principale. | Esamina il modello che richiamerà i modelli di applicazione annidati. In questo esempio, il modello principale è. | DevOps ingegnere |
Compila e crea il codice modello AWS SAM. | Utilizzando l'AWS SAM CLI, esegui il comando seguente.
| DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Implementa le applicazioni. | Per avviare il codice modello SAM che crea gli CloudFormation stack di applicazioni annidate e distribuisce il codice nell'ambiente AWS, esegui il comando seguente.
Il comando richiederà alcune domande. Rispondi a tutte le domande con | DevOps ingegnere |
Attività | Descrizione | Competenze richieste |
---|---|---|
Verifica le pile. | Per esaminare gli CloudFormation stack AWS e le risorse AWS definiti nei modelli AWS SAM, procedi come segue:
| DevOps ingegnere |
Risorse correlate
Riferimenti
Microservizio Serverless Shopping Cart
(applicazione di esempio AWS)
Tutorial e video
Informazioni aggiuntive
Dopo che tutto il codice è a posto, l'esempio ha la seguente struttura di directory:
sam_stacks — Questa cartella contiene il layer.
shared.py
Un layer è un archivio di file che contiene librerie, un runtime personalizzato o altre dipendenze. Con i livelli, puoi utilizzare le librerie nella tua funzione senza doverle includere in un pacchetto di distribuzione.product-mock-service— Questa cartella contiene tutte le funzioni e i file Lambda relativi al prodotto.
shopping-cart-service— Questa cartella contiene tutte le funzioni e i file Lambda relativi agli acquisti.