

這是新的 *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` 函數中。

## Usage
<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 參數更新。反之，請提供原始範本，以確保使用目前的值重新解析參數。
+ 僅由 `AWS::LanguageExtensions` 轉換提供的內部函數在範本中不支援簡短格式 YAML 語法。使用這些函數的明確參考。例如，使用 `Fn::Length` 代替 `!Length`。
+ CLI AWS SAM 目前不支援`AWS::LanguageExtensions`轉換的內部`Fn::ForEach`函數。
+ 如果您使用多個轉換，請使用清單格式。如果您使用的是自訂巨集，則 位置 AWS提供的轉換會在您的自訂巨集之後進行。如果您同時使用 `AWS::LanguageExtensions` 和 `AWS::Serverless` 轉換，則在清單中，`AWS::LanguageExtensions` 轉換必須排在 `AWS::Serverless` 轉換之前。
+ 僅在範本的 `Resources`、`Conditions` 和 `Outputs` 區段中，支援 `AWS::LanguageExtensions` 轉換提供的功能和屬性。

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

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

### 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)。