AWS CDK を用いて作成した VPC・Subnet にリソース名をつける方法を教えてください
困っていること
AWS CDK を用いて作成した VPC や Subnet をコンソール画面上で確認したところ、意図したリソース名が付与されていない状態となります。
どのように記載することでリソース名を付けることが可能ですか。
どう対応すればいいの?
VPC の場合、vpc_name プロパティを Subnet の場合タグの付与をお試しください。
リソース作成時に、第二引数として与えられる id プロパティはドキュメントに記載の通り、識別子でありリソース名とは異なります。
最も一般的な識別子である はid、コンストラクトオブジェクトをインスタンス化するときに 2 番目の引数として渡される識別子です。
リソース名を付与する方法は作成するリソースにより異なりますが、VPC の場合 vpc_name プロパティを、Subnet の場合、キーを Name としたタグを付与いただくことで作成されたリソースにリソース名を付与いただけます。
vpc_name (Optional[str]) – The name of the VPC. If given, will import the VPC with this name. Default: Don’t filter on vpcName
やってみた
実際に、AWS CDK を用いて VPC と Subnet を作成し、上記の方法でリソース名の付与を行ってみます。
下記のチュートリアルを参考に、Python にて実装を行っていきます。
今回は以下のようなコードになりました。
from aws_cdk import (
Stack,
aws_ec2 as ec2,
Tags
)
from constructs import Construct
class HelloCdkStack(Stack):
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
# VPC
vpc = ec2.Vpc(
self,
"testvpc",
cidr="xxx.xxx.x.x/xx",
max_azs=2,
nat_gateways=0,
subnet_configuration=[],
# vpc_name="testvpc"
)
# Subnet
vpc_subnets=[
ec2.Subnet(
self,
"test_Public1",
availability_zone="ap-northeast-1a",
cidr_block="xxx.xxx.x.x/xx",
vpc_id=vpc.vpc_id
)]
# リソース名付与用のタグ付
# Tags.of(vpc_subnets[0]).add("Name", "test_Public1")
まずは、タグ付なし & vpc_name プロパティなしで実行し、リソース名が正しく付与されないことを確認します。
作成されたリソースは以下のようになりました。
- VPC
- Subnet
上記のように、スタック名も含めたリソース名が自動で付与されています。
続いて、上記のソースコードよりコメントアウトしている部分を削除し再度デプロイを行います。
結果は以下のようになりました。
- VPC
- Subnet
ソースコード内に記載したリソース名が付与されていることが確認できました。