

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ElastiCache リソースのタグ付け
<a name="Tagging-Resources"></a>

クラスターと他の ElastiCache リソースを管理しやすくするために、タグ形式で各リソースに独自のメタデータを割り当てることができます。タグを使用すると、目的、所有者、環境など、さまざまな方法で AWS リソースを分類できます。これは同じタイプのリソースが多数ある場合に役立ちます。割り当てたタグに基づいて、特定のリソースをすばやく識別できます。ここではタグとその作成方法について説明します。

**警告**  
ベストプラクティスとして、機密データをタグに含めないようお勧めします。

## タグの基本
<a name="Tagging-basics"></a>

タグは、 AWS リソースに割り当てるラベルです。各タグはキーとオプションの値で構成され、どちらもお客様側が定義します。タグを使用すると、目的や所有者など、さまざまな方法で AWS リソースを分類できます。たとえば、各インスタンスの所有者とユーザーグループを追跡しやすくするため、アカウントの ElastiCache クラスターに対して一連のタグを定義できます。

各リソースタイプのニーズを満たす一連のタグキーを考案することをお勧めします。一貫性のある一連のタグキーを使用することで、リソースの管理が容易になります。追加したタグに基づいてリソースを検索およびフィルタリングできます。効果的なリソースのタグ付け戦略を実装する方法の詳細については、「[AWS ホワイトペーパーのタグ付けのベストプラクティス](https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf)」を参照してください。

タグには、ElastiCache に関連する意味はなく、完全に文字列として解釈されます。また、タグは自動的にリソースに割り当てられます。タグキーと値は編集でき、リソースからタグはいつでも削除できます。タグの値は `null` に設定できます。特定のリソースについて既存のタグと同じキーを持つタグを追加した場合、以前の値は新しい値によって上書きされます。リソースを削除すると、リソースのタグもすべて削除されます。さらに、レプリケーショングループでタグを追加または削除すると、そのレプリケーショングループ内のすべてのノードにもタグが追加または削除されます。

 タグは、 AWS マネジメントコンソール、、 AWS CLIおよび ElastiCache API を使用して操作できます。

IAM を使用している場合は、 AWS アカウントのどのユーザーにタグを作成、編集、または削除するためのアクセス許可があるかを制御できます。詳細については、「[リソースレベルのアクセス許可](IAM.ResourceLevelPermissions.md)」を参照してください。

## タグを付けることができるリソース
<a name="Tagging-your-resources"></a>

