

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# CloudFormation 擷取範例：定義資源
<a name="cfn-ingest-ex-define-resource"></a>

使用 AMS CloudFormation 擷取時，您可以自訂 CloudFormation 範本，並使用 CloudFormation 擷取變更類型 (ct-36cn2avfrrj9v) 將其提交至 RFC 中的 AMS。若要建立可多次重複使用的 CloudFormation 範本，請將堆疊組態參數新增至 CloudFormation 擷取變更類型執行輸入，而不是在 CloudFormation 範本中硬式編碼。最大的好處是您可以重複使用範本。

AMS CloudFormation 擷取變更類型輸入結構描述可讓您在 CloudFormation 範本中選擇最多 60 個參數，並提供自訂值。

此範例說明如何定義資源屬性，可用於各種 CloudFormation 範本，做為 AMS CloudFormation 擷取 CT 中的參數。本節中的範例特別顯示 SNS 主題用量。

**Topics**
+ [範例 1：硬式程式碼 the 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：硬式程式碼 the CloudFormation SNSTopic 資源`TopicName`屬性
<a name="cfn-ingest-example-1"></a>

在此範例中，您會硬式編碼 CloudFormation 範本中的 CloudFormation SNSTopic 資源`TopicName`屬性。請注意， `Parameters`區段為空白。

若要讓 CloudFormation 範本允許您變更新堆疊的 SNSTopic 名稱值，而不必建立新的 CloudFormation 範本，您可以使用 CloudFormation 擷取變更類型的 AMS `Parameters`區段來建立該組態。透過這樣做，您稍後會使用相同的 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>

在此範例中，您會使用建立 SNS 主題 的 AMS 擷取 CT 來提交 JSON 執行參數檔案`TopicName`。SNS 主題必須以此範例中所示的可修改方式在 CloudFormation 範本中定義。

```
{
  "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 範例會變更 SNS `TopicName`值，而不變更 CloudFormation 範本。反之，您會提交新的部署 \| 擷取 \| CloudFormation 範本的堆疊 \| 建立參考相同 CFN 範本的變更類型。

```
{
  "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
}
```