AWS::LanguageExtensions
変換
このトピックでは、AWS::LanguageExtensions
変換を使用し、デフォルトでは利用できない追加の関数および機能を有効にする方法について説明します。
AWS::LanguageExtensions
は CloudFormation マクロであり、スタックテンプレートで参照されると、変更セットを使用してスタックを作成または更新する場合、テンプレート内の解決された値への変換によって定義された組み込み関数を更新します。
CloudFormation テンプレートにこの変換を含めることで、Fn::ForEach
などの追加機能にアクセスでき、反復などのより高度なオペレーションが可能になります。組み込み関数は、Ref
や Fn::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::LanguageExtensions
とAWS::Serverless
の両方の変換を使用している場合、AWS::LanguageExtensions
変換はリスト内でAWS::Serverless
変換の前に来る必要があります。 -
AWS::LanguageExtensions
変換で提供される関数および属性は、テンプレートのResources
、Conditions
、Outputs
セクションでのみサポートされています。
例
次の例では、変換によって定義される 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 テンプレートでカスタム処理を実行する」を参照してください。