Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

タグと AWS CDK

フォーカスモード
タグと AWS CDK - AWS Cloud Development Kit (AWS CDK) v2

これは v2 AWS CDK デベロッパーガイドです。旧版の CDK v1 は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。

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

これは v2 AWS CDK デベロッパーガイドです。旧版の CDK v1 は 2022 年 6 月 1 日にメンテナンスを開始し、2023 年 6 月 1 日にサポートを終了しました。

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

タグは、 AWS CDK アプリのコンストラクトに追加できる情報キーと値の要素です。特定のコンストラクトに適用されるタグは、タグ付け可能なすべての子にも適用されます。タグは、アプリから合成された AWS CloudFormation テンプレートに含まれ、デプロイする AWS リソースに適用されます。タグを使用し、次の用途でリソースを識別および分類できます。

  • 管理の簡素化

  • コスト配分

  • アクセスコントロール

  • 考案したその他の用途

ヒント

AWS リソースでタグを使用する方法の詳細については、 AWS ホワイトペーパーAWS 「リソースのタグ付けのベストプラクティス」を参照してください。

タグの使用

Tags クラスには静的メソッドの of() が含まれており、これを使用して指定されたコンストラクトにタグを追加したり、タグを削除したりすることができます。

  • Tags.of(SCOPE).add() は、指定されたコンストラクトおよびそのすべての子に新しいタグを適用します。

  • Tags.of(SCOPE).remove() は、子コンストラクトがそれ自体に適用したタグなど、特定のコンストラクトおよびその子からタグを削除します。

注記

タグ付けは アスペクトと AWS CDK を使用して実装されます。アスペクトは、特定のスコープのすべてのコンストラクトにオペレーション (タグ付けなど) を適用する方法です。

次の例では、を持つタグキーをコンストラクトに適用します。

TypeScript
Tags.of(myConstruct).add('key', 'value');
JavaScript
Tags.of(myConstruct).add('key', 'value');
Python
Tags.of(my_construct).add("key", "value")
Java
Tags.of(myConstruct).add("key", "value");
C#
Tags.Of(myConstruct).Add("key", "value");
Go
awscdk.Tags_Of(myConstruct).Add(jsii.String("key"), jsii.String("value"), &awscdk.TagProps{})
Tags.of(myConstruct).add('key', 'value');

次の例では、コンストラクトからタグキーを削除します。

TypeScript
Tags.of(myConstruct).remove('key');
JavaScript
Tags.of(myConstruct).remove('key');
Python
Tags.of(my_construct).remove("key")
Java
Tags.of(myConstruct).remove("key");
C#
Tags.Of(myConstruct).Remove("key");
Go
awscdk.Tags_Of(myConstruct).Remove(jsii.String("key"), &awscdk.TagProps{})
Tags.of(myConstruct).remove('key');

Stage コンストラクトを使用している場合、タグを Stage レベル以下で適用します。タグは Stage 境界を越えて適用されません。

タグの優先順位

はタグを再帰的に AWS CDK 適用および削除します。競合がある場合、優先順位が最も高いタグ付けオペレーションが優先されます。(優先順位はオプションの priority プロパティを使用して設定されます) 2 つのオペレーションの優先順位が同じである場合、コンストラクトツリーの下部に最も近いタグ付けオペレーションが優先されます。デフォルトでは、タグの適用の優先度は 100 です (優先度が 50 の AWS CloudFormation リソースに直接追加されたタグを除く)。タグ削除のデフォルトの優先順位は 200 です。

次の内容は、優先順位が 300 のタグをコンストラクトに適用します。

TypeScript
Tags.of(myConstruct).add('key', 'value', { priority: 300 });
JavaScript
Tags.of(myConstruct).add('key', 'value', { priority: 300 });
Python
Tags.of(my_construct).add("key", "value", priority=300)
Java
Tags.of(myConstruct).add("key", "value", TagProps.builder() .priority(300).build());
C#
Tags.Of(myConstruct).Add("key", "value", new TagProps { Priority = 300 });
Go
awscdk.Tags_Of(myConstruct).Add(jsii.String("key"), jsii.String("value"), &awscdk.TagProps{ Priority: jsii.Number(300), })
Tags.of(myConstruct).add('key', 'value', { priority: 300 });

オプションプロパティ

タグは、リソースへのタグの適用方法、あるいはリソースからのタグの削除方法を微調整する properties をサポートします。すべてのプロパティはオプションです。

applyToLaunchedInstances (Python: apply_to_launched_instances)

