

# 新しいまたは既存のスポットフリートリクエスト、およびそのフリートが起動するインスタンスとボリュームにタグ付けする
<a name="tag-spot-fleet"></a>

**重要**  
スポットフリートは、計画された投資なしでレガシー API を使用します。代わりに EC2 フリートまたは Auto Scaling グループを使用することをお勧めします。詳細については、「[フリートにどの方法を使用するのが最適か](which-fleet-method-to-use.md)」を参照してください。

スポットフリートリクエスト、およびそのフリートが起動するインスタンスとボリュームを分類および管理しやすくするために、カスタムメタデータでタグ付けできます。スポットフリートリクエストへのタグの割り当ては、リクエストの作成時または作成後に行うことができます。同様に、インスタンスとボリュームにも、フリートによって起動されるときまたは起動後に、タグを割り当てることができます。

フリートリクエストにタグを付けると、フリートによって起動されるインスタンスとボリュームには自動的にタグ付けされません。フリートによって起動されるインスタンスとボリュームには、明示的にタグを付ける必要があります。タグは、フリートリクエストのみに割り当てるか、フリートによって起動されたインスタンスのみに割り当てるか、フリートによって起動されたインスタンスにアタッチされたボリュームのみに割り当てるか、またはそのすべてに割り当てるかを選択できます。

**注記**  
オンデマンドインスタンスにアタッチされているボリュームにのみタグ付けできます。スポットインスタンス にアタッチされているボリュームにタグを付けることはできません。

Amazon EC2 コンソールまたはコマンドラインツールを使用してタグを割り当てることができます。

タグの仕組みの詳細については[Amazon EC2 リソースのタグ付け](Using_Tags.md)を参照してください。

