

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

# AWS SAM anatomia del modello
<a name="sam-specification-template-anatomy"></a>

Un file AWS SAM modello segue da vicino il formato di un file CloudFormation modello, descritto in [Anatomia del modello](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-anatomy.html) nella Guida per l'*AWS CloudFormation utente*. Le differenze principali tra i file AWS SAM modello e i file CloudFormation modello sono le seguenti:
+ **Dichiarazione Transform.** La dichiarazione `Transform: AWS::Serverless-2016-10-31` è obbligatoria per i file AWS SAM modello. Questa dichiarazione identifica un file CloudFormation modello come file AWS SAM modello. Per ulteriori informazioni sulle trasformazioni, consulta [Transform nella Guida](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-section-structure.html) per l'*AWS CloudFormation utente*.
+ **Sezione Globals.** La `Globals` sezione è unica per. AWS SAM Definisce proprietà comuni a tutte le funzioni serverless e APIs. Tutte le`AWS::Serverless::Function`,`AWS::Serverless::Api`,`AWS::Serverless::CapacityProvider`, `AWS::Serverless::HttpApi``AWS::Serverless::SimpleTable`, e `AWS::Serverless::StateMachine` le risorse ereditano le proprietà definite nella `Globals` sezione. Per ulteriori informazioni su questa sezione, vedere[Sezione Globals del modello AWS SAM](sam-specification-template-anatomy-globals.md).
+ **Sezione Risorse.** Nei AWS SAM modelli la `Resources` sezione può contenere una combinazione di CloudFormation risorse e AWS SAM risorse. Per ulteriori informazioni sulle CloudFormation risorse, consultate il [riferimento ai tipi di AWS risorse e proprietà](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html) nella *Guida AWS CloudFormation per l'utente*. Per ulteriori informazioni sulle AWS SAM risorse, vedere[AWS SAM risorse e proprietà](sam-specification-resources-and-properties.md).

Tutte le altre sezioni di un file AWS SAM modello corrispondono alla sezione del file CloudFormation modello con lo stesso nome.

## YAML
<a name="template-anatomy-outline.yaml"></a>

Il seguente esempio mostra un frammento di modello in formato YAML.

```
Transform: AWS::Serverless-2016-10-31

Globals:
  set of globals

Description:
  String

Metadata:
  template metadata

Parameters:
  set of parameters

Mappings:
  set of mappings

Conditions:
  set of conditions

Resources:
  set of resources

Outputs:
  set of outputs
```

## Sezioni del modello
<a name="template-anatomy-sections"></a>

AWS SAM i modelli possono includere diverse sezioni principali. Sono necessarie solo `Resources` le sezioni `Transform` e.

Puoi includere le sezioni del modello in qualsiasi ordine. Tuttavia, se si utilizzano estensioni linguistiche, è necessario aggiungerle `AWS::LanguageExtensions` *prima* della trasformazione serverless (ovvero prima`AWS::Serverless-2016-10-31`), come mostrato nell'esempio seguente:

```
Transform:
  - AWS::LanguageExtensions
  - AWS::Serverless-2016-10-31
```

Durante la creazione del modello, può essere utile utilizzare l'ordine logico mostrato nell'elenco seguente. Questo perché i valori di una sezione potrebbero fare riferimento a valori di una sezione precedente.

**[Trasforma (obbligatorio)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-section-structure.html)**  
Per AWS SAM i modelli, è necessario includere questa sezione con un valore di`AWS::Serverless-2016-10-31`.  
Le trasformazioni aggiuntive sono facoltative. Per ulteriori informazioni sulle trasformazioni, consulta [Transform nella Guida](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/transform-section-structure.html) per l'*AWS CloudFormation utente*.

