Cos'è il AWS Serverless Application Model (AWS SAM)? - AWS Serverless Application Model

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à.

Cos'è il AWS Serverless Application Model (AWS SAM)?

Il AWS Serverless Application Model (AWS SAM) è un toolkit che migliora l'esperienza degli sviluppatori nella creazione e nell'esecuzione di applicazioni serverless su. AWS AWS SAM è costituito da due parti principali:

  1. AWS SAM specifica del modello: un framework open source che è possibile utilizzare per definire l'infrastruttura applicativa serverless su. AWS

  2. AWS SAM command line interface (AWS SAMCLI): uno strumento da riga di comando che puoi utilizzare con AWS SAM modelli e integrazioni di terze parti supportate per creare ed eseguire applicazioni serverless.

Sei nuovo nel mondo serverless?

Ti consigliamo una conoscenza di base dei seguenti argomenti:

Per ulteriori informazioni, vedi Concetti serverless.

Quali sono le specifiche del AWS SAM modello?

La specifica del AWS SAM modello è un framework open source che è possibile utilizzare per definire e gestire il codice dell'infrastruttura applicativa serverless. La specifica del AWS SAM modello è:

  • Integrato AWS CloudFormation: utilizza la AWS CloudFormation sintassi direttamente all'interno del AWS SAM modello, sfruttando il suo ampio supporto per le configurazioni di risorse e proprietà. Se lo conoscete già AWS CloudFormation, non è necessario imparare a usare un nuovo servizio per gestire il codice dell'infrastruttura delle applicazioni.

  • Un'estensione di AWS CloudFormation: AWS SAM offre una sintassi unica che si concentra specificamente sull'accelerazione dello sviluppo serverless. È possibile utilizzare sia la AWS CloudFormation AWS SAM sintassi che all'interno dello stesso modello.

  • Una sintassi astratta e abbreviata: utilizzando la AWS SAM sintassi, è possibile definire l'infrastruttura rapidamente, con un minor numero di righe di codice e con una minore possibilità di errori. La sua sintassi è particolarmente curata per eliminare la complessità della definizione dell'infrastruttura applicativa serverless.

  • Trasformazionale: AWS SAM esegue il complesso lavoro di trasformazione del modello nel codice necessario per il provisioning dell'infrastruttura. AWS CloudFormation

Ecco un esempio di applicazione serverless di base. Questa applicazione elabora le richieste per ottenere tutti gli elementi da un database tramite una richiesta HTTP. Consiste delle seguenti parti:

  1. Una funzione che contiene la logica per elaborare la richiesta.

  2. Un'API HTTP che funge da comunicazione tra il client (richiedente) e l'applicazione.

  3. Un database per memorizzare gli articoli.

  4. Autorizzazioni per l'esecuzione sicura dell'applicazione.


				Architettura applicativa di una semplice applicazione serverless.

Il codice di infrastruttura di questa applicazione può essere definito nel seguente AWS SAM modello:

AWSTemplateFormatVersion: 2010-09-09 Transform: AWS::Serverless-2016-10-31 Resources: getAllItemsFunction: Type: AWS::Serverless::Function Properties: Handler: src/get-all-items.getAllItemsHandler Runtime: nodejs12.x Events: Api: Type: HttpApi Properties: Path: / Method: GET Connectors: MyConn: Properties: Destination: Id: SampleTable Permissions: - Read SampleTable: Type: AWS::Serverless::SimpleTable

In 23 righe di codice, viene definita la seguente infrastruttura:

  • Una funzione che utilizza il AWS Lambda servizio.

  • Un'API HTTP che utilizza il servizio Amazon API Gateway.

  • Un database che utilizza il servizio Amazon DynamoDB.

  • Le autorizzazioni AWS Identity and Access Management (IAM) necessarie per consentire a questi servizi di interagire tra loro.

Per effettuare il provisioning di questa infrastruttura, il modello viene distribuito su. AWS CloudFormationDurante la distribuzione, AWS SAM trasforma le 23 righe di codice nella AWS CloudFormation sintassi richiesta per generare queste risorse. AWSIl AWS CloudFormation modello trasformato contiene oltre 200 righe di codice!

