

# Amazon ECS リソースにタグ付けする
<a name="ecs-using-tags"></a>

Amazon ECS リソースを管理しやすくするために、*タグ*を使用してオプションで各リソースに独自のメタデータを割り当てることができます。各*タグ*は、*キー*および*値* (オプション) で構成されます。

タグを使用すると、Amazon ECS リソースを目的、所有者、環境などの、さまざまな方法で分類することができます。これは、同じ種類のリソースが多い場合に役立ちます。リソースに割り当てたタグに基づいて、特定のリソースをすばやく識別できます。例えば、アカウントの Amazon ECS コンテナインスタンスの一連のタグを定義できます。これは、各インスタンスの所有者とスタックレベルを追跡するのに役立ちます。

コストと使用状況レポートでタグを使用できます。これらのレポートを使用して、Amazon ECS リソースのコストと使用状況を分析できます。詳細については、「[Amazon ECS 使用状況レポート](usage-reports.md)」を参照してください。

**警告**  
タグキーとその値を返す API は多数あります。`DescribeTags` へのアクセスを拒否しても、他の API から返されるタグへのアクセスは自動的に拒否されません。ベストプラクティスとして、機密データをタグに含めないようお勧めします。

各リソースタイプのニーズを満たす一連のタグキーを考案することをお勧めします。リソースの管理を容易にするために、タグキーの一貫したセットを使用できます。追加したタグに基づいてリソースを検索およびフィルタリングできます。

タグには、Amazon ECS に関連する意味はなく、完全に文字列として解釈されます。タグのキーと値は編集でき、タグはリソースからいつでも削除できます。タグの値を空の文字列に設定することはできますが、タグの値を 空値 に設定することはできません。そのリソースの既存のタグと同じキーを持つタグを追加した場合、古い値は新しい値によって上書きされます。リソースを削除すると、リソースのタグも削除されます。

AWS Identity and Access Management (IAM) を使用すると、AWS アカウント内のどのユーザーがタグを管理するアクセス許可を持っているかを制御できます。

## リソースのタグ付け方法
<a name="tag-resources"></a>

