Terraform CloudのEphemeral workspacesに非アクティブなWorkspaceを自動削除するオプションが追加されました

2024.03.12

昨年8月にTerraform Cloudにリソースの自動削除ができるEphemeral workspaces機能がパブリックベータで追加されました。同年の10月にGAになりました。

従来この機能は、「Stateの更新状況にかかわらず、X時・日後に自動削除(設定時点から、X時・X日後)」をするものでした。

今回、Workspaceが非アクティブ(Stateの更新が無い)状態に削除するオプションが追加されました。

「Stateの更新がなかった場合に、X時・日後に自動削除」 といった設定が可能になりました。

やってみた

自動削除の設定

「検証用Workspace作成」~「リソースの作成」までは冒頭のブログと同様です。

「自動削除の設定」からやっていきます。

Workspaceのサイドバー -> Settings -> Destruction and Deletionを選択します。

Automatically destroyを選択します。

Destroy if inactiveを設定して、時間を設定します。

2024/3時点、削除までの期間を、時間(Hours)/日(Dasy)で指定可能です。(最小は、1時間 最大は、9999日)

指定時間になると、以下のように削除用のrunが行われます。

Stateを更新して、予定削除時刻が変更されることを確認

リソース作成後にリソース(State)を更新して、削除の時間がその時間分後ろ倒しになるか確認してみましょう。

14:56にリソースを作成しました。自動削除は1時間後に設定しています。

削除が実行される日時は、自動削除の設定画面またはOverviewから確認できます。

15:56に削除が行われるのが分かりました。

以下のようにタグの記述を追加して、リソースに適用します。(terraform apply)

この操作は、15:08に行いました。

resource "aws_sqs_queue" "sqs_queue" {
  name = "sato-epehemeral-workspace-test"
+  tags = {
+    Environment = "test"
+  }
}

削除予定の時刻を確認すると「15:56」だったのが、リソース適用の1時間後である「16:08」に変更されていました。想定どおりの動きです。

おわりに

ワークスペースが一定期間非アクティブになった際に削除ができるようになりました。

個人的には、既存のオプションよりこちらを使うことが多そうです。

何日間か検証するケースでは、作成と削除を繰り返すケースがあります。(業務開始時にapply、業務後にdestroyのように)

既存のオプションではワークスペースの状態を考慮してくれないため、日によって時間の設定が必要そうです。(今日は多めに検証できるから、8時間後に削除とか)

今回のオプションを指定することで、日毎の時間を考慮せずに削除の設定ができます。

「Project単位でデフォルト設定できたらより便利だな」と思ったのですが、現時点でできませんでした。今後のアップデートも楽しみですね。

以上、AWS事業本部の佐藤(@chari7311)でした。

参考