アカウントにすでに存在するほとんどの ElastiCache リソースにタグ付けできます。以下の表に、タグ付けをサポートするリソースを示します。を使用している場合は AWS マネジメントコンソール、タグ[エディタを使用してリソースにタグ](https://docs.aws.amazon.com/ARG/latest/userguide/tag-editor.html)を適用できます。一部のリソースの画面では、リソースの作成時にリソースのタグを指定できます。例えば、Name のキーと指定した値をタグ付けします。ほとんどの場合、リソースの作成後すぐに (リソースの作成時ではなく) コンソールによりタグが適用されます。コンソールではリソースを [**Name**] タグに応じて整理できますが、このタグには ElastiCache サービスに対する意味論的意味はありません。

 さらに、リソース作成アクションによってはリソースの作成時にリソースのタグを指定できます。リソースの作成時にタグを適用できない場合はリソース作成プロセスがロールバックされます。これにより、リソースがタグ付きで作成されるか、まったく作成されないようになるため、タグ付けされていないリソースが存在することがなくなります。作成時にリソースにタグ付けすることで、リソース作成後にカスタムタグ付けスクリプティングを実行する必要がなくなります。

 Amazon ElastiCache API、 CLI、または AWS SDK AWS を使用している場合は、関連する ElastiCache API アクションで `Tags`パラメータを使用してタグを適用できます。具体的には次の 2 つです。
+ `CreateServerlessCache`
+ `CreateCacheCluster`
+ `CreateReplicationGroup`
+ `CopyServerlessCacheSnapshot`
+ `CopySnapshot`
+ `CreateCacheParameterGroup`
+ `CreateCacheSecurityGroup`
+ `CreateCacheSubnetGroup`
+ `CreateServerlessCacheSnapshot`
+ `CreateSnapshot`
+ `CreateUserGroup`
+ `CreateUser`
+ `PurchaseReservedCacheNodesOffering`

次の表は、タグ付けできる ElastiCache リソースと、ElastiCache API、 CLI、または AWS SDK AWS を使用して作成時にタグ付けできるリソースを示しています。


**ElastiCache リソースのタグ付けのサポート**  

| [リソース]  | タグをサポート | 作成時のタグ付けをサポート | 
| --- | --- | --- | 
| serverlesscache | はい  | はい | 
| parametergroup | はい  | はい | 
| securitygroup | はい  | はい | 
| subnetgroup | はい  | はい | 
| replicationgroup | はい  | はい | 
| クラスター | はい  | はい | 
| reserved-instance | はい  | はい | 
| serverlesscachesnapshot | はい  | はい | 
| スナップショット | はい  | はい | 
| ユーザー | はい  | はい | 
| usergroup | はい  | はい | 

**注記**  
グローバルデータストアにタグを付けることはできません。

IAM ポリシーでタグベースのリソースレベルアクセス許可を、作成時のタグ付けをサポートする ElastiCache API アクションに適用し、作成時にリソースにタグ付けできるユーザーとグループを細かく制御できます。リソースは、作成時から適切に保護されます。タグはリソースに即座に適用されます。したがって、リソースの使用を制御するタグベースのリソースレベルの許可は、ただちに有効になります。リソースはより正確に追跡および報告されます。新しいリソースにタグ付けの使用を適用し、リソースで設定されるタグキーと値をコントロールできます。

詳細については、「[リソースのタグ付けの例](#Tagging-your-resources-example)」を参照してください。

 請求用のリソースへのタグ付けの詳細については、「[コスト配分タグによるコストのモニタリング](Tagging.md)」を参照してください。

## キャッシュとスナップショットのタグ付け
<a name="Tagging-replication-groups-snapshots"></a>

リクエストオペレーションの一部としてタグ付けには、次のルールが適用されます。
+ **CreateReplicationGroup**: 
  + `--primary-cluster-id` および `--tags` パラメータがリクエストに含まれている場合、リクエストタグはレプリケーショングループに追加され、レプリケーショングループ内のすべてのクラスターに伝播されます。プライマリクラスターに既存のタグがある場合、これらはリクエストタグで上書きされ、すべてのノードで一貫したタグを持つようになります。

    リクエストタグがない場合、プライマリクラスタータグはレプリケーショングループに追加され、すべてのクラスターに伝播されます。
  + `--snapshot-name` または `--serverless-cache-snapshot-name` が供給された場合:

    タグがリクエストに含まれている場合、レプリケーショングループはそれらのタグのみでタグ付けされます。タグがリクエストに含まれていない場合、スナップショットタグがレプリケーショングループに追加されます。
  + `--global-replication-group-id` が供給された場合:

    タグがリクエストに含まれている場合、リクエストタグはレプリケーショングループに追加され、すべてのクラスターに伝播されます。
+ **CreateCacheCluster**: 
  +  `--replication-group-id` が供給された場合:

    タグがリクエストに含まれている場合、クラスターはそれらのタグのみでタグ付けされます。タグがリクエストに含まれていない場合、クラスターはプライマリクラスターのタグではなく、レプリケーショングループのタグを継承します。
  + `--snapshot-name` が供給された場合:

    タグがリクエストに含まれている場合、クラスターはそれらのタグのみでタグ付けされます。タグがリクエストに含まれていない場合、スナップショットタグはクラスターに追加されます。
+ **CreateServerlessCache**: 
  + タグがリクエストに含まれている場合、リクエストタグのみがサーバーレスキャッシュに追加されます。
+ **CreateSnapshot**: 
  +  `--replication-group-id` が供給された場合:

    タグがリクエストに含まれている場合、リクエストタグのみがスナップショットに追加されます。タグがリクエストに含まれていない場合、レプリケーショングループタグがスナップショットに追加されます。
  + `--cache-cluster-id` が供給された場合:

    タグがリクエストに含まれている場合、リクエストタグのみがスナップショットに追加されます。タグがリクエストに含まれていない場合、クラスタータグがスナップショットに追加されます。
  + 自動スナップショットでは:

    タグは、レプリケーショングループタグから伝播されます。
+ **CreateServerlessCacheSnapshot**: 
  + タグがリクエストに含まれている場合、リクエストタグのみがサーバーレスキャッシュのスナップショットに追加されます。
+ **CopySnapshot**: 
  + タグがリクエストに含まれている場合、リクエストタグのみがスナップショットに追加されます。タグがリクエストに含まれていない場合、コピー元のスナップショットタグがコピーされたスナップショットに追加されます。
+ **CopyServerlessCacheSnapshot**: 
  + タグがリクエストに含まれている場合、リクエストタグのみがサーバーレスキャッシュのスナップショットに追加されます。
+ **AddTagsToResource** および **RemoveTagsFromResource**: 
  + タグはレプリケーショングループに追加または削除され、アクションはレプリケーショングループ内のすべてのクラスターに伝播されます。
**注記**  
**AddTagsToResource** および **RemoveTagsFromResource** は、デフォルトのパラメータおよびセキュリティグループには使用できません。
+ **IncreaseReplicaCount** および **ModifyReplicationGroupShardConfiguration**: 
  + レプリケーショングループに追加されたすべての新しいクラスターには、レプリケーショングループと同じタグが適用されます。

## タグの制限
<a name="Tagging-restrictions"></a>

次のベーシックな制限がタグに適用されます。
+ リソースあたりのタグの最大数 - 50 件
+ タグキーはリソースごとにそれぞれ一意である必要があります。また、各タグキーに設定できる値は 1 つのみです。
+ キーの最大長 – 128 Unicode 文字 (UTF-8)
+ 値の最大長 - 256 Unicode 文字 (UTF-8)。
+ ElastiCache ではタグ内に任意の文字を使用できますが、他のサービスでは制限がある場合があります。すべてのサービスで使用できる文字は、UTF-8 で表現できる文字、数字、およびスペースに加えて、 \+ - = . \_ : / @ です。
+ タグキーと値は大文字と小文字が区別されます。
+ `aws:` プレフィックスは AWS 使用のために予約されています。タグにこのプレフィックスが付いたタグキーがある場合、タグのキーまたは値を編集、削除することはできません。`aws:` プレフィックスを持つタグはリソースあたりのタグ数の制限時には計算されません。

タグのみに基づいてリソースを終了、停止、終了することはできません。リソース識別子を指定する必要があります。例えば、`DeleteMe` というタグキーを使用してタグ付けしたスナップショットを削除するには`DeleteSnapshot` のようなスナップショットのリソース識別子を指定して `snap-1234567890abcdef0` アクションを使用する必要があります。

タグ付けできる ElastiCache リソースの詳細については、「[タグを付けることができるリソース](#Tagging-your-resources)」を参照してください。

## リソースのタグ付けの例
<a name="Tagging-your-resources-example"></a>
+ タグを使ったサーバーレスキャッシュの作成。この例では、エンジンとして Memcached を使用します。

  ```
  aws elasticache create-serverless-cache \
      --serverless-cache-name CacheName \
      --engine memcached
      --tags Key="Cost Center", Value="1110001" Key="project",Value="XYZ"
  ```
+ サーバーレスキャッシュへのタグの追加

  ```
  aws elasticache add-tags-to-resource \
  --resource-name arn:aws:elasticache:us-east-1:111111222233:serverlesscache:my-cache \
  --tags Key="project",Value="XYZ" Key="Elasticache",Value="Service"
  ```
+ レプリケーショングループにタグを追加します。

  ```
  aws elasticache add-tags-to-resource \
  --resource-name arn:aws:elasticache:us-east-1:{{111111222233}}:replicationgroup:my-rg \
  --tags Key="project",Value="XYZ" Key="Elasticache",Value="Service"
  ```
+ タグを使用したキャッシュクラスターの作成。

  ```
  aws elasticache create-cache-cluster \
  --cluster-id testing-tags \
  --cluster-description cluster-test \
  --cache-subnet-group-name test \
  --cache-node-type cache.t2.micro \
  --engine valkey \
  --tags Key="project",Value="XYZ" Key="Elasticache",Value="Service"
  ```
+ タグを使用したキャッシュクラスターを作成します。この例では、エンジンとして Redis を使用します。

  ```
  aws elasticache create-cache-cluster \
  --cluster-id testing-tags \
  --cluster-description cluster-test \
  --cache-subnet-group-name test \
  --cache-node-type cache.t2.micro \
  --engine valkey \
  --tags Key="project",Value="XYZ" Key="Elasticache",Value="Service"
  ```
+ タグ付きのサーバーレススナップショットの作成。この例では、エンジンとして Memcached を使用します。

  ```
  aws elasticache create-serverless-cache-snapshot \
  --serverless-cache-name testing-tags \
  --serverless-cache-snapshot-name bkp-testing-tags-scs \
  --tags Key="work",Value="foo"
  ```
+ タグ付きのスナップショットを作成します。

  現在、スナップショットは Redis でのみ使用できます。この場合、リクエストでタグを追加すると、レプリケーショングループにタグが含まれている場合でも、スナップショットはリクエストタグのみを受け取ります。

  ```
  aws elasticache create-snapshot \
  --replication-group-id testing-tags \
  --snapshot-name bkp-testing-tags-rg \
  --tags Key="work",Value="foo"
  ```

## タグベースのアクセスコントロールポリシーの例
<a name="Tagging-access-control"></a>

1. クラスターに Project=XYZ というタグがある場合にのみ、クラスターへの `AddTagsToResource` アクションが許可されます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "elasticache:AddTagsToResource",
               "Resource": [
                   "arn:aws:elasticache:*:*:cluster:*"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/Project": "XYZ"
                   }
               }
           }
       ]
   }
   ```

------

1. レプリケーショングループに Project タグと Service タグが含まれ、キーが Project と Service と異なる場合、レプリケーショングループからの `RemoveTagsFromResource` アクションが許可されます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "elasticache:RemoveTagsFromResource",
               "Resource": [
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/Service": "Elasticache",
                       "aws:ResourceTag/Project": "XYZ"
                   },                
                   "ForAnyValue:StringNotEqualsIgnoreCase": {
                       "aws:TagKeys": [
                           "Project",
                           "Service"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. タグが Project と Service と異なる場合にのみ、任意のリソースへの `AddTagsToResource` が許可されます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Allow",
               "Action": "elasticache:AddTagsToResource",
               "Resource": [
                   "arn:aws:elasticache:*:*:*:*"
               ],
               "Condition": {
                   "ForAnyValue:StringNotEqualsIgnoreCase": {
                       "aws:TagKeys": [ 
                           "Service", 
                           "Project" 
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. リクエストに `Tag Project=Foo` がある場合、`CreateReplicationGroup` アクションが拒否されます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": "elasticache:CreateReplicationGroup",
               "Resource": [
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/Project": "Foo"
                   }
               }
           }
       ]
   }
   ```

