

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Seção Global do modelo AWS SAM
<a name="sam-specification-template-anatomy-globals"></a>

Às vezes, os recursos que você declara em um AWS SAM modelo têm configurações comuns. Por exemplo, você pode ter um aplicativo com vários recursos `AWS::Serverless::Function` que têm configurações `Runtime`, `Memory`, `VPCConfig`, `Environment` e `Cors` idênticas. Em vez de duplicar essas informações em todos os recursos, você pode declará-las uma vez na seção `Globals` e permitir que seus recursos as herdem.

A `Globals` seção oferece suporte aos seguintes tipos de AWS SAM recursos:
+ `AWS::Serverless::Api`
+ `AWS::Serverless::CapacityProvider`
+ `AWS::Serverless::Function`
+ `AWS::Serverless::HttpApi`
+ `AWS::Serverless::SimpleTable`
+ `AWS::Serverless::StateMachine`

Exemplo:

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

Neste exemplo, `HelloWorldFunction` e `ThumbnailFunction` usam “nodejs12.x” para `Runtime`, “180” segundos para `Timeout` e “index.handler” para `Handler`. `HelloWorldFunction` adiciona a variável de ambiente MESSAGE, além do TABLE\$1NAME herdado. `ThumbnailFunction` herda todas as propriedades `Globals` e adiciona uma fonte de eventos de API.

## Recursos e propriedades compatíveis
<a name="sam-specification-template-anatomy-globals-supported-resources-and-properties"></a>

AWS SAM suporta os seguintes recursos e propriedades.

```
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**  
Os recursos e propriedades que não fazem parte da lista anterior não são aceitas. Alguns motivos para não apoiá-los incluem: 1) Eles abrem possíveis problemas de segurança ou 2) Eles tornam o modelo difícil de entender.

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

AWS SAM cria *implícito APIs* quando você declara uma API na `Events` seção. Você pode usar `Globals` para substituir todas as propriedades de implícito APIs.

## Propriedades substituíveis
<a name="sam-specification-template-anatomy-globals-overrideable"></a>

Os recursos podem substituir as propriedades que você declara na seção `Globals`. Por exemplo, você pode adicionar novas variáveis a um mapa de variáveis de ambiente ou substituir variáveis declaradas globalmente. Mas o recurso não pode remover uma propriedade especificada na seção `Globals`.

De forma mais geral, a seção `Globals` declara propriedades que todos os seus recursos compartilham. Alguns recursos podem fornecer novos valores para propriedades declaradas globalmente, mas não podem removê-las. Se alguns recursos usam uma propriedade, mas outros não, você não deve declará-los na seção `Globals`.

As seções a seguir descrevem como a substituição funciona para diferentes tipos de dados.

### Os tipos de dados primitivos são substituídos
<a name="sam-specification-template-anatomy-globals-overrideable-primitives"></a>

Os tipos de dados primitivos incluem cadeias de caracteres, números, booleanos, e assim por diante.

O valor especificado na seção `Resources` substitui o valor na seção `Globals`.

Exemplo:

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

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

O `Runtime` para `MyFunction` foi definido como `python3.9`.

### Os mapas são mesclados
<a name="sam-specification-template-anatomy-globals-overrideable-maps"></a>

Os mapas também são conhecidos como dicionários ou coleções de pares de chave-valor.

As entradas do mapa na seção `Resources` são mescladas com as entradas do mapa global. Se houver duplicatas, a entrada da seção `Resource` substituirá a entrada da seção `Globals`.

Exemplo:

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

As variáveis de ambiente de `MyFunction` são definidas da seguinte forma:

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

### As listas são aditivas
<a name="sam-specification-template-anatomy-globals-overrideable-lists"></a>

As listas também são conhecidas como matrizes.

As entradas da lista na seção `Globals` são anexadas à lista na seção `Resources`.

Exemplo:

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

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

Os `SecurityGroupIds` para `MyFunction` `VpcConfig` estão definidos da seguinte forma:

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