0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的備忘録:AWS Secrets Managerで「シークレットが削除予定」のエラーを解決する方法を紹介してみた

Last updated at Posted at 2025-02-06

はじめに

AWS Secrets Manager を使用して RDS のパスワードを管理している際に、「シークレットが削除予定のため作成できない」というエラーに遭遇しました。

これは Secrets Manager の仕様によるものですが、削除を強制的に実行する方法や、別名で作成する回避策があります。

本記事では、エラーの原因と解決策について解説します。

書こうと思ったきっかけ

Terraform を使ってインフラを構築する際に、RDS のシークレットが作成できないエラーに直面しました。

調査すると、Secrets Manager には削除保留期間があるため、同じ名前のシークレットをすぐに作成できないことがわかりました。

コンソール上で削除されたと思っていたシークレットが、実は復旧期間中だったため、同様の問題を避けるために情報をまとめました。

発生していたエラー

Error: creating Secrets Manager Secret (rds_password): operation error Secrets Manager: CreateSecret, https response error StatusCode: 400, RequestID: bc3c46c7-3650-4b61-bda9-0d2431cc35ee, InvalidRequestException: You can't create this secret because a secret with this name is already scheduled for deletion.

  on main.tf line 466, in resource "aws_secretsmanager_secret" "rds_password":
 466: resource "aws_secretsmanager_secret" "rds_password" {

このエラーの原因は、同じ名前のシークレットが既に削除予定状態になっているため、新しく作成できないこと です。

AWS Secrets Manager では、シークレットを削除する際に 一定の待機期間(デフォルトは 7 日間、最大 30 日) があり、その間は同じ名前のシークレットを作成できません。

AWS Secrets Manager における削除の仕組み

シークレットが持つ重要な特性から、AWS Secrets Manager では、シークレットの削除を故意に困難にしています。Secrets Manager は、シークレットをすぐには削除しません。Secrets Manager は、シークレットをすぐにアクセス不能にし、最短で 7 日間の復旧期間が経過した後に削除されるようスケジュールを設定します。復旧期間が終了するまで、以前に削除したシークレットを復旧することができます。
引用:https://docs.aws.amazon.com/ja_jp/secretsmanager/latest/userguide/manage_delete-secret.html

この仕様のため、Terraform などで同じ名前のシークレットを作成しようとすると、上記のエラーが発生する可能性があります。

実態を確認してみた

AWS Secrets Manager のコンソールでは、デフォルトの設定では 削除が保留されているシークレットは表示されません。

削除が保留されているシークレットを一覧に表示するには、以下の手順でコンソールの設定を変更してください。

  1. Secrets Manager のコンソールを開きます。

  2. 画面右側の歯車アイコンをクリックし、削除予定にチェックを入れます。

Screenshot 2025-02-06 at 17.52.23.png

エラーを解消してシークレットを再作成する方法

エラーを解消し、すぐにシークレットを再作成したい場合は、復旧期間を待たずにシークレットを完全に削除 することができます。

この操作は AWS CLI を使用して実行可能です。

Screenshot 2025-02-06 at 17.57.07.png

削除を強制する

以下のコマンドを実行すると、削除の待機期間なしで 即時削除 されます。

aws secretsmanager delete-secret --secret-id 削除したいシークレット --force-delete-without-recovery

実行時の注意点

  • この操作を実行すると、シークレットを元に戻すことはできません。
  • --force-delete-without-recovery オプションを使用すると、復旧期間なしで即時削除されます。

別の名前で Secret を作成する方法

もし rds_password を完全に削除せず、エラーを回避したい場合は、Terraform のコードを修正し、別の名前で Secret を作成する方法 もあります。

Terraform のコードを以下のように変更すると、新しいシークレットを作成できます。

resource "aws_secretsmanager_secret" "rds_password_v2" {
  name = "rds_password_v2"
}

この方法なら、既存の rds_password に影響を与えず、新しいシークレットとして管理 できます。

まとめ

Secrets Manager では、シークレット削除後に一定の復旧期間があり、その間は同じ名前で新たに作成できません。

エラーを解消するには、CLI で強制削除するか、別の名前でシークレットを作成する方法があります。

Terraform での運用時には、削除の仕様を考慮し、適切な対応を行うことが重要です。

参考文献

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?