AWSリソースのタグ設計について考えてみる - 命名規則編-

記事タイトルとURLをコピーする

CI2部 技術2課の山﨑です。

先日書いた2つのブログではそれぞれタグ設計に関する基礎知識、アカウント設計パターン別のタグ設計について整理して考えてみましたが、今回は少し志向を変えてAWSリソースの命名規則について考えてみました。

blog.serverworks.co.jp

blog.serverworks.co.jp

AWSリソースが持つ命名における3つの特性

AWSリソースには以下3つの特性を持ったものがありますので、命名規則について検討する場合は予め確認しておきましょう。

  • ①全世界で一意の値である必要があるAWSリソース
    • S3バケット名
  • ②AWSアカウント内で一意の値である必要があるAWSリソース
    • MFAデバイス名、IAM User名 等
  • ③一意である必要はないAWSリソース

AWSリソースの命名規則および命名例

以下、AWSリソースの命名規則についてAWSリソースをいくつかピックアップして考えてみたものをリストアップしていますので必要に応じてご参考ください。

  • < > で記載の箇所は必須で命名する内容を表しています
  • [ ] で記載の箇所は任意で命名する内容を表しています
  • { } で記載の箇所は { } 内に記載されている候補からいずれかを選択して命名することを示しています
AWSリソース AWSリソースコード 命名規則
VPC vpc vpc-<システムコード>-<環境名>-[任意の値]-[連番] vpc-sampleapp-prd、vpc-sampleapp-prd-001
VPC Endpoint vpce vpce-<システムコード>-<環境名>-<用途>-[任意の値]-[連番] vpce-sampleapp-prd-ssm、vpce-sampleapp-prd-s3-001
MFA端末名 mfa mfa-<社員番号>-<メールアドレス>-[連番] mfa-12345-xxxx@example.co.jp、mfa-12345-xxxx@example.co.jp-001
VPC Peering vpcp vpcp-リクエスタVPC名略称-to-アクセプタVPC名略称-[用途] vpcpeering-appprd-to-appstg
VPC Flow Logs flowlogs flowlogs-<ログ出力先>-[連番] flowlogs-s3-001、flowlogs-cwlogs-001
VPC Public Subnet public-subnet <システムコード>-<環境名>-public-subnet-[任意の値]-AZ名-[連番] sampleapp-prd-public-subnet-1a、sampleapp-prd-public-subnet-1a-001
VPC DMZ Subnet dmz-subnet <システムコード>-<環境名>-dmz-subnet-[任意の値-AZ名-[連番] sampleapp-prd-dmz-subnet-1a、sampleapp-prd-dmz-subnet-1a-001
VPC Private Subnet private-subnet <システムコード>-<環境名>-private-subnet-[任意の値]-AZ名-[連番] sampleapp-prd-private-subnet-1a、sampleapp-prd-private-subnet-1a-001
VPC Transit Gateway Attachment Subnet tgw-subnet <システムコード>-<環境名>-tgw-subnet-[任意の値]-AZ名-[連番] sampleapp-prd-tgw-subnet-1a、sampleapp-prd-tgw-subnet-1a-001
Route Table rtb <システムコード>-<環境名>-rtb-{public/dmz/private/tgw}-[連番] sampleapp-prd-rtb-public、sampleapp-prd-rtb-public-001
Internet Gateway igw igw-vpc名 ※VPC名はリソースコード以降を記述 igw-sampleapp-prd、igw-sampleapp-prd-001
NAT Gateway ngw ngw-{public/private}-AZ名-vpc名 ※VPC名はリソースコード以降を記述 ngw-public-1a-sampleapp-prd-001、ngw-private-1a-sampleapp-prd-001
Security Group scg scg-<システムコード>-<環境名>-<役割・用途>-[任意の値]-[連番] scg-sampleapp-prd-web、scg-sampleapp-prd-web-001
Direct Connect Gateway dxgw dxgw-<システムコード>-<環境名>-[任意の値]-[連番] dxgw-sampleapp-prd-tgwconnect-001、dxgw-sampleapp-prd-tgwconnect-001
Direct Connect Connection dxconnecion dxconection-<システムコード>-<環境名>-[任意の値]-[連番] dxconnecion-sampleapp-prd-tgwconnect-001
Direct Connect VIF dxvif dxvif-<キャリア名>-<システムコード>-<環境名>-{public/private/tgw}-[連番] dxvif-os1-sampleapp-prd-tgw-001、dxvif-attokyo-sampleapp-prd-private-001
Transit Gateway tgw tgw-<システムコード>-<環境名>-[任意の値]-[連番] tgw-sampleapp-prd-001、tgw-sampleapp-stg-001
Transit Gateway RouteTable tgw-rtb tgw-rtb-<システムコード>-<環境名>-[任意の値]-[連番] tgw-rtb-sampleapp-prd、tgw-rtb-sampleapp-prd-001
Transit Gateway Attachment tgw-att tgw-att-<システムコード>-<環境名>-[任意の値]-[連番] tgw-att-sampleapp-prd、tgw-att-sampleapp-prd-001
EC2 ec2 ec2-<システムコード>-<環境>-[任意の値]-[連番] ec2-sampleapp-prd-web、ec2-sampleapp-prd-db-001
AMI ami ami-インスタンスID-取得日時(YYYYMMDDhhmm) ami-i-xxxxxxxxxxxxxx-202211301330
EBS ebs ebs-<システムコード>-<環境>-[任意の値] ebs-sampleapp-prd-web-001、ec2-sampleapp-prd-web-002
EBS Snapshot ebs-snapshot ebs-snapshot-ボリュームID-取得日時(YYYYMMDDhhmm) ebs-snapshot-vol-xxxxxxxxxxxxxx-202211301330
ENI eni eni-<システムコード>-<環境>-[任意の値]-[連番] eni-sampleapp-prd-web、eni-sampleapp-prd-db-001
EIP eip eip-<システムコード>-<環境>-[任意の値]-[連番] eip-sampleapp-prd-bastion、eip-sampleapp-prd-nat-001
Key Pair keypair keypair-<システムコード>-<環境名>-[任意の値]-[連番] keypair-sampleapp-prd-bastion、keypair-sampleapp-prd-web-001
IAM User(コンソールログイン用) <社員番号>-メールアドレス xxxx@example.co.jp
IAM User(アクセスキー発行用) secret-<システムコード>-<利用環境>-[任意の値] secret-sampleapp-poc
IAM Group iamgroup iamgroup-<システムコード>-<用途・役割>-[任意の値] iamgroup-sampleapp-maintenance、iamgroup-sampleapp-admin
IAM Role iamrole iamrole-<エンティティタイプ>-<システムコード>-<環境名>-[任意の値] iamrole-custom-sampleapp-prd、iamrole-service-sampleapp-prd-for-ec2
IAM Policy iampolicy iampolicy-<システムコード>-<環境名>-<権限・用途>-[任意の値] iampolicy-sampleapp-prd-DenyCreateInstance
SCP scp scp-<役割・用途> scp-DenyCreateAccessKey、scp-ForceEncryption
OU ou <役割・用途> SSO、Security、LogIntegration
AWS Budgets(スタンドアロン) budgets budgets-<システムコード>-<期間>-[任意の値] budgets-sampleapp-monthly-all-resources
AWS Budgets(Managementアカウント) budgets budgets-{OU/アカウントID}-<期間>-[任意の値] budgets-111122223333-monthly、budgets-SalesOU-monthly
AWS Budgets Reports budgets-report budgets-report-<Budgets名>
※Budgets名にはリソースコードは含めない
budgets-report-sampleapp-monthly-all-resources、budgets-report-111122223333-monthly
Athena(ワークグループ) workgroup workgroup-<データソース>-<クエリ実行したいログ種別>-[任意の値] workgroup-s3-config、workgroup-s3-cloudtrail
KMS kms kms-<AWSサービス名>-[任意の値]-[連番] kms-guardduty、kms-s3-001
Resource Access Manager ram ram-<共有サービス名>-[共有リソース名]-[任意の値]-[連番] ram-tgw
AWS Backup Plan backup-plan backup-plan-<AWSサービス名>-<リソース>-<取得頻度(日)> backup-plan-ec2-AMI-7、backup-plan-ebs-snapshot-1
CloudFormation StackSets cfn cfn-<用途・役割>-[任意の値] cfn-activate-config、cfn-create-basic-config-rules
S3 Bucket s3 s3-<システムコード>-<環境名>-<用途・役割>-アカウントID s3-sampleapp-prd-cloudtrail-111122223333
S3 LifeCycle Rule s3-lifecycle s3-lifecycle-<アクション>-<期限日数>-[任意の値] s3-lifecycle-delete-365、s3-lifecycle-move-365-to-glacier
CloudTrail trail trail-[任意の値]-<用途・役割> trail-audit、trail-sampleapp-s3-dataevent
SNS Topic sns-topic sns-topic-<用途・役割> sns-topic-securityhub-notification
EventBridge Rules event-rules event-rules-<用途・役割> event-rules-securityhub-notification
EventBus eventbus eventbus-<用途・役割> eventbus-custom-app
CloudWatch Logs LogGroup cw-loggroup /aws/[サービス名]/[リソース名]/[ログ種別] /aws/ec2/sampleapp-dev-001/app_log
CloudWatch Logs LogStream cw-logstream /[リソース名]/[パス] /cw-logstream/var/log/messages/
ALB alb alb-<システムコード>-<環境>-[連番] alb-sampleapp-prd、alb-sampleapp-prd-001
ALB Target Group alb-tg alb-tg-<システムコード>-<環境>-<役割>-[連番] alb-tg-sampleapp-prd-web-001、alb-tg-sampleapp-prd-web-002
Config Aggregator config-agr config-agr-<用途・役割> config-agr-org-aggregation、config-agr-regional-aggregation
Config Rules config-rules config-rules-<役割・用途> config-rules-RestrictedSSHRDPPorts、config-rules-required-tags

まとめ

長文でしたがご一読いただき有難うございます。今回はAWSリソースの命名規則について考えてみました。イチから命名規則を考えることは大変だと思いますのでどなたかのお役に立てれば幸いです。

山﨑 翔平 (Shohei Yamasaki) 記事一覧はコチラ

カスタマーサクセス部所属。2019年12月にインフラ未経験で入社し、AWSエンジニアとしてのキャリアを始める。2023 Japan AWS Ambassadors/2023-2024 Japan AWS Top Engineers