Phase 1 Sprint 0 Infra-2: 共有 state backend(S3 + use_lockfile)構築 + bootstrap 手順
概要
ADR-0004(platform/tasks 分離)+ Terraform 1.11 前提で state backend を確定。ロックは use_lockfile(S3 ネイティブ)で DynamoDB は不採用。S3 bucket は中立名 dgz48-tfstate 1 個に platform/tasks の 2 key を集約。初回のみ admin creds で手元から S3 bucket を手動 bootstrap(chicken-and-egg 回避)。
確定仕様は本 Issue コメント「Bootstrap 確定(2026-06-04)」が正本。詳細: docs/architecture/infrastructure-plan.md §6.1 / infra/docs/bootstrap.md。
構成(確定)
- S3 バケット 1 個のみ:
dgz48-tfstate(複数 project 共用の中立名、グローバル一意)。DynamoDB テーブルは作らない。
- ロック:
use_lockfile = true(S3 ネイティブ、Terraform 1.11 GA)。key 単位 lock で platform/tasks 衝突なし。
- バケット設定: versioning ON / SSE-S3(AES256, BucketKey ON) / public access 全ブロック。
- key:
platform/dev/terraform.tfstate / tasks/dev/terraform.tfstate(将来 <proj>/<env>/...)。
versions.tf: required_version >= 1.11。
実装内容
A. 初回 bootstrap(admin creds で 1 回だけ、手元実行)
infra/docs/bootstrap.md の aws s3api 4 コマンドで dgz48-tfstate を作成。確定前提「手元 apply しない」の唯一の例外。
B. backend.tf / versions.tf(各 root)
infra/shared/environments/dev/{backend.tf,versions.tf}(platform、key=platform/dev)
infra/environments/dev/{backend.tf,versions.tf}(tasks、key=tasks/dev)
C. bootstrap 手順 doc
D. 既存 doc 追従
- ADR-0002 §C/§E/§6(DynamoDB→use_lockfile、
required_version >= 1.11)
- infra-plan §6.1 表 / 開発計画書 IaC 行
受入条件
関連
Phase 1 Sprint 0 Infra-2: 共有 state backend(S3 + use_lockfile)構築 + bootstrap 手順
概要
ADR-0004(platform/tasks 分離)+ Terraform 1.11 前提で state backend を確定。ロックは
use_lockfile(S3 ネイティブ)で DynamoDB は不採用。S3 bucket は中立名dgz48-tfstate1 個に platform/tasks の 2 key を集約。初回のみ admin creds で手元から S3 bucket を手動 bootstrap(chicken-and-egg 回避)。確定仕様は本 Issue コメント「Bootstrap 確定(2026-06-04)」が正本。詳細:
docs/architecture/infrastructure-plan.md§6.1 /infra/docs/bootstrap.md。構成(確定)
dgz48-tfstate(複数 project 共用の中立名、グローバル一意)。DynamoDB テーブルは作らない。use_lockfile = true(S3 ネイティブ、Terraform 1.11 GA)。key 単位 lock で platform/tasks 衝突なし。platform/dev/terraform.tfstate/tasks/dev/terraform.tfstate(将来<proj>/<env>/...)。versions.tf:required_version >= 1.11。実装内容
A. 初回 bootstrap(admin creds で 1 回だけ、手元実行)
infra/docs/bootstrap.mdのaws s3api4 コマンドでdgz48-tfstateを作成。確定前提「手元 apply しない」の唯一の例外。B. backend.tf / versions.tf(各 root)
infra/shared/environments/dev/{backend.tf,versions.tf}(platform、key=platform/dev)infra/environments/dev/{backend.tf,versions.tf}(tasks、key=tasks/dev)C. bootstrap 手順 doc
infra/docs/bootstrap.mdD. 既存 doc 追従
required_version >= 1.11)受入条件
dgz48-tfstate存在(bootstrap 済)infra/shared/environments/devとinfra/environments/devでterraform init成功infra/docs/bootstrap.md記載関連