

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

# AMS Accelerate 中的資源交錯使用案例
<a name="acc-rt-using"></a>

本節列出具有 Resource Tagger 的常用動作。

## 檢視由 Resource Tagger 套用的標籤
<a name="acc-rt-using-view-tags"></a>

Resource Tagger 套用的所有標籤都有金鑰字首 **ams：rt：。**例如，下列標籤定義會產生具有金鑰 **ams：rt：sampleKey** 和值 **sampleValue** 的標籤。具有此字首的所有標籤都會視為 Resource Tagger 的一部分。

```
{
	"Key": "sampleKey",
	"Value": "sampleValue"
}
```

**重要**  
如果您使用 **ams：rt：** 字首手動建立自己的標籤，則視為由 Resource Tagger 管理。這表示如果資源是由 Resource Tagger 管理，但組態描述檔未指出應套用標籤，則 Resource Tagger 會移除手動新增的標籤。如果您手動標記由 Resource Tagger 管理的資源，請勿使用 **ams：rt：** 字首做為標籤索引鍵。

## 使用 Resource Tagger 建立標籤
<a name="acc-tag-how-works-rt"></a>

AMS Accelerate Resource Tagger 是在 AMS Accelerate 加入期間部署在您的帳戶中的元件。Resource Tagger 具有一組可設定的規則，可定義資源的標記方式，然後強制執行這些規則，自動新增和移除資源上的標籤，以確保它們符合您的規則。

如果您想要使用 Resource Tagger 來標記資源，請參閱 [加速資源交錯](acc-resource-tagger.md)。

以下是 Resource Tagger 組態程式碼片段範例，會將值為 **true** 的標籤 **ams：rt：ams-managed** 新增至所有 Amazon EC2 執行個體。**ams：rt：ams 受管**標籤會選擇讓 AMS Accelerate 監控您的資源。

```
{
    "AWS::EC2::Instance": {
        "SampleConfigurationBlock": {
            "Enabled": true,
            "Filter": {
                "Platform": "*"
            },
            "Tags": [
                {
                    "Key": "ams:rt:ams-managed",
                    "Value": "true"
                }
            ]
        }
    }
}
```

