0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS CDK】S3バケットの自動命名の仕組みを整理する

0
Last updated at Posted at 2026-04-23

AWS CDKでS3バケットを作成する際、bucketName を指定するかどうかで挙動が変わります。
特にチーム開発では「自動命名に任せるべきか?」で悩むことが多いため、仕組みと実務判断を整理します。


結論

new s3.Bucket(this, 'HogeBucket')

👉 bucketName を指定しない場合
CloudFormationが一意な名前を自動生成する


全体の流れ

CDKの自動命名は以下の流れで決まります。

CDKコード
↓
Construct ID(開発者が指定)
↓
Logical ID(CloudFormation用)
↓
Physical Name(実際のリソース名)

① Construct ID(開発者が書く)

new s3.Bucket(this, 'HogeBucket')
  • 'HogeBucket'論理的な名前
  • AWS上の実際のバケット名ではない

② Logical ID(CDKが生成)

CDKは構造(パス)からIDを生成します。

例:

Stack
 └ Storage
     └ HogeBucket

生成される例:

StorageHogeBucketA1B2C3D4
  • ハッシュが付く
  • CloudFormation内部用

③ Physical Name(実際のバケット名)

最終的にCloudFormationが生成します。

例:

infrastack-storagehogebucketa1b2c3d4-xyz123

構成:

Stack名 + Resource名 + 一意サフィックス

👉 AWS全体で一意になるように自動調整される


なぜ自動命名が推奨されるのか

❌ 固定名を指定する場合

bucketName: 'hoge'

問題:

  • S3はグローバルで一意が必要
  • 既に存在するとデプロイ失敗
  • リソース置換時に衝突する

⭕ 自動命名の場合

bucketName を書かない

メリット:

  • 一意性をAWSが保証
  • デプロイが安定する
  • rollbackしやすい
  • 環境複製(dev/stg/prod)が簡単

実務での判断基準

自動命名を使うべきケース

  • 内部処理用バケット
  • Lambdaやバッチ処理用
  • 環境ごとに複製する構成

👉 基本はこちらが推奨


固定名を使うケース

  • 外部システムから直接参照される
  • DNS的な意味を持つ
  • 明示的な命名規則が必要

👉 ただし慎重に設計する


CDKで名前を使う方法

自動命名でも、コードから名前は取得できます。

bucket.bucketName

よくある使い方:

environment: {
  BUCKET_NAME: bucket.bucketName
}

👉 Lambdaに渡して利用


よくある勘違い

❌ 「CDKが名前を決めている」

👉 正確には CloudFormationが決めている


❌ 「既存実装に合わせれば正しい」

👉 既存コードが間違っているケースも多い


今回の学び(重要)

  • 命名は「横並び」で見るべき
  • 既存実装を鵜呑みにしない
  • CDKは「書かない方が正しい」ことがある

まとめ

👉 CDKは論理名を定義し、実際のリソース名はCloudFormationが自動生成する

👉 基本は自動命名を使うのが安全で実務的


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?