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

Redshiftのコスト削減!使わないときは一時停止しよう!

Last updated at Posted at 2025-02-09

はじめに

本記事は、検証用に構築したRedshiftクラスターを定期的に一時停止してコスト削減を図るために実施した内容のアウトプットになります。

背景として、Redshiftクラスターを起動した後に一時停止するのを忘れてしまうので一時停止を自動化させたいという目的があります。

構成図

かなりシンプルな構成です。
Amazon EventBridge Schedulerを利用してRedshiftクラスターを一時停止させます。

構成図.png

なぜRedshiftの機能で一時停止しないのか

Redshiftのスケジュールされた一時停止は、再開も設定する必要があります。
今回は検証で必要になったときだけ起動したく、定期的に再開させる必要はないので、EventBridgeを利用して一時停止のみを行います。

手順まとめ

  • ①Redshiftクラスターを作成
  • ②EventBridge用のIAMポリシーを作成
  • ③EventBridge用のIAMロールを作成
  • ④EventBridgeのスケジュールを作成

手順詳細

①Redshiftクラスターを作成

手順は割愛します。
自由な名称でRedshiftクラスターを作成してください。
注意点として、自動スナップショットの作成が無効化されているRedshiftクラスターは一時停止できないため、一時停止が必要な場合は自動スナップショット保持期間を1以上にしておいてください。
クラスター作成後でも、メンテナンス設定で変更することができます。

クラスターの作成が完了したら、クラスター名を控えておきます。
スクリーンショット 2025-02-06 105053.png

②EventBridge用のIAMポリシーを作成

まずは以下の通り、EventBridgeにアタッチするロール用のIAMポリシーを作成します。
Redshiftを一時停止する際は、Reshift:PauseClusterというアクションの許可が必要になります。

{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Sid": "RedshiftPauseScheduler",
			"Effect": "Allow",
			"Action": [
				"redshift:PauseCluster"
			],
			"Resource": [
				"*"
			]
		}
	]
}

③EventBridge用のIAMロールを作成

次にEventBridge Schedulerで指定するロールの作成を行います。
まず、今回作成するロールはEventBridge Schedulerが利用するものなので、信頼されたエンティティにEventBridge Schedulerを登録する必要があります。

IAMロールの作成画面でカスタム信頼ポリシーを選択して、PrincipalにEventBridge Schedulerのサービスを指定します。
image.png

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "RedshiftScheduler",
            "Effect": "Allow",
            "Principal": {
                "Service": "scheduler.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

次にIAMポリシーをアタッチします。
先ほど作成したカスタマー管理ポリシーを指定します。
image.png

これでEventBridge用のIAMロールの作成は完了しました。

④EventBridgeのスケジュールを作成

EventBridgeのスケジュールを作成する画面で、スケジュールを追加していきます。

今回は、定期的に実行したいので定期的なスケジュールからcronベースのスケジュールを利用します。
スケジュールは自分がクラスターを起動して、作業を終えそうな時間に動くようにしてください。
今回はテストなので適当なスケジュールにしておきます。
フレックスタイムウィンドウは今回特にしないのでここも適当な時間にしておきます。
スクリーンショット 2025-02-06 105158.png
スクリーンショット 2025-02-06 105240.png
スクリーンショット 2025-02-06 105224.png

cronの記載方法は以下を参考にしてください。

次に時間枠を指定します。
このスケジューラが何時から何時まで動くかを設定します。
スクリーンショット 2025-02-06 105307.png

次は、実行するAPIの選択です。
今回はRedshiftのPauseClusterを実行するので探していきます。
image.png
image.png

PauseClusterを選択すると、JSONエディターが表示されます。
①で作成したRedshiftクラスターの名前をClusterIdentifierに指定します。
image.png

そのあとはスケジュールの細かな部分を設定していきます。
スケジュール完了後のアクションはお好みでOKです。
予定されたスケジュールがすべて実行されるとスケジュールが消えてしまうので、使いまわす予定があればNONEをおすすめします。
image.png

再試行もお好みですが、Redshiftクラスターを停止し続けていることもあるため、
API実行が失敗して何度も実行されるのは嫌なので再試行はオフにしておきます。
image.png

アクセス許可には、先ほど作成したIAMロールを設定します。
image.png

これで、Redshiftクラスターを一時停止するEventBridge Schedulerの作成は完了です。

しばらくするとRedshiftクラスターが停止されました。
スクリーンショット 2025-02-06 125112.png

おわりに

今回はコスト削減を目的にRedshiftの一時停止を自動化してみました。
本エントリがどなたかの参考になれば幸いです。

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