add() にのみ利用できます。デフォルトでは、タグは Auto Scaling グループで起動されたインスタンスに適用されます。このプロパティを false に設定し、Auto Scaling グループで起動されたインスタンスを無視します。

includeResourceTypes/excludeResourceTypes (Python: include_resource_types/exclude_resource_types)

これらを使用して、リソースタイプに基づいて、 AWS CloudFormation リソースのサブセットでのみタグを操作します。デフォルトでは、オペレーションはコンストラクトサブツリーのすべてのリソースに適用されますが、特定のリソースタイプを含めるか除外するかによって変更できます。exclude および include の両方が指定された場合、exclude が優先されます。

priority

これを使用し、他の Tags.add() および Tags.remove() オペレーションに関するこのオペレーションの優先順位を設定します。大きい値は小さい値よりも優先されます。デフォルトは、追加オペレーションの場合は 100 ( AWS CloudFormation リソースに直接適用されるタグの場合は 50)、削除オペレーションの場合は 200 です。

次の例では、コンストラクトの AWS::Xxx::Yyy タイプのリソースに、値が value で優先度が 100 のタグ tagname を適用します。Amazon EC2 Auto Scaling グループで起動されたインスタンスや、AWS::Xxx::Zzz 型のリソースにはタグを適用しません。(これらは 2 つの任意で異なる AWS CloudFormation リソースタイプのプレースホルダーです)。

TypeScript
Tags.of(myConstruct).add('tagname', 'value', { applyToLaunchedInstances: false, includeResourceTypes: ['AWS::Xxx::Yyy'], excludeResourceTypes: ['AWS::Xxx::Zzz'], priority: 100, });
JavaScript
Tags.of(myConstruct).add('tagname', 'value', { applyToLaunchedInstances: false, includeResourceTypes: ['AWS::Xxx::Yyy'], excludeResourceTypes: ['AWS::Xxx::Zzz'], priority: 100 });
Python
Tags.of(my_construct).add("tagname", "value", apply_to_launched_instances=False, include_resource_types=["AWS::Xxx::Yyy"], exclude_resource_types=["AWS::Xxx::Zzz"], priority=100)
Java
Tags.of(myConstruct).add("tagname", "value", TagProps.builder() .applyToLaunchedInstances(false) .includeResourceTypes(Arrays.asList("AWS::Xxx::Yyy")) .excludeResourceTypes(Arrays.asList("AWS::Xxx::Zzz")) .priority(100).build());
C#
Tags.Of(myConstruct).Add("tagname", "value", new TagProps { ApplyToLaunchedInstances = false, IncludeResourceTypes = ["AWS::Xxx::Yyy"], ExcludeResourceTypes = ["AWS::Xxx::Zzz"], Priority = 100 });
Go
awscdk.Tags_Of(myConstruct).Add(jsii.String("tagname"), jsii.String("value"), &awscdk.TagProps{ ApplyToLaunchedInstances: jsii.Bool(false), IncludeResourceTypes: &[]*string{jsii.String("AWS::Xxx:Yyy")}, ExcludeResourceTypes: &[]*string{jsii.String("AWS::Xxx:Zzz")}, Priority: jsii.Number(100), })
Tags.of(myConstruct).add('tagname', 'value', { applyToLaunchedInstances: false, includeResourceTypes: ['AWS::Xxx::Yyy'], excludeResourceTypes: ['AWS::Xxx::Zzz'], priority: 100, });

次の例では、優先度 200 のタグ tagname をコンストラクトの AWS::Xxx::Yyy 型のリソースから削除しますが、AWS::Xxx::Zzz 型のリソースからは削除しません。

