本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本主題說明如何使用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 主控台中的使用現有範本選項,或同等命令列選項 。 CloudFormation
--use-previous-template
更新堆疊時,請使用原始、未轉換的範本。這將確保堆疊正確更新新的參數值。 -
僅由
AWS::LanguageExtensions
轉換提供的內部函數在範本中不支援簡短格式 YAML 語法。使用這些函數的明確參考。例如,使用Fn::Length
代替!Length
。 -
CLI AWS SAM 目前不支援
AWS::LanguageExtensions
轉換的內部Fn::ForEach
函數。 -
如果您使用多個轉換,請使用清單格式。如果您使用的是自訂巨集,則 位置 AWS提供的轉換會在您的自訂巨集之後進行。如果您同時使用
AWS::LanguageExtensions
和AWS::Serverless
轉換,則在清單中,AWS::LanguageExtensions
轉換必須排在AWS::Serverless
轉換之前。 -
AWS::LanguageExtensions
轉換提供的函數和屬性僅支援範本的Resources
、Conditions
和Outputs
區段。
範例
下列範例示範如何使用 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 範本上執行自訂處理。