**Topics**
+ [前提条件](#tag-spot-fleet-prereqs)
+ [新しいスポットフリート、およびそれが起動するインスタンスおよびボリュームにタグ付けします。](#tag-new-spot-fleet-and-resources)
+ [既存のスポットフリートにタグを付けます。](#tag-existing-spot-fleet)
+ [スポットフリートリクエストタグを表示する](#view-spot-fleet-tags)

## 前提条件
<a name="tag-spot-fleet-prereqs"></a>

リソースにタグ付けする許可をユーザーに付与します。詳細については、「[例: リソースのタグ付け](ExamplePolicies_EC2.md#iam-example-taggingresources)」を参照してください。

**リソースにタグ付けする許可をユーザーに付与するには**  
以下を含む IAM ポリシーを作成します。
+ `ec2:CreateTags` アクション。これにより、タグを作成する許可がユーザーに付与されます。
+ `ec2:RequestSpotFleet` アクション。これにより、スポットフリートリクエストを作成する許可がユーザーに付与されます。
+ `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 アイデンティティセンター のユーザーとグループ:

  アクセス許可セットを作成します。「*AWS IAM アイデンティティセンター ユーザーガイド*」の「[アクセス許可セットを作成する](https://docs.aws.amazon.com//singlesignon/latest/userguide/howtocreatepermissionset.html)」の手順に従ってください。
+ IAM 内で、ID プロバイダーによって管理されているユーザー:

  ID フェデレーションのロールを作成します。詳細については *IAM ユーザーガイド* の [サードパーティー ID プロバイダー (フェデレーション) 用のロールを作成する](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) の指示に従います。

## 新しいスポットフリート、およびそれが起動するインスタンスおよびボリュームにタグ付けします。
<a name="tag-new-spot-fleet-and-resources"></a>

**新しいスポットフリートリクエスト、およびそのフリートがコンソールを使用して起動するインスタンスとボリュームにタグ付けするには**

1. [定義済みパラメータを使用してスポットフリートリクエストを作成する](create-spot-fleet.md#create-spot-fleet-advanced)の手順に従います。

1. タグを追加する方法は、フリートを手動で設定したか、起動テンプレートを使用したかによって異なります。
   + フリートを手動で設定した場合は、次の操作を行います。

     タグを追加するには、**[追加の起動パラメータ]** を展開し、**[タグの作成]** を選択して、タグのキーと値を入力してください。各タグについて、これを繰り返します。

     タグごとに、スポットフリートリクエストとインスタンスに同じタグを付けることができます。両方にタグを付けるには、**[インスタンス]** と **[フリート]** の両方が選択されていることを確認します。スポットフリートリクエストのみにタグ付けするには、**[Istances]** をクリアします。フリートによって起動されたインスタンスのみにタグ付けするには、**[フリートタグ]**をクリアします。
**注記**  
フリートを手動で設定する場合、ボリュームにタグを付けるオプションはありません。ボリュームタグは、オンデマンドインスタンス にアタッチされたボリュームでのみサポートされます。フリートを手動で設定する場合、オンデマンドインスタンスを指定することはできません。
   + 起動テンプレートを使用した場合は、次の操作を行います。

     フリートリクエストにタグを追加するには、**[タグ]** で **[タグの作成]** を選択し、タグのキーと値を入力してください。各タグについて、これを繰り返します。

     フリート内のリソースにタグを付けるには、[起動テンプレート](create-launch-template.md)でタグを指定する必要があります。

**新しいスポットフリートリクエストと、 を使用して起動するインスタンスおよびボリュームにタグ付けするにはAWS CLI**  
作成時にスポットフリートリクエストにタグ付けし、フリートがインスタンスを起動するときにインスタンスおよびボリュームにタグ付けするには、スポットフリートリクエスト設定を次のようにします。

**スポットフリートリクエストのタグ**
+ スポットフリートリクエストのタグを `SpotFleetRequestConfig` で指定します。
+ `ResourceType` の場合、`spot-fleet-request` を指定します。別の値を指定すると、フリートリクエストは失敗します。
+ `Tags` で、キーと値のペアを指定します。キーと値のペアは複数指定できます。

**インスタンスタグ:**
+ `LaunchSpecifications` で、インスタンスのタグを指定します。
+ `ResourceType` の場合、`instance` を指定します。別の値を指定すると、フリートリクエストは失敗します。
+ `Tags` で、キーと値のペアを指定します。キーと値のペアは複数指定できます。

  または、スポットフリートリクエストで参照される起動テンプレートで、インスタンスのタグを指定できます。[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)

**ボリュームタグ:**
+ スポットフリートリクエストで参照される起動テンプレートのボリュームのタグを指定します。[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)`LaunchSpecifications` でのボリュームのタグ付けはサポートされていません。

以下の例では、スポットフリートリクエストに 2 つのタグ (Key=Environment、Value=Production、および Key=Cost-Center、Value=123) が付けられています。フリートが起動するインスタンスには、1 つのタグ (スポットフリートリクエストのタグの 1 つと同じ) 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}}"
                    }
                ]
            }
        ]
    }
}
```

**AWS CLI を使用して、スポットフリートが起動したインスタンスにタグ付けするには**  
フリートがインスタンスを起動するときにインスタンスにタグ付けするには、スポットフリートリクエストで参照される起動テンプレートでタグを指定するか、以下のようにスポットフリートリクエスト設定でタグを指定できます。[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)
+ `LaunchSpecifications` で、インスタンスのタグを指定します。
+ `ResourceType` の場合、`instance` を指定します。別の値を指定すると、フリートリクエストは失敗します。
+ `Tags` で、キーと値のペアを指定します。キーと値のペアは複数指定できます。

以下の例では、フリートによって起動されるインスタンスに 1 つのタグ (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
    }
}
```

**AWS CLI を使用して、スポットフリートが起動するオンデマンドインスタンスにアタッチされたボリュームにタグ付けするには**  
フリートが作成したときにボリュームにタグ付けするには、スポットフリートリクエストで参照される起動テンプレートでタグを指定する必要があります。[Amazon EC2 起動テンプレートを作成する](create-launch-template.md)

**注記**  
ボリュームタグは、オンデマンドインスタンス にアタッチされたボリュームでのみサポートされます。スポットインスタンス にアタッチされているボリュームにタグを付けることはできません。  
`LaunchSpecifications` でのボリュームのタグ付けはサポートされていません。

## 既存のスポットフリートにタグを付けます。
<a name="tag-existing-spot-fleet"></a>

**コンソールを使用して、既存のスポットフリートリクエストにタグ付けするには**

スポットフリートリクエストを作成した後、コンソールを使用してフリートリクエストにタグを追加できます。

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Spot Requests**] を選択してください。

1. スポットフリートリクエストを選択してください。

1. [Tags (タグ)] タブを選択してから、[タグの作成] を選択してください。********

**AWS CLI を使用して、既存のスポットフリートリクエストにタグ付けするには**  
create-tags コマンドを使用して、既存のリソースにタグ付けできます。[https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html)以下の例では、既存のスポットフリートリクエストにタグ Key=purpose and Value=test が付けられています。

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

## スポットフリートリクエストタグを表示する
<a name="view-spot-fleet-tags"></a>

**コンソールを使用して、スポットフリートリクエストタグを表示するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで、[**Spot Requests**] を選択してください。

1. スポットフリートリクエストを選択し、[タグ] タブを選択してください。****

**スポットフリートリクエストタグを記述するには**  
describe-tags コマンドを使用して、指定したリソースのタグを表示します。[https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-tags.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-tags.html)以下の例では、指定したスポットフリートリクエストのタグを記述します。

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

スポットフリートリクエストを記述することで、スポットフリートリクエストのタグを表示することもできます。

describe-spot-fleet-requests コマンドを使用して、指定したスポットフリートリクエストの設定を表示します。これには、フリートリクエストに指定されたタグが含まれます。[https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-fleet-requests.html](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-fleet-requests.html)

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