

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

# 標記新的或現有的 Spot 機群請求及其啟動的執行個體和磁碟區
<a name="tag-spot-fleet"></a>

**重要**  
Spot Fleet 使用沒有計劃投資的舊版 API。我們建議您改用 EC2 Fleet 或 Auto Scaling 群組。如需詳細資訊，請參閱[最好的機群方法是什麼？](which-fleet-method-to-use.md)。

為便於將 Spot 機群請求及其啟動的執行個體和磁碟區分類並進行管理，您可以利用自訂中繼資料來標記這些請求。您可以在建立 Spot Fleet 請求時或之後將標記指派給請求。同樣地，您可以在機群啟動執行個體和磁碟區時或之後，將標籤指派給執行個體和磁碟區。

當您標記機群請求時，由機群啟動的執行個體和磁碟區不會自動加上標記。您需要明確標記由機群啟動的執行個體和磁碟區。您可以選擇僅將標籤指派給機群請求，或僅指派給機群啟動的執行個體，或僅指派給連接至機群啟動之執行個體的磁碟區，或指派給前述所有項目。

**注意**  
您只能為連接至隨需執行個體的磁碟區加標籤。您無法為連接至 競價型執行個體 的磁碟區加標籤。

您可以使用 Amazon EC2 主控台或命令列工具來指派標籤。

如需標籤運作方式的詳細資訊，請參閱[標記您的 Amazon EC2 資源](Using_Tags.md)。

