OPS

【AWS本気で運用】シナリオごとのリソース命名規則

【AWS本気で運用】シナリオごとのリソース命名規則

2024.07.04

本記事のポイント

AWSを使ったことののある方ならば、リソース名について1度は悩んだことがあるのではないでしょうか?
・検証でEC2を作成する際に名前で悩んでしまう
・アカウント内に作成したリソースが増えてきてどのリソースが何に使われているのかわからない

こういった問題を解決するためにAWS環境におけるリソース命名規則を定めてみてはいかがでしょうか。


AWS環境におけるリソース命名規則とは

AWSをご利用の皆様の中で「リソース名をその都度決めている」や「慣習的な命名規則はあるが文書化されていない」に当てはまる方はいらっしゃるのではないでしょうか。

場合によってはそれぞれの命名により様々なリソース名が混在して見通しが悪くなっていることもあるかもしれません。

そこで今回は、運用が楽になるようなリソース命名規則を紹介したいと思います!AWSの活用事例ごとにシナリオとして分割してご紹介しますので、ご自身の環境に近いものを参考にいただければと思います!

なぜリソース命名規則が必要なのか

まず最初に、なぜリソース命名規則が必要かについて考えていきましょう。リソース命名が主に活用されているのは以下です。
・ Webコンソールなどでリソースを確認する際に一意にリソースを特定するため

大量のリソースがある環境にて検索機能を使ったことがある方も多いのではないでしょうか。適切な検索を行う場合や、表示のソートを効率的に行う場合には統制された命名規則が必要となります。またオペミスを減らす効果も期待できますね。

ただし注意点として、リソース名はユーザに対してルールを強要するのが難しく、命名規則に沿わない命名をされたことに気づくことは難しいです。

そのためリソース命名規則を作成した際には組織内でしっかりと認識を合わせることが求められます。逆に組織全体で統一化されたリソース命名規則を使用していれば、他部署のAWSアカウントなどを見た際にもすぐに構成が理解できるはずです。

AWSが8%OFFになる請求代行

各シナリオについて

リソース命名規則について考えていきたいのですが、ここでこの記事を読んでいただいている皆様に質問です!

全ての方が利用できる万能的なAWSリソース命名規則は存在するでしょうか?

答えはNoです。なぜならリソース名はリソースを環境で一意に特定するためにありますが、その環境がそれぞれ異なっているからです。

今回は、以下の2要素 × 2パターンの4シナリオで考えていきます。

要素1:シングルリージョン/マルチリージョン

単一リージョンでのサービスなのか、複数リージョンにまたがるサービスなのか

要素2:シングルアカウント/マルチアカウント

運用しているAWSアカウントが単一か、それとも複数のAWSアカウントを運用しているか

リソース命名規則

今回、私が紹介するリソース命名規則はより直感的にリソースを理解できるように作成しました。「用途」と記載がある場所にはそのリソースを何に使いたいのか、という内容を記載ください。

例: OPSサービスのWebサイトを稼働させるEC2インスタンスの場合 ops-web-public-ec2

