Automatizza la distribuzione di applicazioni annidate utilizzando AWS SAM - 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à.

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 di codice: -sample

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.

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.
  1. Crea e distribuisci gli stack.

  2. Lo CloudFormation stack di autenticazione contiene Amazon Cognito.

  3. Lo CloudFormation stack di prodotti contiene una funzione Lambda e Amazon API Gateway.

  4. 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àDescrizioneCompetenze 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 aws configure il comando e segui le istruzioni.

$aws configure AWS Access Key ID [None]: <your_access_key_id> AWS Secret Access Key [None]: your_secret_access_key Default region name [None]: Default output format [None]:

Per ulteriori informazioni sulla configurazione delle credenziali, consulta Autenticazione e credenziali di accesso.

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Clona il repository di codice AWS SAM.

  1. Clona il repository di esempio aws sam nested stack per questo pattern inserendo il seguente comando.

    git clone https://github.com/aws-samples/aws-sam-nested-stack-sample.git
  2. Naviga nella directory clonata inserendo il seguente comando.

    cd aws-sam-nested-stack-sample
DevOps ingegnere

Implementa modelli per inizializzare il progetto.

Per inizializzare il progetto, esegui il comando. SAM init Quando viene richiesto di scegliere una fonte per il modello, scegliete. Custom Template Location

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Esamina i modelli di applicazione AWS SAM.

Esamina i modelli per le applicazioni annidate. Questo esempio utilizza i seguenti modelli di applicazioni annidate:

  • auth.yaml— Questo modello configura risorse relative all'autenticazione, come Amazon Cognito e AWS Systems Manager Parameter Store.

  • product-mock.yaml— Questo modello distribuisce risorse relative al prodotto, come le funzioni Lambda e Amazon API Gateway.

  • shoppingcart-service.yaml— Questo modello configura risorse relative al carrello della spesa, come AWS Identity and Access Management (IAM), tabelle DynamoDB e funzioni Lambda.

DevOps ingegnere

Rivedi il modello principale.

Esamina il modello che richiamerà i modelli di applicazione annidati. In questo esempio, il modello principale è. template.yml Tutte le applicazioni separate sono annidate nell'unico modello template.yml principale.

DevOps ingegnere

Compila e crea il codice modello AWS SAM.

Utilizzando l'AWS SAM CLI, esegui il comando seguente.

sam build
DevOps ingegnere
AttivitàDescrizioneCompetenze 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.

sam deploy --guided --stack-name shopping-cart-nested-stack --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND

Il comando richiederà alcune domande. Rispondi a tutte le domande cony.

DevOps ingegnere
AttivitàDescrizioneCompetenze richieste

Verifica le pile.

Per esaminare gli CloudFormation stack AWS e le risorse AWS definiti nei modelli AWS SAM, procedi come segue:

  1. Accedi alla Console di gestione AWS e accedi alla CloudFormationconsole.

  2. Verifica che gli stack principale e secondario siano elencati.

    In questo esempio, sam-shopping-cart è lo stack principale che chiama gli stack annidati Auth, Product e Shopping.

    Lo stack di prodotti fornisce il link URL del Product API Gateway come output.

DevOps ingegnere

Risorse correlate

Riferimenti

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.