LoginSignup
2
1

More than 1 year has passed since last update.

[小ネタ]CDKで作成するAWSリソースに共通タグを付与する方法

Last updated at Posted at 2022-11-24

概要

AWSリソースには付加情報としてタグを付与することができます。
タグは以下のようなケースで、請求金額の管理を行うためなどに利用されます。

・同一アカウントで複数環境を作成している場合、作成したAWSリソースがどの環境のものかわかるようにする
・同一アカウントで複数の部署がAWS環境を触っている場合、作成したAWSリソースがどの部署のものかわかるようにする
・同一アカウントで複数のシステムを作成している場合、作成したAWSリソースがどのシステムのものかわかるようにする

試してみた

では、実際にCDKでタグを付与してみます。

Stack APPのCDKは以下になります。

bin/cdk.ts
#!/usr/bin/env node
import 'source-map-support/register';
import * as cdk from '@aws-cdk/core';
import { SalesPlanningStack } from '../lib/stack_sales_planning';
import { DevelopmentStack } from '../lib/stack_development';

const app = new cdk.App();
const developmentStack = new DevelopmentStack(app, 'DevelopmentStack', {
});
const salesPlanningStack = new SalesPlanningStack(app, 'SalesPlanningStack', {
});

cdk.Tags.of(app).add("env", app.node.tryGetContext(`environment`)); // 環境
cdk.Tags.of(salesPlanningStack).add("department", "sales_planning"); // 部署(営業部)
cdk.Tags.of(developmentStack).add("department", "development"); // 部署(開発部)

cdk.Tags.of(app)で全てのスタック配下の全てのAWSリソースに共通のタグを付与します。
cdk.Tags.of(salesPlanningStack)でsalesPlanningStack配下の全てのAWSリソースに共通のタグを付与します。

部署(営業部)と 部署(開発部)のCDKは以下になります。
※今回はタグの付与確認が目的のため、どちらもS3バケットのみ作成します。

lib/stack_sales_planning.ts
import * as cdk from '@aws-cdk/core';
import * as s3 from '@aws-cdk/aws-s3';

export class SalesPlanningStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    new s3.CfnBucket(this, 'CreateSalesPlanningBucket', {
      bucketName: 'sales-planning-tag-bucket'
    });
  }
}
lib/stack_development.ts
import * as cdk from '@aws-cdk/core';
import * as s3 from '@aws-cdk/aws-s3';

export class DevelopmentStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    new s3.CfnBucket(this, 'CreateDevelopmentBucket', {
      bucketName: 'development-tag-bucket'
    });
  }
}

デプロイ実施時に引数で環境名を渡して、各スタックをデプロイします。

cdk deploy '*' --context environment=dev

作成したS3バケットのタグを確認すると、全スタック共通の環境名と、当スタックの部署名が付与されていることが確認できます。
1-S3バケット.PNG

おわりに

今回はCDKにおける共通タグの付与方法について説明させて頂きました。
内容としてはシンプルなものになりますが、ご参考になれば幸いです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1