必見の記事

弊社で使っているAWSリソースの命名規則を紹介します

2019.09.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

みなさんこんな画面を見たことありませんか??

このような状態は避けるべきです。理由は以下の通り。

  • 各リソースの役割がわかりにくい
    • オペレーションミスが発生しやすい
    • リソース削除などの判断が難しくなる
  • 単純に見栄えが悪い

そこで今回は弊社が環境を構築する際によく使う命名規則を紹介したいと思います。 新規でリソースを作成する際に参考にしていただけると嬉しいです。

※AWSアカウントでシステムや環境を分離していたとしても、命名規則を守ったほうがリソースの見通しがよくなります。

リソース名から何を知りたいのかを考える

みなさんはリソース名(主にNameタグ)から何を知りたいですか?? 対象のリソースによっても異なりますが、共通で知りたいものは以下になるかと思います。

  • 対象システム
  • 環境(本番、検証、開発)

また、リソースによってはこれ以外に知りたい情報もあるはずです。

  • Subnet、RouteTable
    • ネットワークレイヤー(パブリック、プロテクト、プライベート、など)
  • EC2、IAMRole
    • 種別(アプリケーションサーバー、踏み台サーバー、メールサーバー、など)
  • S3
    • 目的(ログ保管用、静的コンテンツ配信用など)

などなど、リソースによって様々です。

どう表現するのかを考える

ではこの情報をどのように表現すれば良いでしょうか。

一般的な命名規則としては、キャメルケース、スネークケース、ケバブケースなどがありますが、AWSリソースの命名にはケバブケースがおすすめです。
※S3のバケット名に大文字またはアンダースコアを含めることができないため

WebACLにはハイフンを利用できないなどの一部例外もありますが、基本的にはどのリソースもケバブケースで作成することができます。

命名規則表

ということで私がよく使う命名規則はこちらになります。

  • 対象システムの名前(sysname)
    • システムで一意となる識別子(例:xxsystem)
  • 環境(env)
    • 本番、検証、開発など(prod/stg/dev)
  • ネットワークレイヤー(nlayer)
    • パブリック、プロテクト、プライベートなど(public/protected/private)
  • 種別(type)
    • アプリケーションサーバー、踏み台サーバー、メールサーバーなど(app/bastion/mail)
  • 目的(use)
    • ログ保管用、静的コンテンツ配信用など(log/contents)

また、採用する文字は「半角英数字とハイフンなどの一部記号のみ」とすべきです。安易に特殊文字を利用するとプログラムで処理する際に苦しむことになります。

AWSリソース 命名規則 備考
VPC {sysname}-{env}-vpc
Subnet {sysname}-{env}-{nlayer}-subnetXX XXは連番、AZ毎に分ける
RouteTable {sysname}-{env}-{nlayer}-rtb NatGawatayをAZ毎に分ける場合はprotectedのみ連番を付与
InternetGateway {sysname}-{env}-igw
ELB {sysname}-{env}-alb/clb インターナルなELBを作成する場合、役割毎に分ける場合はその部分も考慮
TargetGroup {sysname}-{env}-tg 同上
EC2 {sysname}-{env}-{type}XX
IAMRole {sysname}-{env}-{type}-role
SecurityGroup {sysname}-{env}-{type}-sg
RDS {sysname}-{env}-rds
S3 {sysname}-{env}-{use}-{AccountID} S3のリソースは全体で一意にする必要があるためAWSのアカウント番号を付与

このルールを適用すると。。

かなりスッキリしました。また、このような命名にすることで絞り込みなども容易になります。

おまけ タグの使い方

タグにはNameだけではなく、システム名や環境の情報を登録しておくことをお勧めします。

これにより、EnvSystemNameを指定した柔軟な絞り込みが可能になります。

最後に

リソースの名前を適当に設定してもシステムは動きます。ただし、適当に設定することで不要な作業をする機会が増えてしまいます。みなさんそんな無駄なことしたくないですよね??

ということで今一度リソース名を見直してみませんか??その際に本ブログを参考にしていただければ幸いです。