サービス 分類 命名ルール
EC2 インスタンス 〓サービス名〓-〓用途〓-〓(なくてもよい)public/private〓-ec2
AMI 〓サービス名〓-〓用途(ec2インスタンスと揃える)〓-〓年月日 or Version〓-ami
セキュリティグループ 〓サービス名〓-〓用途(ポートやプロトコルなど)〓-sg
ALB 〓サービス名〓-〓用途〓-〓(なくてもよい)public/private〓-alb
NLB 〓サービス名〓-〓用途〓-〓(なくてもよい)public/private〓-nlb
Lambda 関数 〓サービス名〓-〓用途〓-〓(あれば)VPC名〓-lambda
Batch 〓サービス名〓-〓用途〓-
Elastic Beanstalk アプリケーション 〓サービス名〓-eb
環境 〓サービス名〓-〓(なくてもよい)用途〓-〓web/worker〓-〓env〓-eb-work
ECR リポジトリ 〓サービス名〓-〓用途〓-〓public/private〓-ecr
ECS タスク定義 〓サービス名〓-〓用途〓-ecs-task
クラスター 〓サービス名〓-〓用途〓-〓fargate/ec2〓-ecs-cluster
EKS 〓サービス名〓-〓用途〓-
S3 バケット
  • シングルアカウント・シングルリージョン
    〓サービス名〓-〓用途〓-s3

  • シングルアカウント・マルチリージョン
    〓サービス名〓-〓用途〓-〓リージョン〓-s3

  • マルチアカウント・シングルリージョン
    〓サービス名〓-〓用途〓-〓アカウントID〓-s3

  • マルチアカウント・マルチリージョン
    〓サービス名〓-〓用途〓-〓リージョン〓-〓アカウントID〓-s3
  • EFS ファイルシステム 〓サービス名〓-〓用途〓-〓VPC名〓-efs
    Strage Gateway ゲートウェイ 〓サービス名〓-〓用途〓-〓file/fsx/volume/tape〓-〓public/private〓-storage-gw
    AWS Buckup バックアッププラン 〓サービス名〓-〓用途〓-backup-plan
    バックアップルール 〓サービス名〓-〓用途〓-〓バックアップ頻度〓-backup-rule
    リソースの割り当て 〓サービス名〓-〓all/リソース(ec2)〓-〓(なくてもよい)タグ〓-backup-resource
    バックアップボールト 〓サービス名〓-〓用途〓-backup-vault
    RDS データベース 〓サービス名〓-〓用途〓-〓aurora/mysql/maria/postgres/oracle/microsoft〓-rds
    ElasticCache Redis 〓サービス名〓-〓用途〓-redis
    Memcached 〓サービス名〓-〓用途〓-memcached
    DynamoDB テーブル 〓サービス名〓-〓用途〓-dynamo
    VPC VPC 〓サービス名〓-〓public/private〓-vpc
    サブネット 〓サービス名〓-〓用途〓-〓public/private〓-〓az〓-subnet
    ルートテーブル 〓サービス名〓-〓用途〓-〓vpc/subnet〓-table
    NAT Gateway 〓サービス名〓-〓az〓-nat
    インターネットゲートウェイ 〓サービス名〓-igw
    Elastic IP 〓サービス名〓-〓用途〓-〓xxx.xxx.xxx.xxx〓-eip
    セキュリティグループ 〓サービス名〓-〓用途〓-sg
    API Gateway API 〓サービス名〓-〓用途〓-〓http/websocket/rest-public/rest-private〓-apigw
    VPC リンク 〓サービス名〓-〓用途〓-〓(複数のVPCにリンクする場合)VPC名〓-apigw-vpc-link
    Organizations SCP
  • マルチアカウント・シングルリージョン、
    マルチアカウント・マルチリージョン

    〓アタッチするOU名〓-〓(必要なら)用途〓
  • OU 〓OUの特性に適した名称〓
    CloudWatch アラーム 〓サービス名〓-〓アラーム元リソース 例: ec2〓-〓リソースの用途〓-〓metric(mathなら命名する)〓-cw-alarm
    ロググループ 〓サービス名〓-〓ログ出力リソース 例: ec2〓-〓用途〓-loggroup
    CloudFormation スタック 〓サービス名〓-〓用途〓-cfn
  • マルチアカウント・シングルリージョン
    〓サービス名〓-〓用途〓-〓リージョン〓-cfn-stackset

  • マルチアカウント・マルチリージョン
    〓サービス名〓-〓用途〓-〓デプロイ先OU/アカウントID〓-cfn-stackset
  • Config レコーダ config-recorder
    ルール 〓サービス名〓-〓用途〓-〓manage/custom〓-rule
    CloudTrail 証跡 〓サービス名〓-〓用途〓-trail
    IAM IAM ID プロバイダー 〓サービス名〓-〓用途〓-〓ID プロバイダー〓-〓saml/oidc〓-provider
    IAM ポリシー 〓サービス名〓-〓用途〓-policy
    IAM ロール 〓サービス名〓-〓用途〓-role
    IAM ユーザー 〓サービス名〓-〓用途(名前)〓-〓console/accesskey〓-user
    RAM
  • マルチアカウント・シングルリージョン、
    マルチアカウント・マルチリージョン

    〓サービス名〓-〓共有リソース 例: tgw,ec2〓-〓リージョン〓-ram
  • IAM Identity Center グループ
  • マルチアカウント・シングルリージョン、
    マルチアカウント・マルチリージョン

    〓チーム名〓-〓権限〓-ssogroup
  • ユーザ
  • マルチアカウント・シングルリージョン、
    マルチアカウント・マルチリージョン

    〓名前.性 例: taro.yamada〓
  • 許可セット
  • マルチアカウント・シングルリージョン、
    マルチアカウント・マルチリージョン

    〓サービス名〓-〓用途〓-ssops
  • KMS キー 〓サービス名〓-〓用途〓-kms-key
    上記の表には記載のないサービスもあるかと思います。またご自身の環境と合わない命名があるかもしれません。

    そういった部分も含めてご自身の環境に合わせた命名規則を定めていただければと思います。

    全体を通して

    今回は、AWSのリソース命名規則について紹介しました。ちょっとしたルールかもしれませんが命名規則を定めておくと意外と便利に感じることが多いです。

    これを機にAWS環境のリソース命名規則について少しでも考えていただけると嬉しいです。

    また、JIG-SAWからAWSをご契約いただくとAWSの利用料が割引でご利用いただけます。

    利用料の割引だけでなく様々な無料特典もつき、システム構築や監視・運用、セキュリティサポートなど各種オプションサービスもご用意しておりますので、お気軽にご相談ください。

    AWSが8%OFFになる請求代行