

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Bagian global dari template AWS SAM
<a name="sam-specification-template-anatomy-globals"></a>

Terkadang sumber daya yang Anda deklarasikan dalam AWS SAM template memiliki konfigurasi umum. Misalnya, Anda mungkin memiliki aplikasi dengan beberapa sumber daya `AWS::Serverless::Function` yang memiliki konfigurasi `Runtime`, `Memory`, `VPCConfig`, `Environment`, dan `Cors` yang identik. Alih-alih menggandakan informasi ini di setiap sumber daya, Anda dapat mendeklarasikan mereka sekali pada bagian `Globals` dan biarkan sumber daya Anda mewarisi mereka.

`Globals`Bagian ini mendukung jenis AWS SAM sumber daya berikut:
+ `AWS::Serverless::Api`
+ `AWS::Serverless::CapacityProvider`
+ `AWS::Serverless::Function`
+ `AWS::Serverless::HttpApi`
+ `AWS::Serverless::SimpleTable`
+ `AWS::Serverless::StateMachine`

Contoh:

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

Dalam contoh ini, `HelloWorldFunction` dan `ThumbnailFunction` menggunakan "nodejs12.x" untuk `Runtime`, "180" detik untuk `Timeout`, dan "index.handler" untuk `Handler`. `HelloWorldFunction` menambahkan variabel lingkungan MESSAGE, selain dari mewarisi TABLE\_NAME. `ThumbnailFunction` mewarisi semua properti `Globals` dan menambahkan sumber peristiwa API.

## Sumber daya dan properti yang didukung
<a name="sam-specification-template-anatomy-globals-supported-resources-and-properties"></a>

AWS SAM mendukung sumber daya dan properti berikut.

```
Globals:
  Api:
    AccessLogSetting:
    Auth:
    BinaryMediaTypes:
    CacheClusterEnabled:
    CacheClusterSize:
    CanarySetting:
    Cors:
    DefinitionUri:
    Domain:
    EndpointConfiguration:
    EndpointAccessMode:
    GatewayResponses:
    MethodSettings:
    MinimumCompressionSize:
    Name:
    OpenApiVersion:
    PropagateTags:
    SecurityPolicy:
    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:
```

**catatan**  
Setiap sumber daya dan properti yang tidak termasuk dalam daftar sebelumnya tidak didukung. Beberapa alasan mereka tidak didukung dikarenakan: 1) Mereka membuka potensi masalah keamanan, atau 2) Mereka membuat templatnya sulit untuk dipahami.

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

AWS SAM membuat *implisit APIs* saat Anda mendeklarasikan API di bagian tersebut. `Events` Anda dapat menggunakan `Globals` untuk mengganti semua properti implisit APIs.

## Properti yang dapat ditimpa
<a name="sam-specification-template-anatomy-globals-overrideable"></a>

Sumber daya dapat menimpa properti yang Anda deklarasikan pada bagian `Globals`. Misalnya, Anda dapat menambahkan variabel baru ke peta variabel lingkungan, atau Anda dapat mengganti variabel yang dideklarasikan secara global. Tetapi sumber daya tidak dapat menghapus properti yang ditentukan pada bagian `Globals`.

Secara umum, `Globals` mendeklarasikan properti yang dibagikan oleh semua sumber daya Anda. Beberapa sumber daya dapat memberikan nilai baru untuk properti yang dideklarasikan secara global, tetapi mereka tidak dapat menghapusnya. Jika beberapa sumber daya menggunakan properti namun yang lainnya tidak, maka Anda tidak harus mendeklarasikan mereka dalam bagian `Globals`.

Bagian berikut menjelaskan cara kerja utama untuk tipe data yang berbeda.

### Tipe data primitif diganti
<a name="sam-specification-template-anatomy-globals-overrideable-primitives"></a>

Tipe data primitif mencakup string, angka, Boolean, dan sebagainya.

Nilai yang ditentukan dalam bagian `Resources` menggantikan nilai dalam bagian `Globals`.

Contoh:

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

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

Parameter `Runtime` untuk `MyFunction` diatur ke `python3.9`.

### Peta digabung
<a name="sam-specification-template-anatomy-globals-overrideable-maps"></a>

Peta juga dikenal sebagai kamus atau koleksi pasangan nilai kunci.

Entri peta dalam bagian `Resources` digabung dengan entri peta global. Jika terdapat duplikat, bagian entri `Resource` menimpa bagian entri `Globals`.

Contoh:

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

Variabel lingkungan dari `MyFunction` ditetapkan sebagai berikut:

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

### Daftar adalah aditif
<a name="sam-specification-template-anatomy-globals-overrideable-lists"></a>

Daftar juga dikenal sebagai array.

Daftar entri di bagian `Globals` ditambahkan ke daftar di bagian `Resources`.

Contoh:

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

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

Parameter `SecurityGroupIds` untuk `MyFunction` `VpcConfig` ditetapkan sebagai berikut:

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