

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS SAM テンプレートのグローバルセクション
<a name="sam-specification-template-anatomy-globals"></a>

 AWS SAM テンプレートで宣言するリソースに共通の設定がある場合があります。例えば、アプリケーションに 同一の `Runtime`、`Memory`、`VPCConfig`、`Environment`、および `Cors` 設定を持つ複数の `AWS::Serverless::Function` がある場合があります。すべてのリソースにこの情報を複製する代わりに、`Globals` セクションでそれらを一度だけ宣言し、リソースに継承させることができます。

`Globals` セクションでは、次の AWS SAM リソースタイプがサポートされています。
+ `AWS::Serverless::Api`
+ `AWS::Serverless::CapacityProvider`
+ `AWS::Serverless::Function`
+ `AWS::Serverless::HttpApi`
+ `AWS::Serverless::SimpleTable`
+ `AWS::Serverless::StateMachine`

例:

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

この例では、`HelloWorldFunction` と `ThumbnailFunction` の両方が `Runtime` に「nodejs12.x」、`Timeout` に「180」秒、および `Handler` に「index.handler」を使用しています。`HelloWorldFunction` は、継承された TABLE\_NAME に加えて、MESSAGE 環境変数を追加します。`ThumbnailFunction` はすべての `Globals` プロパティを継承し、API イベントソースを追加します。

## サポートされるリソースとプロパティ
<a name="sam-specification-template-anatomy-globals-supported-resources-and-properties"></a>

AWS SAM では、次のリソースとプロパティがサポートされています。

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

**注記**  
上記のリストに含まれていないリソースとプロパティはサポートされません。それらをサポートしない理由には、1) セキュリティ問題を発生させる可能性がある、または 2) テンプレートを理解しにくくするなどがあります。

## 暗黙的な API
<a name="sam-specification-template-anatomy-globals-implicit-apis"></a>

AWS SAM `Events`セクションで * APIs を宣言すると、 は暗黙*的な API を作成します。`Globals` を使用して、暗黙的な API のすべてのプロパティを上書きできます。

## 上書き可能なプロパティ
<a name="sam-specification-template-anatomy-globals-overrideable"></a>

リソースは、`Globals` セクションで宣言するプロパティを上書きできます。例えば、環境変数マップに新しい変数を追加する、またはグローバルに宣言された変数を上書きすることができます。ただし、リソースは `Globals` セクションで指定されたプロパティを削除できません。

一般に、`Globals` セクションはすべてのリソースが共有するプロパティを宣言します。リソースには、グローバルに宣言されたプロパティに新しい値を提供できるものもありますが、それらを完全に削除することはできません。一部のリソースがあるプロパティを使用するが、他のリソースは使用しないという場合は、それを `Globals` セクションで宣言しない必要があります。

以下のセクションでは、さまざまなデータ型に対して上書きがどのように機能するかについて説明します。

### プリミティブデータ型が置き換えられる
<a name="sam-specification-template-anatomy-globals-overrideable-primitives"></a>

プリミティブデータ型には、文字列、数値、ブール値などがあります。

`Globals` セクションの値が `Resources` セクションで指定された値に置き換えられます。

例:

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

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

`MyFunction` の `Runtime` は `python3.9` に設定されます。

### マップが統合される
<a name="sam-specification-template-anatomy-globals-overrideable-maps"></a>

マップは、ディクショナリまたはキーバリューペアのコレクションとしても知られています。

`Resources` セクションのマップエントリは、グローバルマップエントリと統合されます。重複がある場合は、`Globals` セクションのエントリが `Resource` セクションのエントリで上書きされます。

例:

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

`MyFunction` の環境変数は、以下のように設定されます。

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

### リストが付加される
<a name="sam-specification-template-anatomy-globals-overrideable-lists"></a>

リストは配列としても知られています。

`Globals` セクションのリストエントリは、`Resources` セクションのリストの先頭に付加されます。

例:

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

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

`MyFunction` の `VpcConfig` の `SecurityGroupIds` は、以下のように設定されます。

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