**Topics**
+ [必要條件](#tag-spot-fleet-prereqs)
+ [標記新的 Spot Fleet 以及執行個體和其啟動的磁碟區](#tag-new-spot-fleet-and-resources)
+ [標記現有 Spot Fleet](#tag-existing-spot-fleet)
+ [檢視 Spot Fleet 請求標籤](#view-spot-fleet-tags)

## 必要條件
<a name="tag-spot-fleet-prereqs"></a>

授予使用者標記資源的許可。如需詳細資訊，請參閱[範例：標籤資源](ExamplePolicies_EC2.md#iam-example-taggingresources)。

**授予使用者標記資源的許可**  
建立包含下列項目的 IAM 政策：
+ `ec2:CreateTags` 動作。這會授予使用者建立標籤的許可。
+ `ec2:RequestSpotFleet` 動作。這會授予使用者建立 Spot 機群請求的許可。
+ 對於 `Resource`，您必須指定 `"*"`。這可讓使用者標記所有資源類型。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "TagSpotFleetRequest",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags",
                "ec2:RequestSpotFleet"
            ],
            "Resource": "*"
        }
    ]
}
```

------

**重要**  
我們目前不支援 `spot-fleet-request` 資源的資源層級許可。如果您指定 `spot-fleet-request` 作為資源，當您嘗試標記機群時，會收到未經授權的例外狀況。下列範例說明如何*不要*設定政策。  

```
{
    "Effect": "Allow",
    "Action": [
        "ec2:CreateTags",
        "ec2:RequestSpotFleet"
    ],
    "Resource": "arn:aws:ec2:{{us-east-1}}:{{111122223333}}:spot-fleet-request/*"
}
```

若要提供存取權，請新增權限至您的使用者、群組或角色：
+ 中的使用者和群組 AWS IAM Identity Center：

  建立權限合集。請按照《*AWS IAM Identity Center 使用者指南*》中的[建立權限合集](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)說明進行操作。
+ 透過身分提供者在 IAM 中管理的使用者：

  建立聯合身分的角色。遵循《*IAM 使用者指南*》的[為第三方身分提供者 (聯合) 建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-idp.html)中的指示。
+ IAM 使用者：
  + 建立您的使用者可擔任的角色。請按照《*IAM 使用者指南*》的[為 IAM 使用者建立角色](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_roles_create_for-user.html)中的指示。
  + (不建議) 將政策直接附加至使用者，或將使用者新增至使用者群組。請遵循《*IAM 使用者指南*》的[新增許可到使用者 (主控台)](https://docs.aws.amazon.com//IAM/latest/UserGuide/id_users_change-permissions.html#users_change_permissions-add-console) 中的指示。

## 標記新的 Spot Fleet 以及執行個體和其啟動的磁碟區
<a name="tag-new-spot-fleet-and-resources"></a>

**若要標記新的 Spot 機群請求及其使用主控台啟動的執行個體和磁碟區**

1. 遵循[使用已定義的參數建立 Spot 機群請求](create-spot-fleet.md#create-spot-fleet-advanced)程序。

1. 新增標籤的方式取決於您是手動設定機群，還是使用啟動範本。
   + 如果您是手動設定機群，請執行下列動作：

     若要新增標籤，請展開**其他啟動參數**，選擇**新增標籤**，然後輸入標籤鍵和值。針對每個標籤，重複執行上述動作。

     對於每個標籤，您可以標記 Spot Fleet 請求和具有相同標籤的執行個體。若要標記兩者，請確定已同時選取**執行個體**和**機群**。若只要標記 Spot Fleet 請求，請清除 **Instances** (執行個體)。若只要標記由機群啟動的執行個體，請清除 **Fleet** (機群)。
**注意**  
當您手動設定機群時，並沒有標記磁碟區的選項。磁碟區標籤僅支援連接至 隨需執行個體 的磁碟區。當您手動設定機群時，無法指定隨需執行個體。
   + 如果您是使用啟動範本，請執行下列動作：

     若要將標籤新增至機群請求，請在**標籤**下選擇**建立標籤**，然後輸入標籤鍵和值。針對每個標籤，重複執行上述動作。

     若要標記機群中的資源，您必須在[啟動範本](create-launch-template.md)中指定標籤。

**使用 標記新的 Spot Fleet 請求及其啟動的執行個體和磁碟區 AWS CLI**  
若要在建立 Spot Fleet 請求時加上標記，並在機群啟動執行個體和磁碟區時給它們加上標記，請依下列方式設定 Spot Fleet 請求組態：

**Spot Fleet 請求標籤：**
+ 在 `SpotFleetRequestConfig` 中指定 Spot Fleet 請求的標籤。
+ 對於 `ResourceType`，請指定 `spot-fleet-request`。若指定其他值，機群請求將會失敗。
+ 對於 `Tags`，指定金鑰值對。您可以指定多個金鑰值對。

**執行個體標籤：**
+ 在 `LaunchSpecifications` 中指定執行個體的標籤。
+ 對於 `ResourceType`，請指定 `instance`。若指定其他值，機群請求將會失敗。
+ 對於 `Tags`，指定金鑰值對。您可以指定多個金鑰值對。

  或者，您可以在 Spot Fleet 請求中參照的[啟動範本](create-launch-template.md)中，指定執行個體的標籤。

**磁碟區標籤：**
+ 在 Spot Fleet 請求中參照的[啟動範本](create-launch-template.md)中，指定磁碟區的標籤。不支援在 `LaunchSpecifications` 中標記磁碟區。

在下面的例子中，Spot Fleet 請求標記了兩個標籤：Key=Environment and Value=Production 和 Key=Cost-Center and Value=123。由機群啟動的執行個體標記了一個標籤 (這與 Spot Fleet 請求的標籤之一相同)：Key=Cost-Center and Value=123。

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchSpecifications": [
            {
                "ImageId": "ami-0123456789EXAMPLE",
                "InstanceType": "c4.large",
                "TagSpecifications": [
                    {
                        "ResourceType": "instance",
                        "Tags": [
                            {
                                "Key": "{{Cost-Center}}",
                                "Value": "{{123}}"
                            }
                        ]
                    }
                ]
            }
        ],
        "SpotPrice": "5",
        "TargetCapacity": 2,
        "TerminateInstancesWithExpiration": true,
        "Type": "maintain",
        "ReplaceUnhealthyInstances": true,
        "InstanceInterruptionBehavior": "terminate",
        "InstancePoolsToUseCount": 1,
        "TagSpecifications": [
            {
                "ResourceType": "spot-fleet-request",
                "Tags": [
                    {
                        "Key": "{{Environment}}",
                        "Value":"{{Production}}"
                    },
                    {
                        "Key": "{{Cost-Center}}",
                        "Value":"{{123}}"
                    }
                ]
            }
        ]
    }
}
```

**使用 標記 Spot 機群啟動的執行個體 AWS CLI**  
若要在機群啟動執行個體時加上標記，您可以在 Spot Fleet 請求中參照的[啟動範本](create-launch-template.md)中指定標籤，或者您可以指定 Spot Fleet 請求組態中的標籤，如下所示：
+ 在 `LaunchSpecifications` 中指定執行個體的標籤。
+ 對於 `ResourceType`，請指定 `instance`。若指定其他值，機群請求將會失敗。
+ 對於 `Tags`，指定金鑰值對。您可以指定多個金鑰值對。

在下列範例中，機群啟動的執行個體均標記了一個標籤：Key=Cost-Center and Value=123。

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "priceCapacityOptimized",
        "ExcessCapacityTerminationPolicy": "default",
        "IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role",
        "LaunchSpecifications": [
            {
                "ImageId": "ami-0123456789EXAMPLE",
                "InstanceType": "c4.large",
                "TagSpecifications": [
                    {
                        "ResourceType": "instance",
                        "Tags": [
                            {
                                "Key": "{{Cost-Center}}",
                                "Value": "{{123}}"
                            }
                        ]
                    }
                ]
            }
        ],
        "SpotPrice": "5",
        "TargetCapacity": 2,
        "TerminateInstancesWithExpiration": true,
        "Type": "maintain",
        "ReplaceUnhealthyInstances": true,
        "InstanceInterruptionBehavior": "terminate",
        "InstancePoolsToUseCount": 1
    }
}
```

**使用 標記連接至 Spot 機群啟動之隨需執行個體的磁碟區 AWS CLI**  
若要在機群建立磁碟區時標記磁碟區，請在 Spot Fleet 請求中參考的[啟動範本](create-launch-template.md)中指定標籤。

**注意**  
磁碟區標籤僅支援連接至 隨需執行個體 的磁碟區。您無法為連接至 競價型執行個體 的磁碟區加標籤。  
不支援在 `LaunchSpecifications` 中標記磁碟區。

## 標記現有 Spot Fleet
<a name="tag-existing-spot-fleet"></a>

**若要使用主控台標記現有的 Spot Fleet 請求**

建立 Spot 機群請求後，您可以使用主控台為機群請求新增標籤。

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在瀏覽窗格中，選擇 **Spot 請求**。

1. 選取您的 Spot Fleet 請求。

1. 選擇**標籤**索引標籤，然後選擇**建立標籤**。

**使用 標記現有的 Spot Fleet 請求 AWS CLI**  
使用 [create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html) 命令來標記現有資源。在下面的例子中，現有的 Spot Fleet 請求會使用 Key=purpose 和 Value=test 標籤。

```
aws ec2 create-tags \
    --resources {{sfr-11112222-3333-4444-5555-66666EXAMPLE}} \
    --tags Key={{purpose}},Value={{test}}