{ "AWSTemplateFormatVersion": "2010-09-09", "Resources": { "getAllItemsFunction": { "Type": "AWS::Lambda::Function", "Metadata": { "SamResourceId": "getAllItemsFunction" }, "Properties": { "Code": { "S3Bucket": "aws-sam-cli-managed-default-samclisourcebucket-1a4x26zbcdkqr", "S3Key": "what-is-app/a6f856abf1b2c4f7488c09b367540b5b" }, "Handler": "src/get-all-items.getAllItemsHandler", "Role": { "Fn::GetAtt": [ "getAllItemsFunctionRole", "Arn" ] }, "Runtime": "nodejs12.x", "Tags": [ { "Key": "lambda:createdBy", "Value": "SAM" } ] } }, "getAllItemsFunctionRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Action": [ "sts:AssumeRole" ], "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] } } ] }, "ManagedPolicyArns": [ "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" ], "Tags": [ { "Key": "lambda:createdBy", "Value": "SAM" } ] } }, "getAllItemsFunctionApiPermission": { "Type": "AWS::Lambda::Permission", "Properties": { "Action": "lambda:InvokeFunction", "FunctionName": { "Ref": "getAllItemsFunction" }, "Principal": "apigateway.amazonaws.com", "SourceArn": { "Fn::Sub": [ "arn:${AWS::Partition}:execute-api:${AWS::Region}:${AWS::AccountId}:${__ApiId__}/${__Stage__}/GET/", { "__ApiId__": { "Ref": "ServerlessHttpApi" }, "__Stage__": "*" } ] } } }, "ServerlessHttpApi": { "Type": "AWS::ApiGatewayV2::Api", "Properties": { "Body": { "info": { "version": "1.0", "title": { "Ref": "AWS::StackName" } }, "paths": { "/": { "get": { "x-amazon-apigateway-integration": { "httpMethod": "POST", "type": "aws_proxy", "uri": { "Fn::Sub": "arn:${AWS::Partition}:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${getAllItemsFunction.Arn}/invocations" }, "payloadFormatVersion": "2.0" }, "responses": {} } } }, "openapi": "3.0.1", "tags": [ { "name": "httpapi:createdBy", "x-amazon-apigateway-tag-value": "SAM" } ] } } }, "ServerlessHttpApiApiGatewayDefaultStage": { "Type": "AWS::ApiGatewayV2::Stage", "Properties": { "ApiId": { "Ref": "ServerlessHttpApi" }, "StageName": "$default", "Tags": { "httpapi:createdBy": "SAM" }, "AutoDeploy": true } }, "SampleTable": { "Type": "AWS::DynamoDB::Table", "Metadata": { "SamResourceId": "SampleTable" }, "Properties": { "AttributeDefinitions": [ { "AttributeName": "id", "AttributeType": "S" } ], "KeySchema": [ { "AttributeName": "id", "KeyType": "HASH" } ], "BillingMode": "PAY_PER_REQUEST" } }, "getAllItemsFunctionMyConnPolicy": { "Type": "AWS::IAM::ManagedPolicy", "Metadata": { "aws:sam:connectors": { "getAllItemsFunctionMyConn": { "Source": { "Type": "AWS::Serverless::Function" }, "Destination": { "Type": "AWS::Serverless::SimpleTable" } } } }, "Properties": { "PolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:Query", "dynamodb:Scan", "dynamodb:BatchGetItem", "dynamodb:ConditionCheckItem", "dynamodb:PartiQLSelect" ], "Resource": [ { "Fn::GetAtt": [ "SampleTable", "Arn" ] }, { "Fn::Sub": [ "${DestinationArn}/index/*", { "DestinationArn": { "Fn::GetAtt": [ "SampleTable", "Arn" ] } } ] } ] } ] }, "Roles": [ { "Ref": "getAllItemsFunctionRole" } ] } } } }

Utilizzando AWS SAM, si definiscono 23 righe di codice dell'infrastruttura. AWS SAM trasforma il codice nelle oltre 200 righe di AWS CloudFormation codice necessarie per il provisioning dell'applicazione.

Che cos'è il? AWS SAMCLI

AWS SAMCLIÈ uno strumento da riga di comando che puoi utilizzare con AWS SAM modelli e integrazioni di terze parti supportate per creare ed eseguire applicazioni serverless. Usa il per: AWS SAMCLI

  • Inizializza rapidamente un nuovo progetto applicativo.

  • Crea la tua applicazione per la distribuzione.

  • Esegui il debug e il test locali.

  • Distribuisci l'applicazione.

  • Configura le pipeline di distribuzione CI/CD.

  • Monitora e risolvi i problemi della tua applicazione nel cloud.

  • Sincronizza le modifiche locali sul cloud durante lo sviluppo.

  • E molto altro ancora!

AWS SAMCLIViene utilizzato al meglio se utilizzato con AWS CloudFormation modelli AWS SAM e. Funziona anche con prodotti di terze parti comeTerraform.

Inizializza un nuovo progetto

Seleziona tra i modelli iniziali o scegli una posizione personalizzata per i modelli per iniziare un nuovo progetto.

Qui, usiamo il sam init comando per inizializzare un nuovo progetto applicativo. Selezioniamo il progetto Hello World Example per iniziare. AWS SAMCLIScarica un modello iniziale e crea la struttura di directory delle cartelle del nostro progetto.


					Utilizzo sam init per avviare un nuovo progetto applicativo con.	AWS SAMCLI

Crea la tua applicazione per la distribuzione

Package delle dipendenze delle funzioni e organizza il codice del progetto e la struttura delle cartelle per prepararti alla distribuzione.

Qui, utilizziamo il sam build comando per preparare la nostra applicazione per la distribuzione. AWS SAMCLICrea una .aws-sam directory e organizza le dipendenze delle nostre applicazioni e i file per la distribuzione.


					Utilizzo sam build per preparare un'applicazione per la distribuzione.

Esegui il debug e il test locali

Sul computer locale, simula eventi, testa le API, richiama funzioni e altro ancora per eseguire il debug e testare l'applicazione.

Qui, usiamo il sam local invoke comando per richiamare la nostra localmente. HelloWorldFunction Per fare ciò, AWS SAMCLI crea un contenitore locale, crea la nostra funzione, la richiama e restituisce i risultati.


					Utilizzo del AWS SAMCLI sam local invoke comando per richiamare localmente una funzione.

Distribuzione dell'applicazione

Configura le impostazioni di distribuzione dell'applicazione e distribuiscila nel AWS cloud per fornire le tue risorse.

Qui, utilizziamo il sam deploy --guided comando per distribuire la nostra applicazione tramite un flusso interattivo. Ci AWS SAMCLI guida nella configurazione delle impostazioni di distribuzione della nostra applicazione, trasforma il nostro modello in AWS CloudFormatione lo AWS CloudFormation implementa per creare le nostre risorse.


					Utilizzo del AWS SAMCLI sam deploy comando per distribuire un'applicazione nel cloud. AWS

Configura le pipeline di distribuzione CI/CD

Crea pipeline sicure di integrazione e distribuzione continue (CI/CD), utilizzando un sistema CI/CD supportato.

Qui, utilizziamo il sam pipeline init --bootstrap comando per configurare una pipeline di distribuzione CI/CD per la nostra applicazione. Ci AWS SAMCLI guida attraverso le nostre opzioni e genera le AWS risorse e il file di configurazione da utilizzare con il nostro sistema CI/CD.


					Utilizzo del AWS SAMCLI sam pipeline init --bootstrap comando per configurare una pipeline CI/CD con il nostro sistema CI/CD preferito.

Monitora e risolvi i problemi della tua applicazione nel cloud

Visualizza informazioni importanti sulle risorse distribuite, raccogli i log e utilizza strumenti di monitoraggio integrati come. AWS X-Ray

Qui, utilizziamo il sam list comando per visualizzare le nostre risorse distribuite. Otteniamo il nostro endpoint API e lo invochiamo, il che attiva la nostra funzione. Quindi, utilizziamo sam logs per visualizzare i log della nostra funzione.


					Utilizzo del AWS SAMCLI sam list comando per ottenere il nostro endpoint API. Quindi, sam logs viene utilizzato per visualizzare i log della nostra funzione.

Sincronizza le modifiche locali sul cloud durante lo sviluppo

Mentre sviluppi sul tuo computer locale, sincronizza automaticamente le modifiche nel cloud. Visualizza rapidamente le modifiche ed esegui test e convalide nel cloud.

Qui, usiamo il sam sync --watch comando per AWS SAMCLI controllare le modifiche locali. Modifichiamo il nostro HelloWorldFunction codice e rileva AWS SAMCLI automaticamente la modifica e distribuisce i nostri aggiornamenti nel cloud.


					Utilizzo del AWS SAMCLI sam sync comando per sincronizzare le modifiche locali nel AWS Cloud.

Prova le risorse supportate nel cloud

Richiama e passa eventi alle risorse supportate nel cloud.

Qui, utilizziamo il sam remote invoke comando per testare una funzione Lambda distribuita nel cloud. Invochiamo la nostra funzione Lambda e ne riceviamo i log e la risposta. Con la nostra funzione Lambda configurata per lo streaming delle risposte, quest' AWS SAMCLIultima invia la risposta in tempo reale.


					Utilizzo del AWS SAMCLI sam remote invoke comando per testare la nostra funzione distribuita nel cloud. AWS

Vantaggi dell'utilizzo AWS SAM

Ecco alcuni esempi di ciò che puoi realizzare con AWS SAM:

Definite rapidamente il codice dell'infrastruttura applicativa, utilizzando meno codice

Crea AWS SAM modelli per definire il codice dell'infrastruttura applicativa serverless. Implementa i tuoi modelli direttamente per AWS CloudFormation fornire le tue risorse.

Gestisci le tue applicazioni serverless durante l'intero ciclo di sviluppo

Utilizzalo AWS SAMCLI per gestire la tua applicazione serverless durante le fasi di creazione, creazione, distribuzione, test e monitoraggio del ciclo di vita dello sviluppo. Per ulteriori informazioni, consulta Utilizzo di AWS SAMCLI.

Fornisci rapidamente le autorizzazioni tra le risorse con i connettori AWS SAM

Usa i AWS SAM connettori nei tuoi AWS SAM modelli per definire le autorizzazioni tra le tue AWS risorse. AWS SAM trasforma il tuo codice nelle autorizzazioni IAM necessarie per facilitare il tuo intento. Per ulteriori informazioni, consulta Gestione delle autorizzazioni delle risorse con i connettori AWS SAM.

Sincronizza continuamente le modifiche locali nel cloud durante lo sviluppo

Usa il AWS SAMCLI sam sync comando per sincronizzare automaticamente le modifiche locali nel cloud, velocizzando i flussi di lavoro di sviluppo e test sul cloud. Per ulteriori informazioni, consulta Uso di sam sync.

Gestisci le tue applicazioni serverless Terraform

Usa il AWS SAMCLI per eseguire il debug e il test locali delle funzioni e dei livelli Lambda. Per ulteriori informazioni, consulta AWS SAMCLITerraformsupporto.

Ulteriori informazioni

Per continuare a saperne di più AWS SAM, consulta le seguenti risorse:

  • Il AWS SAM workshop completo: un workshop progettato per insegnarti molte delle principali funzionalità che AWS SAM offre.

  • Sessioni con SAM — Serie di video creata dal nostro team di AWS Serverless Developer Advocate sull'utilizzo. AWS SAM

  • Serverless Land: sito che riunisce le informazioni, i blog, i video, il codice e le risorse di apprendimento più recenti per la tecnologia serverless. AWS

Passaggi successivi

Se è la prima volta che lo usi AWS SAM, vedi. Nozioni di base su AWS SAM