[infra]デプロイ済みAWSリソースを全削除して継続課金を停止する
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 25/100
- Issue type
- Refactor
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- aws, github-actions, terraform
- Domain
- cloud, devops, infrastructure
Research direction
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.
Written by the indexing model from the issue text.
Description
種別: 運用作業 — 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側の契約・課金は停止しない。第三者サービスも含めて費用を完全停止する場合は、契約状況を別途確認する。
- Dominant language
- HTML
- Stars
- 1
- Forks
- 0
- Avg merge
- 1h 19m
- Merged PRs (30d)
- 76
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from study-basic-hackathon/hanasu
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
study-basic-hackathon/hanasu#219 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
study-basic-hackathon/hanasu#218 ·
-
種別: 実装
Difficulty 2/5 Half a day Newbie friendliness 88/100
study-basic-hackathon/hanasu#211 ·
-
種別: 実装
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
study-basic-hackathon/hanasu#210 ·
-
種別: 実装
Difficulty 2/5 1-3 hours Newbie friendliness 90/100
study-basic-hackathon/hanasu#207 ·
All issues in study-basic-hackathon/hanasu
Similar issues
-
documentation improve or update documentation priority/low triage
Difficulty 2/5 Half a day Newbie friendliness 86/100
warpdotdev/docs#782 · 1 comment ·
-
Product: Azure Policy :shield: Topic: Diagnostic Settings :test_tube: Topic: Policy :pencil:
Difficulty 1/5 1-3 hours Newbie friendliness 92/100
Azure/Azure-Landing-Zones#4283 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
google-gemma/gemma-skills#11 ·
-
feature
Difficulty 2/5 1-3 hours Newbie friendliness 72/100