```

## 檢視 Spot Fleet 請求標籤
<a name="view-spot-fleet-tags"></a>

**若要使用主控台檢視 Spot Fleet 請求標籤**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在瀏覽窗格中，選擇 **Spot 請求**。

1. 選取您的 Spot Fleet 請求並選擇 **Tags** (標籤)。

**若要描述 Spot Fleet 請求標籤**  
使用 [describe-tag](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-tags.html) 命令檢視指定資源的標籤。在下面的範例中，會描述指定 Spot Fleet 請求的標籤。

```
aws ec2 describe-tags \
    --filters "Name=resource-id,Values={{sfr-11112222-3333-4444-5555-66666EXAMPLE}}"
```

```
{
    "Tags": [
        {
            "Key": "Environment",
            "ResourceId": "sfr-11112222-3333-4444-5555-66666EXAMPLE",
            "ResourceType": "spot-fleet-request",
            "Value": "Production"
        },
        {
            "Key": "Another key",
            "ResourceId": "sfr-11112222-3333-4444-5555-66666EXAMPLE",
            "ResourceType": "spot-fleet-request",
            "Value": "Another value"
        }
    ]
}
```

您也可以透過描述 Spot Fleet 請求來檢視 Spot Fleet 請求的標籤。

使用 [describe-spot-fleet-requests](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-fleet-requests.html) 命令來檢視指定 Spot Fleet 請求的組態，這包括針對機群請求指定的任何標籤。

```
aws ec2 describe-spot-fleet-requests \
    --spot-fleet-request-ids {{sfr-11112222-3333-4444-5555-66666EXAMPLE}}
```

```
{
    "SpotFleetRequestConfigs": [
        {
            "ActivityStatus": "fulfilled",
            "CreateTime": "2020-02-13T02:49:19.709Z",
            "SpotFleetRequestConfig": {
                "AllocationStrategy": "capacityOptimized",
                "OnDemandAllocationStrategy": "lowestPrice",
                "ExcessCapacityTerminationPolicy": "Default",
                "FulfilledCapacity": 2.0,
                "OnDemandFulfilledCapacity": 0.0,
                "IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role",
                "LaunchSpecifications": [
                    {
                        "ImageId": "ami-0123456789EXAMPLE",
                        "InstanceType": "c4.large"
                    }
                ],
                "TargetCapacity": 2,
                "OnDemandTargetCapacity": 0,
                "Type": "maintain",
                "ReplaceUnhealthyInstances": false,
                "InstanceInterruptionBehavior": "terminate"
            },
            "SpotFleetRequestId": "sfr-11112222-3333-4444-5555-66666EXAMPLE",
            "SpotFleetRequestState": "active",
            "Tags": [
                {
                    "Key": "Environment",
                    "Value": "Production"
                },
                {
                    "Key": "Another key",
                    "Value": "Another value"
                }
            ]
        }
    ]
}
```