Skip to content

Conversation

@ShotaKitazawa
Copy link
Member

@ShotaKitazawa ShotaKitazawa marked this pull request as ready for review November 1, 2025 00:04
@jacopen
Copy link
Contributor

jacopen commented Nov 3, 2025

@claude AWS ProviderとVPC Moduleのバージョンを上げています。
Breaking changesを中心にチェックし、マージして問題ないか確認してください

@claude
Copy link

claude bot commented Nov 3, 2025

Claude finished @jacopen's task —— View job


AWS Provider & VPC Module Version Upgrade Review

タスクリスト

  • 変更されたTerraformバージョン情報を確認
  • AWS Providerのバージョン変更を特定
  • VPC Moduleのバージョン変更を特定
  • Breaking changesへの対応を確認
  • 各環境(dev/stg/prod)の変更を比較
  • レビューフィードバックを提供

📊 バージョン変更の概要

AWS Provider: ~> 4.05.100.0 (メジャーバージョンアップ)
VPC Module: 3.19.04.0.2 (メジャーバージョンアップ)


✅ 対応済みのBreaking Changes

1. IAM Role の inline_policymanaged_policy_arns の分離

AWS Provider v5.0で導入された主要なbreaking changeに正しく対応しています。

変更内容 (dreamkast_infra/*/ecs.tf):

  • aws_iam_role リソース内の inline_policy → 独立した aws_iam_role_policy リソースへ分離
  • aws_iam_role リソース内の managed_policy_arns → 独立した aws_iam_role_policy_attachment リソースへ分離

影響範囲:

  • task-execution-role (3つのinline policy + 1つのmanaged policy)
  • ecs-scheduled-task-target-role (1つのmanaged policy)
  • ecs-dreamkast (複数のmanaged policy + inline policies)

評価: ✅ 適切に対応されています。これによりTerraformの状態管理がより明確になり、ドリフト検出が改善されます。

2. Security Group の protocol 値の変更

変更内容 (dreamkast_infra/dev/alb.tf, dreamkast_infra/dev/vpc.tf):

# Before
protocol = "all"

# After  
protocol = "-1"

評価: ✅ AWS Provider v5.0では "all" が非推奨となり、"-1" の使用が推奨されています。正しく対応されています。

3. S3 Lifecycle Configuration の構造変更

変更内容 (dreamkast_infra/dev/s3.tf):

# Before: 複数のaws_s3_bucket_lifecycle_configuration リソース (for_each使用)
resource "aws_s3_bucket_lifecycle_configuration" "bucket_lifecycle" {
  for_each = toset(local.dev_s3_paths)
  # ...
}

# After: 単一リソース内でdynamic block使用
resource "aws_s3_bucket_lifecycle_configuration" "bucket_lifecycle" {
  bucket = aws_s3_bucket.bucket.id
  dynamic "rule" {
    for_each = local.dev_s3_paths
    # ...
  }
}

理由: コミットメッセージ「stop declaring multiple aws_s3_bucket_lifecycle_configuration resources」の通り、1つのS3バケットに対して複数の aws_s3_bucket_lifecycle_configuration リソースを宣言することが非推奨になりました。

評価: ✅ 正しく対応されています。

4. S3 Lifecycle Rule の filter 必須化

変更内容 (dreamkast_infra/stg/s3.tf):

rule {
  id     = "ArchiveObjectRule"
  status = "Enabled"
  
  filter {}  # 追加: 空のfilterブロック
  expiration {
    expired_object_delete_marker = true
  }
}

評価: ✅ AWS Provider v5.0では filter ブロックが必須になりました。空のfilterを適切に追加しています。

5. VPC Module v4.0の新しいデフォルト値への対応

変更内容 (dreamkast_infra/*/vpc.tf):

# 明示的に追加された設定
map_public_ip_on_launch       = true
manage_default_network_acl    = false
manage_default_route_table    = false
manage_default_security_group = false

評価: ✅ VPC Module v4.0ではこれらの設定のデフォルト値が変更されました。既存の動作を維持するために明示的に設定されています。


🔍 検証が必要な点

1. 環境間の一貫性について

現在、prodとdevでVPC Moduleのバージョンアップが適用されていますが、stg環境では .terraform.lock.hcl のみが更新され、vpc.tf は更新されていません。

確認事項:

  • stg環境のvpc.tfもdev/prodと同様に更新する必要があるか確認してください
  • もし意図的な場合は問題ありません

2. terraform plan の実行結果

このPRではリソースの再作成を伴わない変更を目指していると思われますが、以下を確認することを推奨します:

# 各環境でplanを実行し、意図しないリソースの削除・再作成がないことを確認
terraform plan

特に以下のリソースについて、変更がないことを確認してください:

  • IAM Role (リソース名の変更により再作成される可能性)
  • VPC関連リソース
  • ECS関連リソース

📝 マージ判断

✅ マージして問題ない理由:

  1. Breaking Changesへの対応が適切: AWS Provider v5.0とVPC Module v4.0の主要なbreaking changesに正しく対応しています
  2. 構造的な改善: IAMポリシーの管理がより明確になり、保守性が向上しています
  3. 警告への対応: コミットメッセージから、Terraform実行時の警告メッセージに対処していることが分かります
  4. 一貫性: dev/prod環境で同様の変更が適用されています

⚠️ マージ前の推奨事項:

  1. terraform plan の確認: 各環境 (dev/stg/prod) で terraform plan を実行し、意図しないリソース変更がないことを確認
  2. stg環境のvpc.tf: 必要に応じてstg環境も同様に更新
  3. 段階的な適用: 可能であれば、dev → stg → prod の順で適用することを推奨

🎯 結論

Breaking changesへの対応は適切に行われており、コードレビューの観点ではマージして問題ありません。 ただし、実際のインフラへの影響を確認するため、マージ前に必ず terraform plan を実行して、意図しないリソースの変更がないことを確認してください。


Copy link
Contributor

@jacopen jacopen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Claude Codeにstg環境のことを聞かれているけど、stg/devはvpcにおいては同一なので問題なしと判断。なのでマージします

@jacopen jacopen merged commit 4ee9c07 into main Nov 3, 2025
15 checks passed
@jacopen jacopen deleted the bump-version_prod branch November 3, 2025 12:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants