[infra]デプロイ済みAWSリソースを全削除して継続課金を停止する
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 25/100
- issue の種類
- リファクタリング
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- aws, github-actions, terraform
- 領域
- cloud, devops, infrastructure
調査の方向性
Start with infra/dev/README.md and infra/bootstrap/README.md, then verify the AWS account, region, backend key, state, and safety gates before any deletion. Review the saved terraform plan and check GitHub OIDC and AWS-specific variables. Done means the Hanasu resources and state bucket are removed, independent checks pass, and later Billing verification shows no new recurring charges.
索引モデルが issue の本文から書いたものです。
説明
種別: 運用作業 — AWS・GitHub上の実環境を変更し、結果をIssueへ記録する。コード変更やPR作成は行わない。
目的
AWSアカウント 926046660554 にデプロイ済みのHanasu dev環境と、そのTerraform state用リソースを廃止し、AWSリソースによる新たな継続課金が発生しない状態にする。
過去利用分の請求とBillingへの反映遅延は残り得るため、「請求額が即時0円になること」ではなく、「課金対象リソースが残らず、削除後に新しい利用料が増えないこと」を完了基準とする。
完了条件
- RDSデータ、最終snapshot、ECR image、CloudWatch Logs、Amplify配備履歴、JWT/AmiVoice/RDSのsecret、Terraform state履歴が復旧不能になることを確認し、実行直前の明示承認をIssueへ記録している
- AWSアカウント
926046660554、リージョンap-northeast-1、backend keyecs/terraform.tfstateのstateとAWS実体を照合し、レビュー済みの保存済みdestroy planだけを適用してinfra/devのstateが空になっている - AWS側の独立監査でHanasu所有の課金対象リソースが残っていない。削除予約中のSecrets Manager secretがある場合は、課金停止状態と完全削除予定日を記録している
- GitHub OIDC providerの他用途からの参照を確認し、Hanasu専用なら削除、共有なら別管理へ移管している。AWSリソース固有のGitHub Actions Variablesも削除または無効化している
- dev環境の削除確認後、versioning済みstate bucketの全object versionとdelete markerを削除してbucket自体を削除し、翌日以降のBilling確認でも新しい継続課金がないことをIssueへ記録している
実行範囲
- 手動デプロイを凍結し、実行中のGitHub Actionsがないことを確認する
- caller identity、リージョン、Terraform state、AWS側リソースを棚卸しする
terraform plan -destroy -out=<一時plan>の対象・件数をレビューし、そのplanだけをapplyする- RDS、ECS/Fargate、ALB、CloudFront、Amplify、ECR、CloudWatch Logs、Secrets Manager、VPC/ENI/Public IPv4/EIP/NAT Gateway/VPC endpoint、IAMをAWS側から再確認する
- GitHub Actions Variablesのうち、削除したAWS環境のARN・app ID・URLを削除または無効化する
- 最後に
hanasu-terraform-state-926046660554の用途と全keyを確認し、全version/delete markerを削除してbucketを削除する - 翌日以降にCost Explorer/Billingを確認し、削除後の新規利用料が発生していないことを記録する
安全ゲート・停止条件
- AWS account、region、backend keyのいずれかが想定と一致しない
- state lock、実行中のdeploy、他作業との競合がある
- stateとAWS実体が一致しない、またはHanasu所有か不明なリソースがある
- RDS等のデータ保持やbackupが必要だが、保存先・保持期間が決まっていない
- GitHub OIDC providerを別IAM roleが参照している
- state bucketに
ecs/terraform.tfstateとlock以外の用途不明なkeyがある - destroy planにHanasu dev環境外または共有リソースが含まれる
上記の場合は削除を開始しない。途中失敗時も -target、terraform state rm、AWSコンソールからの強制削除へ進まず、stateと実体を再照合して判断を仰ぐ。
削除時の注意
aws_db_instance.mainはskip_final_snapshot = trueのため、RDSは最終snapshotなしで削除される- ECRは
force_delete = trueのため、imageを含めて削除される - Secrets Managerは削除予約中に物理的には残る場合があるが、既存の検討記録上は課金対象外。安全のため回復期間は維持し、完全削除予定日を記録する
aws_iam_openid_connect_provider.github_actionsはアカウント内で共有され得るため、外部参照の有無を確認する- state bucketは別stateで
prevent_destroy = true、かつversioning有効。infra/bootstrapのlocal stateが現作業ツリーにないため、dev削除完了後にAWS CLIで全version/delete markerを明示的に削除し、空を確認してからbucketを削除する - stateやplanには秘密値が含まれ得るため、内容をIssueへ貼らない。一時planとログは安全に削除する
やらないこと
- アプリ、Terraform、workflowのコード変更やPR作成
- AWS環境の再apply・再デプロイ
- Hanasu所有と確認できない共有リソースの削除
- state、secret値、認証情報、生のplan/logのIssue添付
- AmiVoice等、Terraform管理外の第三者サービス契約の解約
検証方法
terraform state listが空であること- 上記AWSサービスごとの一覧・describe結果にHanasu所有の課金対象リソースがないこと
- state bucketにobject version/delete markerがなく、bucketが存在しないこと
- GitHub ActionsのAWS固有Variablesが削除または無効化されていること
- 翌日以降のCost Explorer/Billingで、削除後の新しい継続利用料が確認されないこと
検証結果は、実行日時、対象account/region、destroy件数、残存確認結果、Billing確認日時だけをIssueへ記録し、秘密値やstate内容は記載しない。
前提・依存
- 依存Issue: なし
- Issue #111: dev環境の構築・配備記録
- infra/dev 運用手順
- infra/bootstrap 運用手順
- dev環境のdestroyと再apply運用
- AWS: versioning済みS3 objectの完全削除
- AWS Billing User Guide — Cost Explorerの反映には最大24時間かかり得る
対象外だが別途確認すること
AmiVoiceのAPI keyをAWS Secrets Managerから削除しても、AmiVoice側の契約・課金は停止しない。第三者サービスも含めて費用を完全停止する場合は、契約状況を別途確認する。
- 主要言語
- HTML
- スター
- 1
- フォーク
- 0
- 平均マージ
- 1時間 19分
- マージ済み PR(30日)
- 76
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
study-basic-hackathon/hanasu のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
study-basic-hackathon/hanasu#219 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
study-basic-hackathon/hanasu#218 ·
-
種別: 実装
難易度 2/5 半日 初心者へのやさしさ 88/100
study-basic-hackathon/hanasu#211 ·
-
種別: 実装
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
study-basic-hackathon/hanasu#210 ·
-
種別: 実装
難易度 2/5 1〜3時間 初心者へのやさしさ 90/100
study-basic-hackathon/hanasu#207 ·
study-basic-hackathon/hanasu の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
platform-mesh/helm-charts#2521 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
n8n-io/terraform-aws-n8n#147 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
carverauto/serviceradar#4596 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
reflex-dev/reflex#7296 · コメント 1 件 ·