**[Globali (opzionale)](sam-specification-template-anatomy-globals.md)**  
Proprietà comuni a tutte le funzioni serverless e APIs tabelle semplici. Tutte le`AWS::Serverless::Function`,`AWS::Serverless::Api`,`AWS::Serverless::CapacityProvider`, `AWS::Serverless::HttpApi``AWS::Serverless::SimpleTable`, e `AWS::Serverless::StateMachine` le risorse ereditano le proprietà definite nella `Globals` sezione.  
Questa sezione è esclusiva di. AWS SAM Non esiste una sezione corrispondente nei CloudFormation modelli.

**[Descrizione (facoltativa)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-description-structure.html)**  
Stringa di testo che descrive il modello.  
Questa sezione corrisponde direttamente alla `Description` sezione dei CloudFormation modelli.

**[Metadata (Metadati) (facoltativa)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/metadata-section-structure.html)**  
Oggetti che forniscono informazioni aggiuntive sul modello.  
Questa sezione corrisponde direttamente alla `Metadata` sezione dei CloudFormation modelli.

**[Parameters (Parametri) (facoltativa)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html)**  
Valori da passare al modello in fase di runtime (quando crei o aggiorni uno stack). Puoi fare riferimento ai parametri dalle sezioni `Resources` e `Outputs` del modello. Gli oggetti dichiarati nella `Parameters` sezione fanno sì che il **sam deploy --guided** comando presenti all'utente istruzioni aggiuntive.  
I valori passati utilizzando il `--parameter-overrides` parametro del `sam deploy` comando e le voci nel file di configurazione hanno la precedenza sulle voci del file modello. AWS SAM Per ulteriori informazioni sul comando, vedere nel riferimento ai `sam deploy` comandi. [sam deploy](sam-cli-command-reference-sam-deploy.md) AWS SAMCLI Per ulteriori informazioni sul file di configurazione, consulta [AWS SAMCLIfile di configurazione](serverless-sam-cli-config.md).

**[Mappings (Mappature) (facoltativa)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/mappings-section-structure.html)**  
Mappatura di chiavi e valori associati che puoi utilizzare per specificare i valori dei parametri condizionali, in modo analogo a una tabella di ricerca. È possibile abbinare una chiave a un valore corrispondente utilizzando la funzione [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-findinmap.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-findinmap.html)intrinseca nelle sezioni `Resources` and`Outputs`.  
Questa sezione corrisponde direttamente alla `Mappings` sezione dei CloudFormation modelli.

**[Conditions (Condizioni) (facoltativa)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/conditions-section-structure.html)**  
Condizioni che consentono di controllare se alcune risorse sono state creati o se a determinate proprietà di risorsa è stato assegnato un valore durante la creazione o l'aggiornamento dello stack. Ad esempio, puoi creare in modo condizionale una risorsa a seconda che lo stack sia destinato a un ambiente di test o di produzione.  
Questa sezione corrisponde direttamente alla `Conditions` sezione dei CloudFormation modelli.

**[Resources (Risorse) (obbligatoria)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resources-section-structure.html)**  
Le risorse dello stack e le relative proprietà, ad esempio un'istanza Amazon Elastic Compute Cloud (Amazon EC2) o un bucket Amazon Simple Storage Service (Amazon S3). Puoi fare riferimento alle risorse nelle sezioni `Resources` e `Outputs` del modello.  
Questa sezione è simile alla sezione dei `Resources` modelli. CloudFormation Nei AWS SAM modelli, questa sezione può contenere AWS SAM risorse oltre alle CloudFormation risorse.

**[Outputs (Output) (facoltativa)](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/outputs-section-structure.html)**  
I valori che vengono restituiti ogni volta che si visualizzano le proprietà dello stack. Ad esempio, puoi dichiarare un output per il nome di un bucket S3 e quindi chiamare il comando `aws cloudformation describe-stacks` AWS Command Line Interface (AWS CLI) per visualizzare il nome.  
Questa sezione corrisponde direttamente alla `Outputs` sezione dei modelli. CloudFormation 

## Fasi successive
<a name="template-anatomy-next-steps"></a>

