

これは新しい CloudFormation テンプレートリファレンスガイドです。ブックマークとリンクを更新してください。CloudFormation の開始方法については、『[AWS CloudFormation ユーザーガイド](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)』を参照してください。

# `AWS::Include` 変換
<a name="transform-aws-include"></a>

このトピックでは、`AWS::Include` 変換を使用して CloudFormation テンプレートにボイラープレート内容を挿入する方法について説明します。

`AWS::Include` は CloudFormation マクロであり、スタックテンプレートで参照すると、指定されたファイルの内容をテンプレート内の変換の場所に挿入します。これは変更セットを使用してスタックを作成または更新する際に実行されます。`AWS::Include` 関数の動作は、プログラミング言語の `include`、`copy`、`import` ディレクティブに似ています。

## 使用方法
<a name="aws-include-usage"></a>

テンプレートパラメータセクションまたはテンプレートバージョンを除き、CloudFormation テンプレート内の任意の場所で `AWS::Include` 変換を使用できます。たとえば、マッピングセクションの `AWS::Include` で使用できます。

### テンプレートのトップレベルでの構文
<a name="aws-include-syntax-top-level"></a>

CloudFormation テンプレートの最上位レベルにこの変換を宣伝するには、`Transform` セクションと同様に、次の構文を使用します。

#### JSON
<a name="aws-include-syntax-top-level.json"></a>

```
{
  "Transform":{
    "Name":"AWS::Include",
    "Parameters":{
      "Location":"s3://amzn-s3-demo-bucket/MyFileName.json"
    }
  },
  "Resources":{
    ...
  }
}
```

#### YAML
<a name="aws-include-syntax-top-level.yaml"></a>

```
Transform:
  Name: AWS::Include
  Parameters:
    Location: 's3://amzn-s3-demo-bucket/MyFileName.yaml'
Resources:
  ...
```

### テンプレートのセクションに変換を埋め込む場合の構文
<a name="aws-include-syntax-within-section"></a>

CloudFormation テンプレートのセクション内でこの変換を宣言するには、 `Fn::Transform` 組み込み関数および次の構文を使用します。

#### JSON
<a name="aws-include-syntax-within-section.json"></a>

```
{
  "Fn::Transform":{
    "Name":"AWS::Include",
    "Parameters":{
      "Location":"s3://amzn-s3-demo-bucket/MyFileName.json"
    }
  }
}
```

#### YAML
<a name="aws-include-syntax-within-section.yaml"></a>

```
Fn::Transform:
  Name: AWS::Include
  Parameters:
    Location: s3://amzn-s3-demo-bucket/MyFileName.yaml
```

詳細については、「[`Fn::Transform`](intrinsic-function-reference-transform.md)」を参照してください。

### パラメータ
<a name="aws-include-parameters"></a>

`Location`

この場所は Amazon S3 URI で、S3 バケット内の特定ファイル名です。例えば、`s3://amzn-s3-demo-bucket/MyFile.yaml`。

## 考慮事項
<a name="aws-include-considerations"></a>

`AWS::Include` を使用する際、以下の考慮事項に注意してください。マクロの使用に関するその他の考慮事項については、「*AWS CloudFormation ユーザーガイド*」の「[マクロの考慮事項](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros-overview.html#template-macros-considerations)」を参照してください。
+ 現在サポートされているのは Amazon S3 URI だけで、(Amazon S3 ARN など) 他の Amazon S3 形式はサポートされません。これは GitHub リポジトリでなく、Amazon S3 バケットである必要があります。
+ Amazon S3 URL にアクセスできるユーザーであれば、誰でもそのテンプレートにスニペットを含めることができます。
+ テンプレートスニペットは、有効な JSON である必要があります。
+ テンプレートのスニペットは、有効なキーと値のオブジェクトである必要があります (例えば、`"KeyName": "keyValue"`)。
+ `AWS::Include` を使用するテンプレートスニペットを参照するために `AWS::Include` を使用することはできません。
+ スニペットが変更された場合は、スタックはその変更を自動的に検知しません。これらの変更を取得するには、更新されたスニペットを使用してスタックを更新する必要があります。スタックを更新する場合、含まれるスニペットが知らない間に変更されていないことを確認してください。スタックを更新する前に確認するには、変更セットを確認します。
+ テンプレートとスニペットを作成する場合、YAML と JSON テンプレート言語を組み合わせることができます。
+ 現在、YAML スニペットの簡易表記の使用はサポートされていません。
+ クロスリージョンレプリケーション Amazon S3 URI を `AWS::Include` で指定できます。クロスリージョンレプリケーションオブジェクトにアクセスする際、Amazon S3 バケット名を確認してください。詳細については、「*Amazon S3 ユーザーガイド*」の「[リージョン内およびリージョン間でのオブジェクトのレプリケート](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication.html)」を参照してください。

## 例
<a name="aws-include-examples"></a>

次の例は、`AWS::Include` 変換で待機条件ハンドルを実行する方法を示します。*amzn-s3-demo-bucket* を実際のバケット名に置き換えます。

まず、`single_wait_condition.yaml` という名前の YAML ファイルを次の内容の S3 バケットに保存します。

```
MyWaitCondition:
  Type: AWS::CloudFormation::WaitCondition
  Properties:
    Handle: !Ref MyWaitHandle
    Timeout: '4500'
```

その後、JSON 形式または YAML 形式を使用してこのファイルを参照できます。

### JSON
<a name="aws-include-example.json"></a>

```
{
   "Resources": {
      "MyWaitHandle": {
         "Type": "AWS::CloudFormation::WaitConditionHandle"
      },
      "Fn::Transform": {
         "Name": "AWS::Include",
         "Parameters": {
            "Location": "s3://amzn-s3-demo-bucket/single_wait_condition.yaml"
         }
      }
   }
}
```

### YAML
<a name="aws-include-example.yaml"></a>

```
Resources:
  MyWaitHandle:
    Type: AWS::CloudFormation::WaitConditionHandle
  Fn::Transform:
    Name: AWS::Include
    Parameters:
      Location: "s3://amzn-s3-demo-bucket/single_wait_condition.yaml"
```

詳細については、「*AWS CloudFormation ユーザーガイド*」の「[CloudFormation テンプレートで待機条件を作成する](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-waitcondition.html)」を参照してください。