

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# CloudFormation 摄取示例：定义资源
<a name="cfn-ingest-ex-define-resource"></a>

使用 AMS CloudFormation 采集时，您可以自定义 CloudFormation 模板并将其提交给采集更改类型 (ct-36cn2avfrrj9v) 的 CloudFormation RFC 中的 AMS。要创建可以多次重复使用的 CloudFormation 模板，您可以将堆栈配置参数添加到 CloudFormation 采集更改类型执行输入中，而不是在模板中对其进行硬编码。 CloudFormation 最大的好处是你可以重复使用该模板。

AMS CloudFormation 采集更改类型输入架构允许您在 CloudFormation 模板中选择多达 60 个参数并提供自定义值。

此示例说明如何将可用于各种 CloudFormation 模板的资源属性定义为 AMS CloudFormation 采集 CT 中的参数。本节中的示例专门展示了 SNS 主题的用法。

**Topics**
+ [示例 1：对 CloudFormation SNSTopic 资源`TopicName`属性进行硬编码](#cfn-ingest-example-1)
+ [示例 2：使用 SNSTopic 资源引用 AMS 更改类型中的参数](#cfn-ingest-example-2)
+ [示例 3：通过提交具有 AMS 采集更改类型的 JSON 执行参数文件来创建 SNS 主题](#cfn-ingest-example-3)
+ [示例 4：提交引用相同 CloudFormation 模板的新变更类型](#cfn-ingest-example-4)
+ [示例 5：使用 CloudFormation 模板中的默认参数值](#cfn-ingest-example-5)

## 示例 1：对 CloudFormation SNSTopic 资源`TopicName`属性进行硬编码
<a name="cfn-ingest-example-1"></a>

在此示例中，您在 CloudFormation 模板中对 CloudFormation SNSTopic 资源`TopicName`属性进行了硬编码。请注意，该`Parameters`部分为空。

要拥有一个允许您无需创建新 CloudFormation 模板即可更改新堆栈 SNSTopic 名称值的 CloudFormation 模板，您可以使用载入更改类型的 AMS `Parameters` 部分进行该配置。 CloudFormation 通过执行此操作，您可以稍后使用相同的 CloudFormation 模板来创建具有不同`SNSTopic`名称的新堆栈。

```
{
  "AWSTemplateFormatVersion" : "2010-09-09",
  "Description" : "My SNS Topic",
  "Parameters" : {
  },
  "Resources" : {
    "SNSTopic" : {
      "Type" : "AWS::SNS::Topic",
      "Properties" : {
        "TopicName" : "MyTopicName"
      }
    }
  }
}
```



## 示例 2：使用 SNSTopic 资源引用 AMS 更改类型中的参数
<a name="cfn-ingest-example-2"></a>

在此示例中，您使用 CloudFormation 模板中定义的`SNSTopic`资源`TopicName`属性来引用 AMS 更改类型`Parameter`中的。

```
{
  "AWSTemplateFormatVersion" : "2010-09-09",
  "Description" : "My SNS Topic",
  "Parameters" : {
    "TopicName" : {
      "Type" : "String",
      "Description" : "Topic ID",
      "Default" : "MyTopicName"
    }
  },
  "Resources" : {
    "SNSTopic" : {
      "Type" : "AWS::SNS::Topic",
      "Properties" : {
        "TopicName" : { "Ref" : "TopicName"}
      }
    }
  }
}
```

## 示例 3：通过提交具有 AMS 采集更改类型的 JSON 执行参数文件来创建 SNS 主题
<a name="cfn-ingest-example-3"></a>

在此示例中，您提交了一个 JSON 执行参数文件，其中包含创建 SNS 主题的 AMS 收录 CT。`TopicName`必须按照本示例中显示的可修改方式在 CloudFormation 模板中定义 SNS 主题。

```
{
  "Name": "cfn-ingest",
  "Description": "CFNIngest Web Application Stack",
  "CloudFormationTemplateS3Endpoint": "$S3_PRESIGNED_URL",
  "VpcId": "VPC_ID",
  "Tags": [
    {"Key": "Enviroment Type", "Value": "Dev"}
  ],
  "Parameters": [
    {"Name": "TopicName", "Value": "MyTopic1"}
  ],
  "TimeoutInMinutes": 60
}
```

## 示例 4：提交引用相同 CloudFormation 模板的新变更类型
<a name="cfn-ingest-example-4"></a>

此 JSON 示例在不更改 CloudFormation 模板的情况下更改 SNS `TopicName` 值。相反，您可以提交引用相同 CFN CloudFormation 模板的新部署 \$1 Ingestion \$1 Stack from Template \$1 Create 更改类型。

```
{
  "Name": "cfn-ingest",
  "Description": "CFNIngest Web Application Stack",
  "CloudFormationTemplateS3Endpoint": "$S3_PRESIGNED_URL",
  "VpcId": "VPC_ID",
  "Tags": [
    {"Key": "Enviroment Type", "Value": "Dev"}
  ],
  "Parameters": [
    {"Name": "TopicName", "Value": "MyTopic2"}
  ],
  "TimeoutInMinutes": 60
}
```

## 示例 5：使用 CloudFormation 模板中的默认参数值
<a name="cfn-ingest-example-5"></a>

在此示例中，之所以创建 SNS `TopicName` = MyTopicName '，是因为`Parameters`执行参数中未提供任何`TopicName`值。如果您不提供`Parameters`定义，则使用 CloudFormation 模板中的默认参数值。

```
{
  "Name": "cfn-ingest",
  "Description": "CFNIngest Web Application Stack",
  "CloudFormationTemplateS3Endpoint": "$S3_PRESIGNED_URL",
  "VpcId": "VPC_ID",
  "Tags": [
    {"Key": "Enviroment Type", "Value": "Dev"}
  ],
  "TimeoutInMinutes": 60
}
```