Per scaricare e distribuire un'applicazione serverless di esempio che contiene un file AWS SAM modello, consulta [Guida introduttiva con AWS SAM](serverless-getting-started.md) e segui le istruzioni riportate in. [Tutorial: Implementa un'applicazione Hello World con AWS SAM](serverless-getting-started-hello-world.md)

# Sezione Globals del modello AWS SAM
<a name="sam-specification-template-anatomy-globals"></a>

A volte le risorse dichiarate in un AWS SAM modello hanno configurazioni comuni. Ad esempio, potresti avere un'applicazione con più `AWS::Serverless::Function` risorse con configurazioni`Runtime`,, `Memory` `VPCConfig``Environment`, e `Cors` identiche. Invece di duplicare queste informazioni in ogni risorsa, potete dichiararle una volta nella `Globals` sezione e lasciare che le risorse le ereditino.

La `Globals` sezione supporta i seguenti tipi di risorse: AWS SAM 
+ `AWS::Serverless::Api`
+ `AWS::Serverless::CapacityProvider`
+ `AWS::Serverless::Function`
+ `AWS::Serverless::HttpApi`
+ `AWS::Serverless::SimpleTable`
+ `AWS::Serverless::StateMachine`

Esempio:

```
Globals:
  Function:
    Runtime: nodejs12.x
    Timeout: 180
    Handler: index.handler
    Environment:
      Variables:
        TABLE_NAME: data-table

Resources:
  HelloWorldFunction:
    Type: AWS::Serverless::Function
    Properties:
      Environment:
        Variables:
          MESSAGE: "Hello From SAM"

  ThumbnailFunction:
    Type: AWS::Serverless::Function
    Properties:
      Events:
        Thumbnail:
          Type: Api
          Properties:
            Path: /thumbnail
            Method: POST
```

In questo esempio, entrambi `ThumbnailFunction` utilizzano «nodejs12.x» per`Runtime`, «180" secondi per `HelloWorldFunction` e «index.handler» per`Timeout`. `Handler` `HelloWorldFunction`aggiunge la variabile di ambiente MESSAGE, oltre alla variabile TABLE\$1NAME ereditata. `ThumbnailFunction`eredita tutte le `Globals` proprietà e aggiunge una fonte di eventi API.

## Risorse e proprietà supportate
<a name="sam-specification-template-anatomy-globals-supported-resources-and-properties"></a>

AWS SAM supporta le seguenti risorse e proprietà.

```
Globals:
  Api:
    AccessLogSetting:
    Auth:
    BinaryMediaTypes:
    CacheClusterEnabled:
    CacheClusterSize:
    CanarySetting:
    Cors:
    DefinitionUri:
    Domain:
    EndpointConfiguration:
    GatewayResponses:
    MethodSettings:
    MinimumCompressionSize:
    Name:
    OpenApiVersion:
    PropagateTags:
    TracingEnabled:
    Variables:
  
  CapacityProvider:
    InstanceRequirements:
    KmsKeyArn:
    OperatorRole:
    PropagateTags:
    ScalingConfig:
    Tags:
    VpcConfig:
  
  Function:
    Architectures:
    AssumeRolePolicyDocument:
    AutoPublishAlias:
    AutoPublishAliasAllProperties:
    CapacityProviderConfig:
    CodeSigningConfigArn:
    CodeUri:
    DeadLetterQueue:
    DeploymentPreference:
    Description:
    DurableConfig:
    Environment:
    EphemeralStorage:
    EventInvokeConfig:
    FileSystemConfigs:
    FunctionScalingConfig:
    FunctionUrlConfig:
    Handler:
    KmsKeyArn:
    Layers:
    LoggingConfig:
    MemorySize:
    PermissionsBoundary:
    PropagateTags:
    ProvisionedConcurrencyConfig:
    PublishToLatestPublished:
    RecursiveLoop:
    ReservedConcurrentExecutions:
    RolePath:
    Runtime:
    RuntimeManagementConfig:
    SnapStart:
    SourceKMSKeyArn:
    Tags:
    TenancyConfig:
    Timeout:
    Tracing:
    VersionDeletionPolicy:
    VpcConfig:

  HttpApi:
    AccessLogSettings:
    Auth:
    PropagateTags:
    StageVariables:
    Tags:

  SimpleTable:
    SSESpecification:
    
  StateMachine:
    PropagateTags:
```

