LoginSignup
1
1

Redshift Serverless トランザクション実行中の課金について

Last updated at Posted at 2023-07-24

Redshift Serverlessを使って気づいたことを書きます。
今回はトランザクションの実行とRPUの挙動についてです。

処理をしていないはずなのに、課金が発生

あるとき何も処理をしていないはずであるにもかかわらず、相当な額の料金が発生していることに気付く。
AWS Budgetsの予算通知ルールを作成していたため、気づくことができた。

料金が発生しているServerlessのメトリクスを確認すると、特に処理をしていないはずの時間帯にRPUがBase Capacityの値で張り付いているという挙動が確認できた。

原因

以下の4つが重なって、Serverless上で"トランザクション"が1週間近く実行されたままだったと推測した。

1.Redshift Serverlessはトランザクション実行中はRPUが使用される。(=料金が発生する)
https://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/serverless-billing.html
2.接続に使っていたツールをauto commit OFFで使っていた。(=selectしただけでトランザクションが開始され、トランザクションはcommit またはrollbackするまでおわらない)
3.ツールを動かしている端末は普段起動したままのPCであり、接続ツールが終了されることがなかった
4.ドキュメント上記載のある、トランザクション制限6時間がきかなかった
https://docs.aws.amazon.com/ja_jp/redshift/latest/mgmt/amazon-redshift-limits.html#serverless-limits-account
image.png

今後のために 

第一に、トランザクションは明示的に終了するガイドするべきと考える。一方操作ミスなども考えられるため、システム側でも何らかの手立てを立てる必要があると考える

要件としては「処理をしていないが、RPUが消費されている状態」を検知できるようなモニタと通知を可能とすること。


まずRedshift Serverlessの機能に「RPUの制限」はあるが、この機能で検知できるのは、総使用RPUであり、必要な処理で消費されたRPUでも検知されてしまうため、要件を満たさない。またAWS Budgetsも同様に必要な処理で発生した料金でも検知されてしまうため、要件を満たさない。

どちらの機能もそれだけでは「処理をしていないが、RPUが消費されている状態」を検知することはできない。
よって、他の手段を検討する必要があると考える。


モニタと通知の検討と実装結果を別記事にて記載する。

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