Amazon ECS タスク、サービス、タスク定義、およびクラスターへのタグ付けには、次のような複数の方法が存在します。
+ AWS マネジメントコンソール、Amazon ECS API、AWS、または AWS CLI SDK を使用して、ユーザーが手動でリソースにタグ付けする。
+ ユーザーが Amazon ECS マネージドタグのオプションを選択して、サービスを作成する、あるいはスタンドアロンのタスクを実行する。

  新しく起動されたすべてのタスクに対し、Amazon ECS が自動的なタグ付けを行う。詳細については、「[Amazon ECS マネージドのタグ](#managed-tags)」を参照してください。
+ ユーザーがコンソールを使用してリソースを作成する。そのリソースに対し、コンソールが自動的にタグ付けを行います。

  これらのタグは、AWS CLI、および AWS SDK のレスポンスとして返され、コンソールに表示されます。これらのタグを、ユーザーが変更または削除することはできません。

  追加されたタグの詳細については、「**Amazon ECS リソースのタグ付けのサポート**」表内で、「**コンソールによって自動的に追加されるタグ**」列を参照してください。

リソースの作成時にタグを指定したにも関わらず、そのタグが適用されない場合、Amazon ECS は、対象の作成プロセスをロールバックします。これにより、リソースがタグ付きで作成されるか、まったく作成されないようになるため、タグ付けされていないリソースが存在することがなくなります。作成時にリソースにタグ付けすることで、リソース作成後にカスタムタグ付けスクリプトを実行する必要がなくなります。

以下の表に、タグ付けをサポートしている Amazon ECS リソースを示します。


|  リソース  |  タグをサポート  |  タグの伝播をサポート  | コンソールによって自動的に追加されたタグ | 
| --- | --- | --- | --- | 
|  Amazon ECS タスク  |  はい  |  はい、タスク定義からサポートします。  | [Key] (キー): aws:ecs:clusterName *値*: `cluster-name` | 
|  Amazon ECS サービス  |  はい  |  はい、タスク定義またはサービス内のタスクへのサービスのいずれかからサポートします。  | [Key] (キー): ecs:service:stackId 値 `arn:aws:cloudformation:arn` | 
|  Amazon ECSの タスクセット  |  はい  |  なし  | 該当なし | 
|  Amazon ECS のタスク定義  |  はい  |  なし  | [Key] (キー): ecs:taskDefinition:createdFrom *値*: `ecs-console-v2` | 
|  Amazon ECS クラスター  |  はい  |  なし  | [Key] (キー): aws:cloudformation:logical-id *値*: `ECSCluster` [Key] (キー): aws:cloudformation:stack-id*値*: `arn:aws:cloudformation:arn`[*Key*] (キー): `aws:cloudformation:stack-name`*値*: `ECS-Console-V2-Cluster-EXAMPLE` | 
|  Amazon ECS コンテナインスタンス  |  はい  |  はい、Amazon EC2 インスタンスからサポートします。詳細については、「[Amazon ECS の Amazon EC2 コンテナインスタンスにタグを追加する](instance-details-tags.md)」を参照してください。  | 該当なし | 
|  Amazon ECS 外部インスタンス  |  はい  |  なし  | 該当なし | 
| Amazon ECS キャパシティープロバイダー |  はい。事前定義された `FARGATE` および `FARGATE_SPOT` キャパシティープロバイダーに対し、タグ付けすることはできません。 | はい。Amazon ECS マネージドインスタンスのキャパシティプロバイダーからのみ可能です。Amazon ECS マネージドインスタンスのキャパシティプロバイダーから、Amazon EC2 インスタンス、起動テンプレート、Elastic Network Interface、ボリュームなど、プロバイダーが管理するすべてのリソースにタグを伝播できます。 | 該当なし | 

## 作成時のリソースのタグ付け
<a name="tags-on-creation"></a>

次のリソースは、Amazon ECS API、AWS CLI、または AWS SDK を使用した作成時のタグ付けをサポートしています。
+ Amazon ECS タスク
+ Amazon ECS サービス
+ Amazon ECS タスク定義
+ Amazon ECSの タスクセット
+ Amazon ECS クラスター
+ Amazon ECS コンテナインスタンス
+ Amazon ECS キャパシティープロバイダー

Amazon ECS には、リソースの作成にタグ付け認可を使用するオプションがあります。AWS アカウント がタグの承認用に設定されている場合、ユーザーには、リソースを作成するアクションの許可が必要です (`ecsCreateCluster` など)。リソース作成アクションでタグが指定されている場合、AWS は追加の認可を実行して、ユーザーまたはロールがタグを作成するための許可を持っているかどうかを確認します。したがって、`ecs:TagResource` アクションを使用するための明示的な許可を付与する必要があります。詳細については、「[リソース作成時にタグ付けするための許可を付与する](supported-iam-actions-tagging.md)」を参照してください。オプションを設定する方法については、「[タグ付け認可](ecs-account-settings.md#tag-resources-setting)」を参照してください。

## 制限事項
<a name="tag-restrictions"></a>

タグには以下の制限があります。
+ 1 つのリソースに対して最大 50 個のタグを関連付けることができます。
+ 1 つのリソースに対してタグキーを繰り返すことはできません。各タグキーは一意である必要があり、それぞれに使用できる値は 1 つのみです。
+ キーの値には最大 128 UTF-8 文字を使用できます。
+ 値の最大長は 256 UTF-8 文字です。
+ 複数の AWS のサービスおよびリソースがタグ付けスキーマを使用する場合、使用する文字の種類を制限します。一部のサービスでは、使用できる文字に制限がある場合があります。通常、使用できる文字は、英字、数字、スペース、および特殊文字 `+`、`-`、`=`、`.`、`_`、`:`、`/`、`@` です。
+ タグのキーと値では、大文字と小文字が区別されます。
+ キーまたは値のプレフィックスとして、`aws:`、`AWS:`、またはこれら大文字または小文字の任意の組み合わせを使用することはできません。これらは AWS でのみ使用するように予約されています。このプレフィックスを持つタグのキーや値を編集または削除することはできません。このプレフィックスを持つタグは、リソースあたりのタグ数の制限にはカウントされません。

## Amazon ECS マネージドのタグ
<a name="managed-tags"></a>

Amazon ECS マネージド タグを使用すると、Amazon ECS は、クラスター情報とユーザーが追加したタスク定義タグまたはサービスタグのいずれかを使用して、新しく起動されたすべてのタスクとタスクにアタッチされた Amazon EBS ボリュームに自動的にタグ付けします。以下は、追加されたタグについて説明しています。
+ スタンドアロンタスク – *キー*には `aws:ecs:clusterName` を、*値*にはクラスター名を設定したタグ。ユーザーによって追加されたすべてのタスク定義タグです。スタンドアロンタスクにアタッチされた Amazon EBS ボリュームは、*キー*を `aws:ecs:clusterName` として、*値*がクラスター名に設定されたタグを受け取ります。Amazon EBS ボリュームのタグ付けの詳細については、「[Amazon EBS ボリュームのタグ付け](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specify-ebs-config.html#ebs-volume-tagging)」を参照してください。
+ サービスの一部であるタスク – *キー*を `aws:ecs:clusterName` として、*値*をクラスター名として設定したタグ。*キー*に `aws:ecs:serviceName` を、*値*にサービス名を設定したタグです。以下のリソースのいずれかからのタグです。
  + タスク定義 – ユーザーによって追加されたすべてのタスク定義タグ。
  + サービス – ユーザーによって追加されたすべてのサービスタグ。

    サービスの一部であるタスクにアタッチされた Amazon EBS ボリュームは、*キー*を `aws:ecs:clusterName` として、*値*をクラスター名に設定されたタグと、*キー*を `aws:ecs:serviceName` として*値*をサービス名に設定されたタグを受け取ります。Amazon EBS ボリュームのタグ付けの詳細については、「[Amazon EBS ボリュームのタグ付け](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specify-ebs-config.html#ebs-volume-tagging)」を参照してください。

この機能には、以下のオプションが必要です。
+ 新しい Amazon リソースネーム (ARN) とリソース識別子 (ID) 形式にオプトインする必要があります。詳細については、「[Amazon リソースネーム (ARN) と ID](ecs-account-settings.md#ecs-resource-ids)」を参照してください。
+ API を使用してサービスを作成したり、タスクを実行したりするときは、`run-task` と `create-service` の `enableECSManagedTags` を `true` に設定する必要があります。詳細については、「*AWS Command Line Interface API リファレンス*」の「[create–service](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html)」および「[run–task](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html)」を参照してください。
+ Amazon ECS はマネージドタグを使用して、クラスターの Auto Scaling などの一部の機能をいつ有効にするかを判断します。Amazon ECS が機能を効果的に管理できるように、タグを手動で変更しないことをお勧めします。

## 請求にタグを使用する
<a name="tag-resources-for-billing"></a>

AWS は、Amazon ECS リソースのコストおよび使用量を分析するために使用できる、Cost Explorer と呼ばれるレポートツールを提供します。

Cost Explorer を使用して、使用状況とコストのグラフを表示できます。過去 13 か月からデータを表示でき、また次の 3 か月間にどのくらい使用する可能性があるかを予測します。Cost Explorer を使用すると、時間の経過とともに AWS リソースに費やす金額のパターンを確認できます。例えば、Cost Explorer を使用して、さらに調べる必要がある分野を特定し、コストを把握するために使用できる傾向を確認できます。データの時間範囲を指定したり、時間データを日または月ごとに表示することもできます。

コストと使用状況レポートには、Amazon ECS マネージドのタグ、またはユーザーにより追加されたタグを使用できます。詳細については、「[Amazon ECS 使用状況レポート](usage-reports.md)」を参照してください。

リソースを組み合わせたコストを確認するには同じタグキー値を持つリソースに基づいて、請求情報を整理します。例えば、複数のリソースに特定のアプリケーション名のタグを付け、請求情報を整理することで、複数のサービスを利用しているアプリケーションの合計コストを確認することができます。タグによるコスト配分レポートの設定の詳細については、*AWS Billing ユーザーガイド*の[コスト配分月次レポート](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/configurecostallocreport.html)を参照してください。

さらに、*[コスト配分データの分割]* をオンにして、コストと使用状況レポートでタスクレベルの CPU とメモリの使用状況データを取得できます。詳細については、「[タスクレベルのコストと使用状況レポート](usage-reports.md#task-cur)」を参照してください。

**注記**  
レポートをオンにしている場合、当月のデータを表示できるようになるまでに最大 24 時間かかることがあります。

# Amazon ECS リソースにタグを追加する
<a name="tag-resources-console"></a>

新規または既存のタスク、サービス、タスク定義、またはクラスターにタグ付けできます。コンテナインスタンスのタグ付けについては、「[Amazon ECS の Amazon EC2 コンテナインスタンスにタグを追加する](instance-details-tags.md)」を参照してください。

**警告**  
個人情報 (PII) などの機密情報や秘匿性の高い情報はタグに追加しないようにします。タグは、多くの AWS のサービス (請求など) からアクセスできます。タグは、プライベートデータや機密データに使用することを意図していません。

リソースの作成時に、次のリソースを使用してタグを指定できます。


|  タスク  |  コンソール  |  AWS CLI  |  API アクション  | 
| --- | --- | --- | --- | 
|  1 つまたは複数のタスクを実行する  |  [Amazon ECS タスクとしてのアプリケーションの実行](standalone-task-create.md)  |  [実行タスク](https://docs.aws.amazon.com/cli/latest/reference/ecs/run-task.html)  |  [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html)  | 
|  サービスを作成します。  |  [Amazon ECS のローリング更新デプロイの作成](create-service-console-v2.md)  |  [サービスの作成](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html)  |  [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html)  | 
|  タスクセットを作成します。  |  [サードパーティーのコントローラーを使用して Amazon ECS サービスをデプロイする](deployment-type-external.md)  |  [タスクセットを作成](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-task-set.html)  |  [CreateTaskSet](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateTaskSet.html)  | 
|  タスク定義を登録する  | [コンソールを使用した Amazon ECS タスク定義の作成](create-task-definition.md) |  [タスク定義を登録](https://docs.aws.amazon.com/cli/latest/reference/ecs/register-task-definition.html)  |  [RegisterTaskDefinition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RegisterTaskDefinition.html)  | 
|  クラスターを作成する。  |  [Fargate ワークロード用の Amazon ECS クラスターを作成する](create-cluster-console-v2.md)   |  [クラスター作成](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-cluster.html)  |  [CreateCluster](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCluster.html)  | 
|  1 つまたは複数のコンテナインスタンスを実行する  |  [Amazon ECS Linux コンテナインスタンスの起動](launch_container_instance.md)  |  [実行インスタンス](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html)  |  [RunInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html)  | 
|  Amazon ECS マネージドインスタンスのキャパシティプロバイダーを作成します。  |  [Amazon ECS マネージドインスタンスのキャパシティプロバイダーを作成する](create-capacity-provider-managed-instances.md)  |  [create-capacity-provider](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-capacity-provider.html)  |  [CreateCapacityProvider](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProvider.html)  | 

## 既存のリソースにタグを追加する (Amazon ECS コンソール)
<a name="adding-or-deleting-tags"></a>

Amazon ECS では、クラスター、サービス、タスク定義に関連付けられているタグを、そのリソースのページから直接追加または削除できます。

**個々のリソースのタグを変更するには**

1. コンソール ([https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)) を開きます。

1. ナビゲーションバーから、使用する AWS リージョン を選択します。

1. ナビゲーションペインでリソースタイプ (例:**Clusters (クラスター)** を選択します

1. リソースリストからリソースを選択し、**[Tags]** (タグ) タブを選択してから、**[Manage tags]** (タグの管理) を選択します｡

1. タグを設定します。

   [タグを追加] **[Add tag]** (タグを追加) を選択し、以下を実行します。
   + [**キー**] にはキー名を入力します。
   + [**値**] にキー値を入力します。

1. **[保存]** を選択します。

## 既存のリソースにタグを追加する (AWS CLI)
<a name="tag-resources-api-sdk"></a>

AWS CLI または API を使用して、1 つ以上のタグを追加または上書きできます。

**注記**  
デュアルスタックサービスエンドポイントを使用することで、IPv4 と IPv6 の両方を介して AWS CLI、SDK、および Amazon ECS API から Amazon ECS とやり取りできます。詳細については、「[Amazon ECS デュアルスタックエンドポイントの使用](dual-stack-endpoint.md)」を参照してください。
+ AWS CLI - [tag-resource](https://docs.aws.amazon.com/cli/latest/reference/ecs/tag-resource.html)
+ API アクション - [TagResource](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_TagResource.html)

# Amazon ECS マネージドインスタンスのタグ
<a name="instance-details-tags-managed-instances"></a>

Amazon ECS マネージドインスタンスは、コスト最適化に使用できるカスタムタグと AWS によって追加されたタグの組み合わせをサポートします。請求におけるタグの使用の詳細については、「[請求にタグを使用する](ecs-using-tags.md#tag-resources-for-billing)」を参照してください。

## AWS によって追加されたタグ
<a name="instance-details-tags-managed-instances-system"></a>

 AWS は、キャパシティプロバイダーによって作成された各 Amazon ECS マネージドインスタンスに次のタグを追加します。
+ Amazon ECS は、予約済みタグ `AmazonECSCreated` と `AmazonECSManaged`を Amazon ECS マネージドインスタンスに自動的に追加します。
+ Amazon ECS は、各インスタンスに次のシステムタグを追加します。
  + *キー*に `aws:ecs:clusterName` を、*値*にクラスター名を設定したタグ。
  + *キー*に `aws:ecs:capacityProviderName` を、*値*にキャパシティプロバイダー名を設定したタグ。
  + *キー*に `aws:ecs:containerInstanceId` を、*値*に Amazon ECS マネージドインスタンスのコンテナインスタンス ID を設定したタグ。
+ Amazon EC2 は、値 `ecs-managed-instances` を持つシステムタグ `aws:ec2:managed-launch` を追加します。また Amazon EC2 は、マネージドインスタンスの作成に使用された起動テンプレートと、マネージドインスタンスが属する Amazon EC2 Fleet を示すシステムタグを追加します。

## カスタムタグ
<a name="instance-details-tags-managed-instances-custom"></a>

キャパシティプロバイダーにタグを追加し、`propagateTags` プロパティを使用してタグ伝播を有効にすることで、Amazon ECS マネージドインスタンスにカスタムタグを追加できます。キャパシティプロバイダーのタグは、キャパシティプロバイダーが起動するマネージドインスタンスに伝播されます。

次のキャパシティプロバイダー定義の例では、`propagateTags` に `CAPACITY_PROVIDER` の値を使用してキャパシティプロバイダーを作成する場合、キャパシティプロバイダーからタグを指定して伝播する方法を示しています。

```
{
    "name": "my-cluster-managed-instances-cp",
    "cluster": "my-cluster",
     "tags": [
                {
                "key":"tag_key",
                "value":"tag_value"
                }
            ],
    "managedInstancesProvider": {
        "infrastructureRoleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRole",
        "propagateTags": "CAPACITY_PROVIDER",
        "instanceLaunchTemplate": {
            "ec2InstanceProfileArn": "arn:aws:iam::123456789012:instance-profile/ecsInstanceProfile",
            "networkConfiguration": {
                "subnets": [
                    "subnet-abcdef01234567",
                    "subnet-bcdefa98765432"
                ],
                "securityGroups": [ 
                    "sg-0123456789abcdef"
                ]
            }
        }
    }
}
```

**注記**  
キャパシティプロバイダーに新しいタグを追加した場合、新しく追加されたタグは既存のインスタンスには伝播されませんが、新しく作成されたインスタンスには伝播されます。
お客様が EC2 インスタンスにタグを直接追加することも可能ですが、それらのタグはキャパシティプロバイダーに伝播されません。
[既存のリソースにタグを追加する (AWS CLI)](tag-resources-console.md#tag-resources-api-sdk) または [既存のリソースにタグを追加する (Amazon ECS コンソール)](tag-resources-console.md#adding-or-deleting-tags) を使用して、キャパシティプロバイダーにタグ付けする、またはタグを削除することもできます。

Amazon ECS マネージドインスタンスキャパシティプロバイダーの詳細については、「[Amazon ECS マネージドインスタンスのキャパシティプロバイダー](managed-instances-capacity-providers-concept.md)」を参照してください。

# Amazon ECS の Amazon EC2 コンテナインスタンスにタグを追加する
<a name="instance-details-tags"></a>

以下のいずれかの方法で、Amazon ECS の Amazon EC2 コンテナインスタンスにタグを関連付けることができます。
+ 方法 1 – Amazon EC2、API、CLI、またはコンソールを使用してコンテナインスタンスを作成するときに、コンテナエージェントの設定パラメータ `ECS_CONTAINER_INSTANCE_TAGS` を使用してインスタンスにユーザーデータを渡すことで、タグを指定します。これにより、Amazon ECS のコンテナインスタンスにのみ関連付けられているタグが作成され、Amazon EC2 API では一覧表示できなくなります。詳細については、「[Amazon ECS Linux コンテナインスタンスをブートストラップしてデータを渡す](bootstrap_container_instance.md)」を参照してください。
**重要**  
Amazon EC2 Auto Scaling グループを使用してコンテナインスタンスを起動する場合は、ECS\$1CONTAINER\$1INSTANCE\$1TAGS エージェント設定パラメータを使用してタグを追加する必要があります。これは、Auto Scaling グループを使用して起動される Amazon EC2 インスタンスにタグを追加する方法によるものです。

  コンテナインスタンスにタグを関連付けるユーザーデータスクリプトの例を次に示します。

  ```
  #!/bin/bash
  cat <<'EOF' >> /etc/ecs/ecs.config
  ECS_CLUSTER=MyCluster
  ECS_CONTAINER_INSTANCE_TAGS={"tag_key": "tag_value"}
  EOF
  ```
+ 方法 2 – Amazon EC2 API、CLI、またはコンソールを使用してコンテナインスタンスを作成する場合、最初に `TagSpecification.N` パラメータを使用してタグを指定します。その後、コンテナエージェント設定パラメータ `ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM` を使用して、ユーザーデータをインスタンスに渡します。これにより、Amazon EC2 から Amazon ECS に伝播されます。

  以下に、Amazon EC2 インスタンスに関連付けられたタグを伝播し、さらに `MyCluster` という名前のクラスターでインスタンスを登録するユーザーデータスクリプトの例を示します。

  ```
  #!/bin/bash
  cat <<'EOF' >> /etc/ecs/ecs.config
  ECS_CLUSTER=MyCluster
  ECS_CONTAINER_INSTANCE_PROPAGATE_TAGS_FROM=ec2_instance
  EOF
  ```

  コンテナインスタンスのタグが Amazon EC2 から Amazon ECS に伝達されることを許可するには、以下のアクセス許可を コンテナインスタンスの IAM ロールにインラインポリシーとして手動で追加します。詳細については、「[IAM ポリシーの追加と削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。
  + `ec2:DescribeTags`

  これらのアクセス許可を追加するために使用される、ポリシーの例を次に示します。

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

****  

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

------

# Amazon ECS の外部コンテナインスタンスにタグを追加する
<a name="instance-details-tags-external"></a>

次のいずれかの方法を使用して、Amazon ECS の外部コンテナインスタンスに関連するタグを付けることができます。
+ 方法 1 — インストールスクリプトを実行して外部インスタンスをクラスターに登録する前に、Amazon ECS コンテナエージェント設定ファイル (`/etc/ecs/ecs.config`を追加し`ECS_CONTAINER_INSTANCE_TAGS`コンテナエージェント設定パラメーター。これにより、外部インスタンスに関連付けられているタグが作成されます。

  構文の例を次に示します。

  ```
  ECS_CONTAINER_INSTANCE_TAGS={"tag_key": "tag_value"}
  ```
+ 方法 2 — 外部インスタンスがクラスターに登録された後、AWS マネジメントコンソール を使用して、タグを追加できます。詳細については、「[既存のリソースにタグを追加する (Amazon ECS コンソール)](tag-resources-console.md#adding-or-deleting-tags)」を参照してください。

# Amazon ECS 使用状況レポート
<a name="usage-reports"></a>

AWS は、Amazon ECS リソースのコストおよび使用量を分析するために使用できる、Cost Explorer と呼ばれるレポートツールを提供します。

Cost Explorer を使用して、使用状況とコストのグラフを表示できます。過去 13 か月からデータを表示でき、また次の 3 か月間にどのくらい使用する可能性があるかを予測します。Cost Explorer を使用すると、時間の経過とともに AWS リソースに費やす金額のパターンを確認できます。例えば、Cost Explorer を使用して、さらに調べる必要がある分野を特定し、コストを把握するために使用できる傾向を確認できます。データの時間範囲を指定したり、時間データを日または月ごとに表示することもできます。

コストと使用状況レポートの計測データには、すべての Amazon ECS タスクの使用状況が示されます。計測データには、実行された各タスクの CPU 使用量が `vCPU-Hours` として、メモリ使用量が `GB-Hours` として含まれます。データの表示方法は、タスクのコンピューティングオプションによって異なります。

Fargate を使用するタスクの場合、`lineItem/Operation` 列には `FargateTask` が表示され、各タスクに関連するコストを確認できます。

EC2 を使用するタスクの場合、`lineItem/Operation` 列には `ECSTask-EC2` が表示されます。該当のタスクには、直接関連するコストはありません。メモリの使用状況など、レポートに表示される計測データは、指定された請求期間にタスクが予約したリソースの合計を表します。このデータを使用して、Amazon EC2 インスタンスの基盤となるクラスターのコストを決定できます。Amazon EC2 インスタンスのコストと使用状況データは、Amazon EC2 サービスの下に個別に示されます。

Amazon ECS マネージドタグを使用して各タスクが属するサービスやクラスターを識別することもできます。詳細については、「[請求にタグを使用する](ecs-using-tags.md#tag-resources-for-billing)」を参照してください。

**重要**  
計測データは、2018 年 11 月 16 日以降に起動したタスクでのみ表示されます。この日付より前に起動したタスクには、計測データが表示されません。

Cost Explorer でコスト配分データを並べ替えるために使用できるフィールドの例を次に示します。
+ クラスター名
+ サービス名
+ リソースタグ
+ 起動タイプ
+ AWS リージョン
+ 使用タイプ

AWSのコストと使用状況レポートの作成の詳細については、*AWS Billingユーザーガイド*の[AWSのコストと使用状況レポート](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/billing-reports-costusage.html)を参照してください。

## タスクレベルのコストと使用状況レポート
<a name="task-cur"></a>

AWS Cost Management は、Fargate のタスクや EC2 のタスクを含む、Amazon ECS の各タスクの AWS Cost and Usage Report における CPU とメモリの使用状況データを提供できます。このデータは*コスト配分データの分割*と呼ばれます。このデータを使用して、アプリケーションのコストと使用状況を分析できます。さらに、コスト配分タグとコストカテゴリを使用して、個々のビジネスユニットやチームにコストを分割して割り当てることができます。*コスト配分データの分割*の詳細については、「AWS Cost and Usage Report ユーザーガイド」の「[分割コスト配分データを理解する](https://docs.aws.amazon.com/cur/latest/userguide/split-cost-allocation-data.html)」を参照してください。

AWS Cost Management Console で、アカウントのためにタスクレベルの*コスト配分データの分割*をオプトインできます。管理 (支払者) アカウントをお持ちの場合は、支払者アカウントからオプトインして、すべてのリンクされたアカウントにこの設定を適用できます。

*コスト配分データの分割*を設定すると、レポートの **splitLineItem** ヘッダーの下に追加の列が表示されます。詳細については、「AWS Cost and Usage Report ユーザーガイド」の「[明細の分割の詳細](https://docs.aws.amazon.com/cur/latest/userguide/split-line-item-columns.html)」を参照してください。

EC2 のタスクの場合、このデータは、リソースの使用状況または予約、およびインスタンスの残りのリソースに基づいて、EC2 インスタンスのコストを分割します。

前提条件は次のとおりです。
+ `ECS_DISABLE_METRICS` Amazon ECS エージェント設定パラメータを `false` に設定します。

  この設定が `false` である場合、Amazon ECS エージェントはメトリクスを Amazon CloudWatch に送信します。Linux では、この設定はデフォルトで `false` であり、メトリクスは CloudWatch に送信されます。Windows では、この設定はデフォルトで `true` であるため、メトリクスを CloudWatch に送信して AWS Cost Management が使用できるようにするためには、設定を `false` に変更する必要があります。ECS エージェント設定の詳細については、「[Amazon ECS コンテナエージェントの設定](ecs-agent-config.md)」を参照してください。
+ 信頼できるメトリクスの最小 Docker バージョンは、Amazon ECS 最適化 AMI 20220607 以降に含まれる Docker バージョン v20.10.13 以降です。

*コスト配分データの分割*を使用するには、レポートを作成し、**[コスト配分データの分割]** を選択する必要があります。詳細については、「AWS Cost and Usage Report ユーザーガイド」の「[コストと使用状況レポートを作成する](https://docs.aws.amazon.com/cur/latest/userguide/cur-create.html)」を参照してください。

AWS Cost Management は、タスクの CPU とメモリの使用状況を使用して*コスト配分データの分割*を計算します。使用状況が利用できない場合、AWS Cost Management は、使用状況の代わりにタスクの CPU とメモリの予約を使用できます。CUR が予約を使用していることがわかった場合は、コンテナインスタンスが前提条件を満たしていること、およびタスクリソースの使用状況メトリクスが CloudWatch に表示されることを確認します。