**Nota**  
Tutte le risorse e le proprietà che non sono incluse nell'elenco precedente non sono supportate. Alcuni motivi per non supportarle includono: 1) aprono potenziali problemi di sicurezza o 2) rendono il modello difficile da capire.

## Implicito APIs
<a name="sam-specification-template-anatomy-globals-implicit-apis"></a>

AWS SAM viene creato in *modo implicito APIs* quando si dichiara un'API nella sezione. `Events` È possibile utilizzare `Globals` per sovrascrivere tutte le proprietà implicite. APIs

## Proprietà sovrascrivibili
<a name="sam-specification-template-anatomy-globals-overrideable"></a>

Le risorse possono sovrascrivere le proprietà dichiarate nella sezione. `Globals` Ad esempio, è possibile aggiungere nuove variabili a una mappa di variabili di ambiente oppure sovrascrivere le variabili dichiarate globalmente. Ma la risorsa non può rimuovere una proprietà specificata nella `Globals` sezione.

Più in generale, la `Globals` sezione dichiara le proprietà condivise da tutte le risorse. Alcune risorse possono fornire nuovi valori per le proprietà dichiarate a livello globale, ma non possono rimuoverle. Se alcune risorse utilizzano una proprietà ma altre no, non è necessario dichiararle nella `Globals` sezione.

Le sezioni seguenti descrivono come funziona l'override per diversi tipi di dati.

### I tipi di dati primitivi vengono sostituiti
<a name="sam-specification-template-anatomy-globals-overrideable-primitives"></a>

I tipi di dati primitivi includono stringhe, numeri, valori booleani e così via.

Il valore specificato nella `Resources` sezione sostituisce il valore nella sezione. `Globals`

Esempio:

```
Globals:
  Function:
    Runtime: nodejs12.x

Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Runtime: python3.9
```

La forma `Runtime` `MyFunction` è impostata su. `python3.9`

### Le mappe vengono unite
<a name="sam-specification-template-anatomy-globals-overrideable-maps"></a>

Le mappe sono note anche come dizionari o raccolte di coppie chiave-valore.

Le voci della mappa nella `Resources` sezione vengono unite alle voci della mappa globale. Se sono presenti duplicati, la voce della `Resource` sezione sostituisce la voce della sezione. `Globals`

Esempio:

```
Globals:
  Function:
    Environment:
      Variables:
        STAGE: Production
        TABLE_NAME: global-table

Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      Environment:
        Variables:
          TABLE_NAME: resource-table
          NEW_VAR: hello
```

Le variabili di ambiente di `MyFunction` sono impostate come segue:

```
{
  "STAGE": "Production",
  "TABLE_NAME": "resource-table",
  "NEW_VAR": "hello"
}
```

### Gli elenchi sono additivi
<a name="sam-specification-template-anatomy-globals-overrideable-lists"></a>

Gli elenchi sono noti anche come matrici.

Le voci dell'elenco nella `Globals` sezione vengono anteposte all'elenco nella sezione. `Resources`

Esempio:

```
Globals:
  Function:
    VpcConfig:
      SecurityGroupIds:
        - sg-123
        - sg-456

Resources:
  MyFunction:
    Type: AWS::Serverless::Function
    Properties:
      VpcConfig:
        SecurityGroupIds:
          - sg-first
```

I `SecurityGroupIds` for `MyFunction` `VpcConfig` sono impostati come segue:

```
[ "sg-123", "sg-456", "sg-first" ]
```