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?

TerraformでRDSが作れない。原因は無料利用枠の上限だった話

0
Posted at

はじめに

Terraform で RDS を作ろうとして terraform apply したら、いきなり止まりました。

ネットワークやサブネットグループまでは作成されたのに、RDS 本体だけがエラーです。

Error: creating RDS DB Instance: ... InstanceQuotaExceeded:
You reached the maximum number of instances available with free plan accounts.

最初は自分のコードを疑いましたが、原因は別のところにありました。

犯人は、前に作って消し忘れていた“別の RDS”でした😅

環境

  • Terraform(AWS プロバイダ 5 系)
  • Amazon RDS(MySQL・db.t3.micro
  • 無料利用枠の範囲で使っている AWS アカウント
  • リージョン: ap-northeast-1(東京)

起きたこと

terraform apply を実行すると、DB サブネットグループは作成され、その直後に RDS 本体でエラーになりました。

module.database.aws_db_subnet_group.this: Creation complete
module.database.aws_db_instance.this: Creating...
Error: creating RDS DB Instance (myapp-rds): InstanceQuotaExceeded:
You reached the maximum number of instances available with free plan accounts.

文法エラーではなく、「これ以上 RDS を作れません」という制限のようでした。

原因

最初は Terraform の書き方や、サブネットグループの設定を疑っていました。でも、エラー名 InstanceQuotaExceeded を見て、クォータ(作れる数)の制限だと気づきました。

無料利用枠の範囲で使っているアカウントでは、作成できる RDS インスタンスの数に制限があります。私の場合は、すでに存在していた別の RDS が、その枠を使い切っていました。

既存の RDS を棚卸ししてみると、確かに残っていました。

aws rds describe-db-instances \
  --query "DBInstances[].{ID:DBInstanceIdentifier,Status:DBInstanceStatus}" \
  --output table --region ap-northeast-1

過去の学習で作ったまま消し忘れていた RDS が居座っていて、新しい RDS の枠が無い、という状態でした。

対処

不要だった古い方(別の方法で作っていた学習用スタック)を片付けて、枠を空けました。私の場合はスタックごと削除しました。

aws cloudformation delete-stack --stack-name old-study-stack --region ap-northeast-1

RDS の削除には数分かかるので、消えるのを待ってから確認します。

aws rds describe-db-instances \
  --query "DBInstances[].DBInstanceIdentifier" --output table --region ap-northeast-1
# 古い RDS が一覧から消えたら、枠が空いた合図

枠が空いたあと、もう一度 terraform apply すると、今度は RDS が作成できました。サブネットグループは前回作成済みだったので、本体だけが追加されました。

※ 削除するリソースを間違えないよう、名前をよく確認してから消してください。動かしている他の環境の DB は触らないように。

学び

  • 無料利用枠で使っているアカウントは、リソースの「数」に制限があることがある。terraform apply でも容赦なく止まる。
  • 自分のコードを疑う前に、エラー名(InstanceQuotaExceeded)で検索すると早い。AWS のエラーは名前が具体的なので手がかりになる。
  • 作る前に describe-db-instances棚卸ししておくと、枠切れに気づきやすい。
  • 学習で作ったリソースはこまめに片付ける。消し忘れが次の作業をブロックする。

おわりに

「コードは正しいのに作れない」ときは、過去の自分が残したリソースを疑うと早いかもしれません😅 同じ無料利用枠で詰まった人の参考になれば嬉しいです🙌

参考

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?