

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

# 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" ]
```