AWS::LanguageExtensions 轉換 - AWS CloudFormation

這是新的 CloudFormation 範本參考指南。請更新您的書籤和連結。如需 CloudFormation 入門的說明,請參閱 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 轉換時,請謹記以下幾點考量:

  • 當您更新使用 AWS::LanguageExtensions 轉換的堆疊時,建議您不要使用 CloudFormation 主控台中的使用現有範本選項,或同等的命令列選項 --use-previous-templateAWS::LanguageExtensions 轉換在處理期間會將參數解析為常值。當您使用 --use-previous-template 時,CloudFormation 會將此處理過的範本與舊常值搭配使用,以防止套用新的參數值和 Systems Manager 參數更新。反之,請提供原始範本,以確保使用目前的值重新解析參數。

  • 僅由 AWS::LanguageExtensions 轉換提供的內部函數在範本中不支援簡短格式 YAML 語法。使用這些函數的明確參考。例如,使用 Fn::Length 代替 !Length

  • AWS SAM CLI 目前不支援 AWS::LanguageExtensions 轉換的 Fn::ForEach 內建函數。

  • 如果您使用多個轉換,請使用清單格式。如果您使用自訂巨集,請將 AWS 提供的轉換放在自訂巨集之後。如果您同時使用 AWS::LanguageExtensionsAWS::Serverless 轉換,則在清單中,AWS::LanguageExtensions 轉換必須排在 AWS::Serverless 轉換之前。

  • 僅在範本的 ResourcesConditionsOutputs 區段中,支援 AWS::LanguageExtensions 轉換提供的功能和屬性。

範例

下列範例顯示如何借助 AWS::LanguageExtensions 轉換使用由該轉換定義的 Fn::Length 內建函數。

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 範本上執行自訂處理