

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

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

このトピックでは、`AWS::LanguageExtensions` 変換を使用し、デフォルトでは利用できない追加の関数および機能を有効にする方法について説明します。

`AWS::LanguageExtensions` は CloudFormation マクロであり、スタックテンプレートで参照されると、変更セットを使用してスタックを作成または更新する場合、テンプレート内の解決された値への変換によって定義された組み込み関数を更新します。

CloudFormation テンプレートにこの変換を含めることで、`Fn::ForEach` などの追加機能にアクセスでき、反復などのより高度なオペレーションが可能になります。組み込み関数は、`Ref` や `Fn::GetAtt` 関数など、通常許可されていない場所でも使用できます。

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

`AWS::LanguageExtensions` 変換を使用するには、CloudFormation テンプレートの最上位レベルで宣言する必要があります。`AWS::LanguageExtensions` を他のテンプレートセクションに埋め込まれたトランスフォームとして使用することはできません。

宣言では、リテラル文字列 `AWS::LanguageExtensions` を値として使用する必要があります。変換値の指定には、パラメータまたは関数は使用できません。

### 構文
<a name="aws-languageextensions-syntax"></a>

CloudFormation テンプレートでこの変換を宣言するには、次の構文を使用します。

### JSON
<a name="aws-languageextensions-syntax.json"></a>

```
{
  "Transform":"AWS::LanguageExtensions",
  "Resources":{
    ...
  }
}
```

### YAML
<a name="aws-languageextensions-syntax.yaml"></a>

```
Transform: AWS::LanguageExtensions
Resources:
  ...
```

`AWS::LanguageExtensions` 変換は追加のパラメータがないスタンドアロン宣言です。

## 追加の関数のサポート
<a name="aws-languageextensions-supported-functions"></a>

`AWS::LanguageExtensions` 変換は次の追加の関数をサポートします。
+ [`Fn::ForEach`](intrinsic-function-reference-foreach.md)
+ [`Fn::Length`](intrinsic-function-reference-length.md)
+ [`Fn::ToJsonString`](intrinsic-function-reference-ToJsonString.md)

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

`AWS::LanguageExtensions` 変換を使用する際、以下の考慮事項に注意してください。
+ `AWS::LanguageExtensions` 変換を使用するスタックを更新するときは、CloudFormation コンソールの **[既存のテンプレートを使用]** オプションや、同等のコマンドラインオプション `--use-previous-template` を使用しないことをお勧めします。`AWS::LanguageExtensions` 変換は、処理中にパラメータをリテラル値に解決します。`--use-previous-template` を使用すると、CloudFormation がこの処理済みテンプレートを古いリテラル値とともに使用するため、新しいパラメータ値や Systems Manager パラメータの更新が適用されなくなります。その代わりに元のテンプレートを指定して、パラメータが現在の値で再解決されるようにします。
+ 短縮形式の YAML 構文は、`AWS::LanguageExtensions` 変換でのみ使用できる組み込み関数のテンプレート内ではサポートされていません。これらの関数に対する明示的なリファレンスを使用します。例えば、`!Length` ではなく `Fn::Length` を使用します。
+ 現在、AWS SAM CLI は `AWS::LanguageExtensions` 変換の `Fn::ForEach` 組み込み関数をサポートしていません。
+ 複数の変換を使用している場合は、リスト形式を使用します。カスタムマクロを使用している場合は、カスタムマクロの後にAWS 提供の変換を配置します。`AWS::LanguageExtensions` と `AWS::Serverless` の両方の変換を使用している場合、`AWS::LanguageExtensions` 変換はリスト内で `AWS::Serverless` 変換の前に来る必要があります。
+ `AWS::LanguageExtensions` 変換で提供される関数および属性は、テンプレートの `Resources`、`Conditions`、`Outputs` セクションでのみサポートされています。

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

次の例では、変換によって定義される `Fn::Length` 組み込み関数を使用するため、`AWS::LanguageExtensions` 変換を使用する方法が示されています。

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

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Transform": "AWS::LanguageExtensions",
    "Parameters": {
        "QueueList": {
            "Type": "CommaDelimitedList"
        },
        "QueueNameParam": {
            "Description": "Name for your SQS queue",
            "Type": "String"
        }
    },
    "Resources": {
        "Queue": {
            "Type": "AWS::SQS::Queue",
            "Properties": {
                "QueueName": {
                    "Ref": "QueueNameParam"
                },
                "DelaySeconds": {
                    "Fn::Length": {
                        "Ref": "QueueList"
                    }
                }
            }
        }
    }
}
```

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

```
AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::LanguageExtensions
Parameters:
  QueueList:
    Type: CommaDelimitedList
  QueueNameParam:
    Description: Name for your SQS queue
    Type: String
Resources:
  Queue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: !Ref QueueNameParam
      DelaySeconds:
        'Fn::Length': !Ref QueueList
```

## 関連リソース
<a name="aws-languageextensions-related-resources"></a>

その他の例については、次のトピックを参照してください。
+ [`Fn::ForEach`](intrinsic-function-reference-foreach.md)
+ [`Fn::Length`](intrinsic-function-reference-length.md)
+ [`Fn::ToJsonString`](intrinsic-function-reference-ToJsonString.md)
+ [`Ref`](intrinsic-function-reference-ref.md)
+ [`Fn::GetAtt`](intrinsic-function-reference-getatt.md)
+ [`Fn::FindInMap enhancements`](intrinsic-function-reference-findinmap-enhancements.md)

マクロの使用に関する全般情報については、「*AWS CloudFormation ユーザーガイド*」の「[テンプレートマクロを使用して CloudFormation テンプレートでカスタム処理を実行する](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-macros.html)」を参照してください。