AWS::LanguageExtensions 変換 - AWS CloudFormation

AWS::LanguageExtensions 変換

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

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

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

使用方法

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

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

構文

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

JSON

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

YAML

Transform: AWS::LanguageExtensions Resources: ...

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

追加の関数のサポート

AWS::LanguageExtensions 変換は次の追加の関数をサポートします。

考慮事項

AWS::LanguageExtensions 変換を使用する際、以下の考慮事項に注意してください。

  • 別のパラメータ値を使用してスタックを更新する際、CloudFormation コンソールで [既存のテンプレートを使用する] オプションを使用しないでください。または、元のテンプレートに変換が含まれている場合、同等のコマンドラインオプション --use-previous-template を使用しないでください。代わりに、スタックを更新する際に、元の変換されていないテンプレートを使用します。スタックが新しいパラメータ値で更新されるようになります。

  • 短縮形式の YAML 構文は、AWS::LanguageExtensions 変換でのみ使用できる組み込み関数のテンプレート内ではサポートされていません。これらの関数に対する明示的なリファレンスを使用します。例えば、!Length ではなく Fn::Length を使用します。

  • 現在、AWS SAM CLI は AWS::LanguageExtensions 変換の Fn::ForEach 組み込み関数をサポートしていません。

  • 複数の変換を使用している場合は、リスト形式を使用します。カスタムマクロを使用している場合は、カスタムマクロの後にAWS 提供の変換を配置します。AWS::LanguageExtensionsAWS::Serverless の両方の変換を使用している場合、AWS::LanguageExtensions 変換はリスト内で AWS::Serverless 変換の前に来る必要があります。

  • AWS::LanguageExtensions 変換で提供される関数および属性は、テンプレートの ResourcesConditionsOutputs セクションでのみサポートされています。

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

JSON

{ "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

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

その他の例については、次のトピックを参照してください。

マクロの使用に関する全般情報については、「AWS CloudFormation ユーザーガイド」の「テンプレートマクロを使用して CloudFormation テンプレートでカスタム処理を実行する」を参照してください。