

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Section « Globales » du modèle AWS SAM
<a name="sam-specification-template-anatomy-globals"></a>

Les ressources que vous déclarez dans un AWS SAM modèle ont parfois des configurations communes. Par exemple, vous pouvez avoir une application avec plusieurs ressources `AWS::Serverless::Function` ayant des configurations `Runtime`, `Memory`, `VPCConfig`, `Environment`, et `Cors` identiques. Au lieu de dupliquer ces informations dans chaque ressource, vous pouvez les déclarer une fois dans la section `Globals` et laisser vos ressources en hériter.

La `Globals` section prend en charge les types de AWS SAM ressources suivants :
+ `AWS::Serverless::Api`
+ `AWS::Serverless::CapacityProvider`
+ `AWS::Serverless::Function`
+ `AWS::Serverless::HttpApi`
+ `AWS::Serverless::SimpleTable`
+ `AWS::Serverless::StateMachine`

Exemple :

```
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
```

Dans cet exemple, `HelloWorldFunction` et `ThumbnailFunction` utilisent toutes deux « nodejs12.x » pour `Runtime`, « 180 » secondes pour `Timeout`, et " index.handler " pour `Handler`. `HelloWorldFunction` ajoute la variable d'environnement MESSAGE, en plus du TABLE\$1NAME hérité.`ThumbnailFunction`hérite de toutes les propriétés `Globals` et ajoute une source d'événement API.

## Ressources et propriétés prises en charge
<a name="sam-specification-template-anatomy-globals-supported-resources-and-properties"></a>

AWS SAM prend en charge les ressources et propriétés suivantes.

```
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:
```

**Note**  
Toutes les ressources et propriétés qui ne sont pas incluses dans la liste précédente ne sont pas prises en charge. Voici quelques raisons pour lesquelles elles ne sont pas prises en charge : 1) elles ouvrent des problèmes de sécurité potentiels, ou 2) elles rendent le modèle difficile à comprendre.

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

AWS SAM crée une *valeur implicite APIs* lorsque vous déclarez une API dans la `Events` section. Vous pouvez l'utiliser `Globals` pour remplacer toutes les propriétés APIs implicites.

## Propriétés substituables
<a name="sam-specification-template-anatomy-globals-overrideable"></a>

Les ressources peuvent remplacer les propriétés que vous déclarez dans la section `Globals`. Par exemple, vous pouvez ajouter de nouvelles variables à une carte de variables d'environnement ou remplacer les variables déclarées globalement. Mais la ressource ne peut pas supprimer une propriété spécifiée dans la section `Globals`.

De manière plus générale, la section `Globals` déclare les propriétés que toutes vos ressources partagent. Certaines ressources peuvent fournir de nouvelles valeurs pour les propriétés déclarées globalement, mais elles ne peuvent pas les supprimer. Si certaines ressources utilisent une propriété mais que d'autres ne le font pas, alors vous ne devez pas les déclarer dans la section `Globals`.

Les sections suivantes décrivent comment fonctionne le remplacement pour différents types de données.

### Les types de données primitives sont remplacés
<a name="sam-specification-template-anatomy-globals-overrideable-primitives"></a>

Les types de données primitives peuvent être des chaînes, des nombres, des valeurs booléennes, etc.

La valeur spécifiée dans la section `Resources` remplace la valeur dans la section`Globals`.

Exemple :

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

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

L'`Runtime` pour `MyFunction` est définie sur `python3.9`.

### Les cartes sont fusionnées
<a name="sam-specification-template-anatomy-globals-overrideable-maps"></a>

Les cartes sont également désignées sous le nom de dictionnaires ou de collections de paires valeur-clé.

Les entrées de carte dans la section `Resources` sont fusionnées avec des entrées de carte globales. En cas de doublons, la section `Resource` remplace l'entrée de la section `Globals`.

Exemple :

```
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
```

Les variables d'environnement de `MyFunction` sont définis comme suivant :

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

### Les listes sont additives
<a name="sam-specification-template-anatomy-globals-overrideable-lists"></a>

Les listes sont également désignées sous le nom de tableaux.

Les entrées de liste dans la section `Globals` sont ajoutées à la liste dans la section `Resources`.

Exemple :

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

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

Les `SecurityGroupIds` pour les `VpcConfig` de `MyFunction` sont définis comme suivant :

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