

# 使用 `AWS::CloudFormation::Interface` 元数据整理 CloudFormation 参数
<a name="aws-cloudformation-interface"></a>

`AWS::CloudFormation::Interface` 是一种元数据键，用于定义参数在 CloudFormation 控制台中的分组和排序方式。在控制台中创建或更新堆栈时，默认情况下控制台会依照输入参数的逻辑 ID 的字母顺序将其列出。您可以借助此键定义自己的参数分组和排序方法，以便用户高效地指定参数值。例如，您可以将所有 EC2 相关的参数放到一个组中、将所有 VPC 相关的参数放到另一个组中。

在元数据键中，您可以指定要创建的组、每个组包含的参数以及控制台在其分组中显示各个参数时的顺序。

您还可以定义参数标签。标签是控制台显示的易记名称或描述，以代替参数的逻辑 ID。标签可帮助用户了解为每个参数指定的值。例如，您可以将 `KeyPair` 参数标记为 `Select an EC2 key pair`。

在元数据键中引用的所有参数都必须在模板的 `Parameters` 部分中声明。

**注意**  
仅 CloudFormation 控制台使用 `AWS::CloudFormation::Interface` 元数据键。AWS CLI 和 API 调用不使用此键。

## 语法
<a name="aws-resource-cloudformation-interface-syntax"></a>

要在 CloudFormation 模板中声明此实体，请使用以下语法：

### JSON
<a name="aws-resource-cloudformation-interface-syntax.json"></a>

```
"Metadata" : {
  "AWS::CloudFormation::Interface" : {
    "ParameterGroups": [
      {
        "Label": {
          "default": "Group Label"
        },
        "Parameters": [
          "Parameter1",
          "Parameter2"
        ]
      }
    ],
    "ParameterLabels": {
      "Parameter1": {
        "default": "Friendly Name for Parameter1"
      }
    }
  }
}
```

### YAML
<a name="aws-resource-cloudformation-interface-syntax.yaml"></a>

```
Metadata:
  AWS::CloudFormation::Interface:
    ParameterGroups:
      - Label:
          default: Group Label
        Parameters:
          - Parameter1
          - Parameter2
    ParameterLabels:
      Parameter1:
        default: Friendly Name for Parameter1
```

## 属性
<a name="w2aac11c23c29c17c17"></a>

`ParameterGroups`  
参数组类型的列表、指定组名称的地方、每个组中的参数以及参数的显示顺序。  
*必需*：否    
`Label`  
参数组的名称。  
*必需*：否  
`default`  
CloudFormation 控制台用于命名参数组的默认标签。  
*必需*：否  
*类型*：字符串  
`Parameters`  
要包含在组中的参数逻辑 ID (区分大小写) 的列表。参数必须已在模板的 `Parameters` 部分中定义。参数只能包含在一个参数组中。  
控制台在 `Other parameters` 组中按字母顺序列出未与参数组关联的参数。  
*必需*：否  
*类型*：字符串值列表

`ParameterLabels`  
创建或更新堆栈时，CloudFormation 控制台显示的参数与易记名称的映射。  
*必需*：否    
参数标签  
参数的标签。标签定义在创建或更新堆栈时 CloudFormation 控制台在 **Specify Parameters** 页面上显示的易记名称或描述。参数标签必须为已在模板的 `Parameters` 部分中声明的有效参数的逻辑 ID（区分大小写）。  
*必需*：否  
`default`  
CloudFormation 控制台用于命名参数的默认标签。  
*必需*：否  
*类型*：字符串

## 示例
<a name="w2aac11c23c29c17c19"></a>

以下示例定义了两个参数组：`Network Configuration` 和 `Amazon EC2 Configuration`。`Network Configuration` 组包含 `VPCID`、`SubnetId` 和 `SecurityGroupID` 参数 (在模板的 `Parameters` 部分中定义，未显示)。参数的列出顺序定义了控制台显示这些参数的顺序，以 `VPCID` 参数开始。以下示例以相似方式分组和排序 `Amazon EC2 Configuration` 参数。

该示例还为 `VPCID` 参数定义了一个标签。控制台将显示**应将此元素部署到哪个 VPC？**，而不是参数的逻辑 ID (`VPCID`)。

### JSON
<a name="aws-cloudformation-interface-example.json"></a>

```
"Metadata" : {
  "AWS::CloudFormation::Interface" : {
    "ParameterGroups" : [
      {
        "Label" : { "default" : "Network Configuration" },
        "Parameters" : [ "VPCID", "SubnetId", "SecurityGroupID" ]
      },
      {
        "Label" : { "default":"Amazon EC2 Configuration" },
        "Parameters" : [ "InstanceType", "KeyName" ]
      }
    ],
    "ParameterLabels" : {
      "VPCID" : { "default" : "Which VPC should this be deployed to?" }
    }
  }
}
```

### YAML
<a name="aws-cloudformation-interface-example.yaml"></a>

```
Metadata: 
  AWS::CloudFormation::Interface: 
    ParameterGroups: 
      - Label: 
          default: "Network Configuration"
        Parameters: 
          - VPCID
          - SubnetId
          - SecurityGroupID
      - Label: 
          default: "Amazon EC2 Configuration"
        Parameters: 
          - InstanceType
          - KeyName
    ParameterLabels: 
      VPCID: 
        default: "Which VPC should this be deployed to?"
```

### 控制台中的参数组
<a name="w2aac11c23c29c17c19c11"></a>

下图展示了使用本示例中的元数据键后，在创建或更新堆栈时控制台如何显示参数组：**控制台中的参数组** 

![\[显示该示例的参数组的控制台。\]](http://docs.aws.amazon.com/zh_cn/AWSCloudFormation/latest/UserGuide/images/console-create-stack-parameter-groups.png)
