リソース命名規則
本サイトは Classmethod Cloud Guidebook (CCG) のデモサイトです
デモサイトのため、実際の内容と相違がある点にご留意ください。
クラスメソッドメンバーズをご契約中のお客様は下記リンクからアクセスください。
Classmethod Cloud Guidebook
AWSアカウント内で共通のリソース命名規則を定義します。
命名規則に含める要素を洗い出し、その後に要素の順番と連結方法を検討します。
命名規則に含める要素の例として、次の内容があります。
- システム/プロジェクト名
- 環境名(dev/stg/prodなど)
- AWSサービス名
- リージョン名
- ユーザー/チーム/部門名
各要素の順番は次の点を考慮して決定します。
- リソース名でポリシー制限する可能性の高いものを前方にします。
- 例えば、環境単位で操作を制限するポリシーを策定することが多い場合は環境名を先頭にします。
- ただし、環境やシステムはAWSアカウント単位で分割しておくことが望ましいです。
- ソートのキーとなる要素を前方にします。
- 例えば、システム単位でソートすることが多い場合はシステム名を先頭にします。
各要素の連結にはケバブケース(例:aaa-bbb-ccc)を推奨します。
Amazon S3のバケット名には大文字やアンダースコア _
が利用できないためです。
ただし、WebACLはハイフン -
を利用できないなどの例外があります。
また、一部のサービスでは次の考慮も必要となります。
- AP/Web用のインスタンスなど、同じ役割のリソースが複数ある場合は連番を付与を検討します。
001
や1
などの連番を付与します。
- Amazon S3のように「グローバルで一意な命名」が必要なリソースには留意します。
- アカウントIDを付与する方法もあります。しかし、S3バケットの場合は公開することでアカウントIDが外部から見える点に注意が必要です。
- 一部のサービスでは命名規則に制約があります。
- 例えば、AWS WAFのログ転送先として指定するKinesis Data FirehoseやS3バケットのリソース名称は、先頭が「aws-waf-logs-」から始まる必要があります。
リファレンス
DevelopersIO
サンプル - 1
各リソースの命名規則は下表に従うこと。
表に存在しないサービスは可能な限り次の命名とすること。
- 命名規則:{sysname}-{env}-{サービス名}
AWSリソース | 命名規則 | 補足説明 |
---|---|---|
VPC | {sysname}-{env}-vpc | |
Subnet | {sysname}-{env}-{nwlayer}-subnetXX | XXは連番 |
Route Table | {sysname}-{env}-{nlayer}-rtb | |
Internet Gateway | {sysname}-{env}-igw | |
ELB | {sysname}-{env}-alb/nlb | |
Target Group | {sysname}-{env}-tg | |
EC2 | {sysname}-{env}-{type}-XX | XXは連番 |
IAM Role | {sysname}-{env}-{type}-role | |
Security Group | {sysname}-{env}-{type}-sg | |
RDS | {sysname}-{env}-rds | |
S3 | {sysname}-{env}-{use} | 複数のアカウントで同じ名称をつける場合は、グローバルで一意な名称にするためにサフィックスに {accountid} もしくは {random} を付与する。ただし、公開するバケットには {accountid} を付与しないこと |
変数名 | 説明 |
---|---|
sysname | システム名 |
env | dev/stg/prd のいずれか |
nwlayer (network layer) | public/private/protected のいずれか |
type | web/app/db 等のサーバ種別 |
use | 利用目的 |
accountid | 12桁のアカウントID |
random | 8桁の英数字 |