TypeScript
Tags.of(myConstruct).remove('tagname', { includeResourceTypes: ['AWS::Xxx::Yyy'], excludeResourceTypes: ['AWS::Xxx::Zzz'], priority: 200, });
JavaScript
Tags.of(myConstruct).remove('tagname', { includeResourceTypes: ['AWS::Xxx::Yyy'], excludeResourceTypes: ['AWS::Xxx::Zzz'], priority: 200 });
Python
Tags.of(my_construct).remove("tagname", include_resource_types=["AWS::Xxx::Yyy"], exclude_resource_types=["AWS::Xxx::Zzz"], priority=200,)
Java
Tags.of((myConstruct).remove("tagname", TagProps.builder() .includeResourceTypes(Arrays.asList("AWS::Xxx::Yyy")) .excludeResourceTypes(Arrays.asList("AWS::Xxx::Zzz")) .priority(100).build());
C#
Tags.Of(myConstruct).Remove("tagname", new TagProps { IncludeResourceTypes = ["AWS::Xxx::Yyy"], ExcludeResourceTypes = ["AWS::Xxx::Zzz"], Priority = 100 });
Go
awscdk.Tags_Of(myConstruct).Remove(jsii.String("tagname"), &awscdk.TagProps{ IncludeResourceTypes: &[]*string{jsii.String("AWS::Xxx:Yyy")}, ExcludeResourceTypes: &[]*string{jsii.String("AWS::Xxx:Zzz")}, Priority: jsii.Number(200), })
Tags.of(myConstruct).remove('tagname', { includeResourceTypes: ['AWS::Xxx::Yyy'], excludeResourceTypes: ['AWS::Xxx::Zzz'], priority: 200, });

次の例では、MarketingSystem という名前で Stack 内に作成されたすべてのリソースに、TheBest の値をもつ StackType のタグキーを追加します。次に、Amazon EC2 VPC サブネットを除くすべてのリソースから再度削除します。その結果、サブネットのみにタグが適用されます。

TypeScript
import { App, Stack, Tags } from 'aws-cdk-lib'; const app = new App(); const theBestStack = new Stack(app, 'MarketingSystem'); // Add a tag to all constructs in the stack Tags.of(theBestStack).add('StackType', 'TheBest'); // Remove the tag from all resources except subnet resources Tags.of(theBestStack).remove('StackType', { excludeResourceTypes: ['AWS::EC2::Subnet'] });
JavaScript
const { App, Stack, Tags } = require('aws-cdk-lib'); const app = new App(); const theBestStack = new Stack(app, 'MarketingSystem'); // Add a tag to all constructs in the stack Tags.of(theBestStack).add('StackType', 'TheBest'); // Remove the tag from all resources except subnet resources Tags.of(theBestStack).remove('StackType', { excludeResourceTypes: ['AWS::EC2::Subnet'] });
Python
from aws_cdk import App, Stack, Tags app = App(); the_best_stack = Stack(app, 'MarketingSystem') # Add a tag to all constructs in the stack Tags.of(the_best_stack).add("StackType", "TheBest") # Remove the tag from all resources except subnet resources Tags.of(the_best_stack).remove("StackType", exclude_resource_types=["AWS::EC2::Subnet"])
Java
import software.amazon.awscdk.App; import software.amazon.awscdk.Tags; // Add a tag to all constructs in the stack Tags.of(theBestStack).add("StackType", "TheBest"); // Remove the tag from all resources except subnet resources Tags.of(theBestStack).remove("StackType", TagProps.builder() .excludeResourceTypes(Arrays.asList("AWS::EC2::Subnet")) .build());
C#
using Amazon.CDK; var app = new App(); var theBestStack = new Stack(app, 'MarketingSystem'); // Add a tag to all constructs in the stack Tags.Of(theBestStack).Add("StackType", "TheBest"); // Remove the tag from all resources except subnet resources Tags.Of(theBestStack).Remove("StackType", new TagProps { ExcludeResourceTypes = ["AWS::EC2::Subnet"] });
Go
import "github.com/aws/aws-cdk-go/awscdk/v2" app := awscdk.NewApp(nil) theBestStack := awscdk.NewStack(app, jsii.String("MarketingSystem"), &awscdk.StackProps{}) // Add a tag to all constructs in the stack awscdk.Tags_Of(theBestStack).Add(jsii.String("StackType"), jsii.String("TheBest"), &awscdk.TagProps{}) // Remove the tag from all resources except subnet resources awscdk.Tags_Of(theBestStack).Add(jsii.String("StackType"), jsii.String("TheBest"), &awscdk.TagProps{ ExcludeResourceTypes: &[]*string{jsii.String("AWS::EC2::Subnet")}, })
import { App, Stack, Tags } from 'aws-cdk-lib'; const app = new App(); const theBestStack = new Stack(app, 'MarketingSystem'); // Add a tag to all constructs in the stack Tags.of(theBestStack).add('StackType', 'TheBest'); // Remove the tag from all resources except subnet resources Tags.of(theBestStack).remove('StackType', { excludeResourceTypes: ['AWS::EC2::Subnet'] });

次のコードは同じ結果を出します。どのアプローチ (包含または除外) が意図をより明確にするか検討します。

TypeScript
Tags.of(theBestStack).add('StackType', 'TheBest', { includeResourceTypes: ['AWS::EC2::Subnet']});
JavaScript
Tags.of(theBestStack).add('StackType', 'TheBest', { includeResourceTypes: ['AWS::EC2::Subnet']});
Python
Tags.of(the_best_stack).add("StackType", "TheBest", include_resource_types=["AWS::EC2::Subnet"])
Java
Tags.of(theBestStack).add("StackType", "TheBest", TagProps.builder() .includeResourceTypes(Arrays.asList("AWS::EC2::Subnet")) .build());
C#
Tags.Of(theBestStack).Add("StackType", "TheBest", new TagProps { IncludeResourceTypes = ["AWS::EC2::Subnet"] });
Go
awscdk.Tags_Of(theBestStack).Add(jsii.String("StackType"), jsii.String("TheBest"), &awscdk.TagProps{ IncludeResourceTypes: &[]*string{jsii.String("AWS::EC2::Subnet")}, })
Tags.of(theBestStack).add('StackType', 'TheBest', { includeResourceTypes: ['AWS::EC2::Subnet']});

1 つのコンストラクトのタグ付け

Tags.of(scope).add(key, value) は、 AWS CDKのコンストラクトにタグを追加する標準的な方法です。そのツリーウォーキング動作は、特定のスコープですべてのタグ付け可能なリソースを再帰的にタグ付けし、ほぼ常に必要な動作です。ただし、特定の任意のコンストラクト (または複数のコンストラクト) にタグ付けが必要な場合があります。

このようなケースの 1 つには、タグ付けされるコンストラクトの一部のプロパティから値が導出されるタグが適用されます。標準のタグ付けアプローチは、スコープのすべての一致するリソースに同じキーおよび値を再帰的に適用します。ただし、こちらではタグ付けされたコンストラクトごとに値が異なる場合があります。

タグはアスペクトを使用して実装され、CDK は Tags.of(scope) を使用して指定したスコープで各コンストラクトにタグの visit() メソッドを呼び出します。Tag.visit() を直接を呼び出し、タグを 1 つのコンストラクトに適用できます。

TypeScript
new cdk.Tag(key, value).visit(scope);
JavaScript
new cdk.Tag(key, value).visit(scope);
Python
cdk.Tag(key, value).visit(scope)
Java
Tag.Builder.create(key, value).build().visit(scope);
C#
new Tag(key, value).Visit(scope);
Go
awscdk.NewTag(key, value, &awscdk.TagProps{}).Visit(scope)
new cdk.Tag(key, value).visit(scope);

スコープのすべてのコンストラクトにタグ付けすることはできますが、タグの値が各コンストラクトのプロパティから導出させます。これを行うには、前の例で示すように、アスペクトを記述してアスペクトの visit() メソッドにタグを適用します。次に、Aspects.of(scope).add(aspect) を使用して目的のスコープにアスペクトを追加します。

次の例では、リソースのパスを含むスタックの各リソースにタグを適用します。

TypeScript
class PathTagger implements cdk.IAspect { visit(node: IConstruct) { new cdk.Tag("aws-cdk-path", node.node.path).visit(node); } } stack = new MyStack(app); cdk.Aspects.of(stack).add(new PathTagger())
JavaScript
class PathTagger { visit(node) { new cdk.Tag("aws-cdk-path", node.node.path).visit(node); } } stack = new MyStack(app); cdk.Aspects.of(stack).add(new PathTagger())
Python
@jsii.implements(cdk.IAspect) class PathTagger: def visit(self, node: IConstruct): cdk.Tag("aws-cdk-path", node.node.path).visit(node) stack = MyStack(app) cdk.Aspects.of(stack).add(PathTagger())
Java
final class PathTagger implements IAspect { public void visit(IConstruct node) { Tag.Builder.create("aws-cdk-path", node.getNode().getPath()).build().visit(node); } } stack stack = new MyStack(app); Aspects.of(stack).add(new PathTagger());
C#
public class PathTagger : IAspect { public void Visit(IConstruct node) { new Tag("aws-cdk-path", node.Node.Path).Visit(node); } } var stack = new MyStack(app); Aspects.Of(stack).Add(new PathTagger);
class PathTagger implements cdk.IAspect { visit(node: IConstruct) { new cdk.Tag("aws-cdk-path", node.node.path).visit(node); } } stack = new MyStack(app); cdk.Aspects.of(stack).add(new PathTagger())
ヒント

優先順位やリソースタイプなど、条件付きタグ付けのロジックは Tag クラスに組み込まれています。これらの機能は、任意のリソースにタグを適用するときに使用できます。条件が満たされない場合、タグは適用されません。また、Tag クラスはタグ付け可能なリソースのみをタグ付けするため、タグを適用する前にコンストラクトがタグ付け可能であるかどうかをテストする必要はありません。

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.