**警告**  
指定新組態的名稱時請小心 (`SampleConfigurationBlock`在提供的範例中），因為您可能會不小心以相同的名稱覆寫 AMS 受管組態。

## 防止 Resource Tagger 修改資源
<a name="acc-rt-preventing-rt-changes"></a>

Resource Tagger 可以設定為唯讀模式，以防止其新增或移除資源上的任何標籤。如果您想要提供自己的標記機制，這會很有用。

在唯讀模式中，Resource Tagger 仍會檢查受管和客戶組態設定檔中指定的標記規則，並掃描不符合這些標記規則的資源。任何不合規的資源都會以 呈現 AWS Config。您可以尋找 AWS Config 規則 的 具有 `AMSResourceTagger-`字首。例如，`AMSResourceTagger-EC2Instance` AWS Config 規則會根據組態描述檔，評估是否為`AWS::EC2::Instance`資源建立適當的標籤。

Resource Tagger 此時會停止，不會對您的資源進行任何變更 （不會新增或移除標籤）。

您可以修改客戶組態設定檔以在**選項**區塊中包含 **ReadOnly** 金鑰，以啟用唯讀模式。例如，下列組態設定檔程式碼片段會顯示這可能看起來如何：

```
{
    "Options": {
        "ReadOnly": true
    },
    "AWS::EC2::Instance": {
        [... the rest of your configuration ...]
    }
}
```

一旦完成部署，Resource Tagger 就會對此新組態做出反應，並停止新增和移除資源上的標籤。

**注意**  
若要重新啟用標籤修改，請將 **ReadOnly** 值變更為 **false**，或完全移除金鑰，因為預設值為 **false**。

如需**選項**設定的詳細資訊，請參閱[語法和結構](acc-tag-tools-profiles.md#acc-rt-config-doc-format)下一步。

## 範例組態描述檔
<a name="acc-rt-using-ex-config-doc"></a>

下列範例設定檔文件指定 AMS Accelerate 管理屬於堆疊\$1 CloudFormation 堆疊的所有 Windows EC2 執行個體；不過， 會明確排除 ID 為 i-00000000000000001 的特定 EC2 執行個體。

```
{
    "AWS::EC2::Instance": {
        "AMSMonitoringWindows": {
            "Enabled": true,
            "Filter": {  
                "Fn::AND": [
                    {
                        "Platform": "Windows"
                    },
                    {
                        "Tag": {
                            "Key": "aws:cloudformation:stack-name",
                            "Value": "stack-*"
                        }
                    },
                    {
                        "Fn::NOT": {
                            "InstanceId": "i-00000000000000001"
                        }
                    }
                ]
            },
            "Tags": [
                {
                    "Key": "ams:rt:ams-managed",
                    "Value": "true"
                }
            ]
        }
    }
}
```

**警告**  
指定新組態的名稱時請小心 (`SampleConfigurationBlock`在提供的範例中），因為您可能會不小心以相同的名稱覆寫 AMS 受管組態。

## 合併預設組態
<a name="acc-rt-using-merge-default-config"></a>

預設組態設定檔會在帳戶加入時由 AMS Accelerate 提供。此設定檔提供部署在帳戶中的預設規則。

雖然您無法修改預設組態設定檔，但您可以在自訂組態設定檔中使用與預設組態區塊相同的 **ConfigurationID** 來指定組態區塊，以提供預設值的覆寫。如果您這樣做，您的組態區塊會覆寫預設組態區塊。

例如，請考慮下列預設組態文件：

```
{
	"AWS::EC2::Instance": {
		"AMSManagedBlock1": {
			"Enabled": true,
			"Filter": {
				"Platform": "Windows"
			},
			"Tags": [{
				"Key": "my-tag",
				"Value": "SampleValueA"
			}]
		}
	}
}
```

若要將此處套用的標籤值從 變更為 `SampleValueA` `SampleValueB`，並將標籤套用至所有執行個體，而不只是 Windows 執行個體，您會提供下列自訂組態設定檔：

```
{
	"AWS::EC2::Instance": {
		"AMSManagedBlock1": {
			"Enabled": true,
			"Filter": {
				"Platform": "*"
			},
			"Tags": [{
				"Key": "my-tag",
				"Value": "SampleValueB"
			}]
		}
	}
}
```

**重要**  
請記得在進行組態變更之後部署組態變更。如需詳細資訊，請參閱[部署組態變更](#acc-rt-deploy-changes)。在 SSM AppConfig 中，您必須在建立組態後部署新版本。

## 停用預設組態
<a name="acc-rt-using-disable-default-config"></a>

您可以將具有相同 **ConfigurationID** 的組態區塊新增至自訂組態描述檔，並為**啟用**欄位提供 **false **值，以停用預設組態規則。

例如，如果預設組態設定檔中存在下列組態：

```
{
	"AWS::EC2::Instance": {
		"AMSManagedBlock1": {
			"Enabled": true,
			"Filter": {
				"Platform": "Windows"
			},
			"Tags": [{
				"Key": "my-tag",
				"Value": "SampleValueA"
			}]
		}
	}
}
```

您可以在自訂組態設定檔中包含下列項目，以停用此標記規則：

```
{
	"AWS::EC2::Instance": {
		"AMSManagedBlock1": {
			"Enabled": false
		}
	}
}
```

**重要**  
請記得在進行組態變更後部署組態變更；如需相關資訊，請參閱 [部署組態變更](#acc-rt-deploy-changes)。在 SSM AppConfig 中，您必須在建立組態後部署新版本。

## 移除 Resource Tagger 套用的標籤
<a name="acc-rt-remove-tags"></a>

如果標籤不存在於組態設定檔中，或者存在篩選條件不相符，則 Resource Tagger 會移除任何字首為 **ams：rt** 的標籤。這表示您可以執行下列其中一項動作來移除 Resource Tagger 套用的標籤：
+ 修改定義標籤的自訂組態區段。
+ 新增特定資源的例外狀況，使其不再符合篩選條件。

例如：如果 **Linux** 執行個體具有下列標籤：

```
"Tags": [{
    "Key": "ams:rt:MyOwnTag",
    "Value": true
},{
    "Key": "myTag",
    "Value": true
}]
```

您也可以部署下列 Resource Tagger 組態設定檔：

```
{
    "AWS::EC2::Instance": {
        "AMSMonitoringWindows": {
            "Enabled": true,
            "Filter": {
                "Platform": "Windows"
            },
            "Tags": [{
                "Key": "ams:rt:ams-managed",
                "Value": "true"
            }]
        }
    }
}
```

Resource Tagger 會回應新的組態變更，而執行個體上唯一的標籤會變成：

```
 "Tags": [{
     "Key": "myTag",
     "Value": true
 }]
```

**警告**  
指定新組態的名稱時請小心 (`SampleConfigurationBlock`在提供的範例中），因為您可能會不小心以相同的名稱覆寫 AMS 受管組態。

**重要**  
請記得在進行組態變更後部署組態變更；如需相關資訊，請參閱 [部署組態變更](#acc-rt-deploy-changes)。在 SSM AppConfig 中，您必須在建立組態後部署新版本。

## 檢視或變更 Resource Tagger 組態
<a name="acc-rt-make-changes"></a>

在加入和駐留在 AMSResourceTagger 應用程式和 AMSInfrastructure 環境中的 AWS AppConfig 中，部署到您帳戶的兩個 JSON 組態設定檔 **AMSManagedTags** 和 **CustomerManagedTags**，可透過 AppConfig 的 [GetConfiguration](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_GetConfiguration.html) API 進行檢閱。 [ AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/what-is-appconfig.html) AMSResourceTagger **AMSInfrastructure** 

以下是此 GetConfiguration 呼叫的範例：

```
aws appconfig get-configuration 
 --application AMSResourceTagger 
 --environment AMSInfrastructure 
 --configuration AMSManagedTags 
 --client-id ANY_STRING
 outfile.json
```

**應用程式**：AppConfig 邏輯單位可提供 資源交錯器的功能，這是 AMSResourceTagger。
+ **環境**：AMSInfrastructure。
+ **組態**：若要檢視 AMS Accelerate 預設標籤定義，值為 AMSManagedTags，而若要檢視客戶標籤定義，值為 CustomerManagedTags。
+ **用戶端 ID**：唯一的應用程式執行個體識別符，可以是任何字串。
+ 然後，您可以在指定的輸出檔案中檢視標籤定義，在此案例中為 outfile.json。

然後，您可以在指定的輸出檔案中檢視警示定義，在此情況下為 outfile.json。

您可以在 **AMSInfrastructure** 環境中檢視過去的部署，以查看部署至您帳戶的組態版本。

****若要覆寫標籤規則：

透過 CloudFormation [使用 CloudFormation for Accelerate 部署組態設定檔](acc-tag-cf-ex-deploy-config.md)或 更新自訂描述檔，或直接使用 AppConfig 的 [https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_CreateHostedConfigurationVersion.html](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_CreateHostedConfigurationVersion.html) API 來覆寫任何現有的標籤規則。使用相同的 **ConfigurationID** 做為預設組態標籤規則會覆寫預設規則，並套用自訂規則。

若要部署對 **CustomerManagedTags** 文件所做的變更：

對自訂組態描述檔進行變更後，您必須為其部署變更。若要部署新的變更，必須使用 AWS AppConfig 主控台或 CLI 執行 AppConfig 的 [StartDeployment](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_StartDeployment.html) API。

## 部署組態變更
<a name="acc-rt-deploy-changes"></a>

自訂完成後，必須透過 [ StartDeployment](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_StartDeployment.html) API 部署 AWS AppConfig 這些變更。下列指示說明如何使用 部署 AWS CLI。此外，您可以使用 AWS 管理主控台 進行這些變更。如需詳細資訊，請參閱[步驟 5：部署組態](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-deploying.html)。

```
aws appconfig start-deployment
--application-id <application_id>
--environment-id <environment_id>
--deployment-strategy-id <deployment_strategy_id>
--configuration-profile-id <configuration_profile_id>
--configuration-version 1
```
+ **應用程式 ID**：應用程式 AMSResourceTagger 的應用程式 ID。透過 [ ListApplications](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_ListApplications.html) API 呼叫取得此項目。
+ **環境 ID**：環境 ID；透過 [ ListEnvironments](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_ListEnvironments.html) API 呼叫取得此 ID。
+ **部署策略 ID**：部署策略 ID；透過 [ ListDeploymentStrategies](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_ListDeploymentStrategies.html) API 呼叫取得此 ID。
+ **組態設定檔 ID**：CustomerManagedTags 的組態設定檔 ID；透過 [ ListConfigurationProfiles](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_ListConfigurationProfiles.html) API 呼叫取得此 ID。
+ **組態版本**：您要部署的組態設定檔版本。

**重要**  
Resource Tagger 會套用組態設定檔中指定的標籤。您對資源標籤所做的任何手動修改 （使用 AWS 管理主控台或 CloudWatch CLI/SDK) 都會自動還原，因此請確定您的變更是透過 Resource Tagger 定義。若要了解 Resource Tagger 建立哪些標籤，請尋找字首為 的標籤索引鍵`ams:rt:`。

使用 [StartDeployment](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_StartDeployment.html) 和 [StopDeployment](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_StopDeployment.html) API 動作限制對部署的存取，以便信任的使用者了解將新組態部署到目標的責任和後果。

若要進一步了解如何使用 AWS AppConfig 功能來建立和部署組態，請參閱[使用 AWS AppConfig](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-working.html) 中的文件。

## 設定 Terraform 以忽略 Resource Tagger 標籤
<a name="acc-rt-ignore-tags"></a>

如果您使用 Terraform 佈建資源，而且想要使用 Resource Tagger 來標記資源，Terraform 可能會將 Resource Tagger 標籤識別為偏離。

您可以使用**生命週期**組態區塊或 **ignore\$1tags** 全域組態區塊，將 Terraform 設定為忽略所有 Resource Tagger 標籤。如需詳細資訊，請參閱資源標記中資源[標記](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/guides/resource-tagging)的 Terraform 文件。

下列範例示範如何建立全域組態，以忽略以 Resource Tagger 標籤字首 開頭的所有標籤`ams:rt:`：

```
provider "aws" {
  # ... potentially other configuration ...

  ignore_tags {
    key_prefixes = ["ams:rt:"]
  }
}
```

## 檢視 Resource Tagger 管理的資源數量
<a name="acc-rt-number-of-resources"></a>

 Resource Tagger 每小時將指標傳送至 `AMS/ResourceTagger` 命名空間中的 Amazon CloudWatch。只會針對 Resource Tagger 支援的資源類型發出指標。


| 指標名稱 | 維度 | 描述 | 
| --- | --- | --- | 
| ResourceCount |  元件、ResourceType  | 在此區域中部署的資源數量 （指定資源類型的）。 單位：計數 | 
| ResourcesMissingManagedTags |  元件、ResourceType  | 根據組態描述檔，需要受管標籤但尚未由 Resource Tagger 標記的資源 （指定資源類型的） 數量。 單位：計數 | 
| UnmanagedResources |  元件、ResourceType  | Resource Tagger 未套用受管標籤的資源數量 （指定資源類型的）。一般而言，這些資源不符合任何 Resource Tagger 組態區塊，或明確地從組態區塊中排除。 單位：計數 | 
| MatchingResourceCount |  元件、ResourceType、ConfigClauseName  | 符合 Resource Tagger 組態區塊的資源數量 （指定資源類型的）。若要讓資源符合組態區塊，必須啟用區塊，且資源必須符合區塊的篩選條件。 單位：計數 | 

這些指標也可以在 **AMS-Resource-Tagger-Reporting-Dashboard** 中以圖形形式檢視。若要查看儀表板，請從 Amazon CloudWatch 管理主控台選取 **AMS-Resource-Tagger-Reporting-Dashboard**。根據預設，此儀表板中的圖形會顯示過去 12 小時期間的資料。

AMS Accelerate 會將 CloudWatch 警示部署到您的帳戶，以偵測未受管資源數量的顯著增加，例如 AMS Resource Tagger 從管理中排除的資源。AMS Operations 將調查超過以下三個未受管資源的增加：相同類型的三個資源，或相同類型的所有資源增加 50%。如果變更似乎不是刻意的，AMS Operations 可能會與您聯絡以檢閱變更。