------

1. ソーススナップショットに Project=XYZ タグがあり、リクエストタグが Service=Elasticache の場合、`CopySnapshot` アクションが拒否されます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Action": "elasticache:CopySnapshot",
               "Resource": [
                   "arn:aws:elasticache:*:*:snapshot:*"
               ],
               "Condition": {
                   "StringEquals": {
                       "aws:ResourceTag/Project": "XYZ",
                       "aws:RequestTag/Service": "Elasticache"
                   }
               }
           }
       ]
   }
   ```

------

1. リクエストタグ `Project` が欠落しているか、`Dev`、`QA`、または `Prod` と等しくない場合、`CreateCacheCluster` アクションが拒否されます。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
             {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:parametergroup:*",
                   "arn:aws:elasticache:*:*:subnetgroup:*",
                   "arn:aws:elasticache:*:*:securitygroup:*",
                   "arn:aws:elasticache:*:*:replicationgroup:*"
               ]
           },
           {
               "Effect": "Deny",
               "Action": [
                   "elasticache:CreateCacheCluster"
               ],
               "Resource": [
                   "arn:aws:elasticache:*:*:cluster:*"
               ],
               "Condition": {
                   "Null": {
                       "aws:RequestTag/Project": "true"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Action": [
                   "elasticache:CreateCacheCluster",
                   "elasticache:AddTagsToResource"
               ],
               "Resource": "arn:aws:elasticache:*:*:cluster:*",
               "Condition": {
                   "StringEquals": {
                       "aws:RequestTag/Project": [
                           "Dev",
                           "Prod",
                           "QA"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

条件キーの詳細については、「[条件キーの使用](IAM.ConditionKeys.md)」を参照してください。