Amazon Redshift Serverless での請求 - Amazon Redshift

Amazon Redshift Serverless での請求

以下のセクションでは、Amazon Redshift Serverless の請求の仕組みについて詳しく説明します。料金の詳細については、「Amazon Redshift の料金」を参照してください。

コンピューティング性能に対する請求

基本容量と課金への影響

クエリを実行すると、所定の期間に使用された容量に基づいて、秒単位の RPU 時間で請求されます。クエリが実行されていない場合、コンピューティング容量に対して請求されません。Redshift Managed Storage (RMS) についても、保存されているデータ量に基づいて課金されます。

ワークグループを作成するときに、コンピューティングの基本容量を設定するオプションを使用できます。ワークグループレベルでワークロードの料金/パフォーマンス要件を満たすには、既存のワークグループの基本容量を増減して調整します。コンソールを使用して基本容量を変更するには、[ワークグループの設定] からワークグループを選択し、[制限] タブを選択します。

クエリ数が増えると、Amazon Redshift Serverless は自動的にスケールして一貫したパフォーマンスを保持します。

最大 RPU 時間の使用制限

Amazon Redshift Serverless のコストを予測できるようにしておくには、1 日、週、または月ごとに使用される [Maximum RPU hours] (RPU の最大時間) を設定します。これは、コンソールまたは API を使用して設定できます。制限に達した場合、ログエントリをシステムテーブルに書き込むか、アラートを受信するか、またはユーザークエリを無効にすることを指定できます。RPU の最大時間を設定すると、コストを管理することができます。RPU の最大時間の設定は、データウェアハウス内のデータにアクセスするクエリと、Amazon S3 内の外部テーブルなどの外部データにアクセスするクエリの両方について、ワークグループに適用されます。

以下に例を示します。

1 週間につき 100 時間の制限を設定すると仮定します。コンソールでこれを行うには、次の手順を実行します。

  1. ワークグループを選択して、[制限] タブの [使用制限を管理] をクリックします。

  2. 使用制限を追加して、[毎週] の頻度、[100] 時間の期間、アクションは [ユーザークエリを無効にする]] と選択します。

この例では、1 週間で 100 RPU 時間の制限に達すると、クエリは無効になります。

ワークグループに対して最大 RPU 時間を設定しても、ワークグループのパフォーマンスやコンピューティングリソースは制限されません。この設定は、クエリ処理への影響なしにいつでも調整できます。最大 RPU 時間を設定する目的は、コストとパフォーマンスの要件を満たすことです。サーバーレス料金の詳細については、Amazon Redshift の料金を参照してください。

Amazon Redshift Serverless のコストを予測可能な状態に維持するもう 1 つの方法には、AWS コスト異常検出を使用して、予期しない請求の発生可能性を低減し、コスト管理を向上することがあります。

注記

Amazon Redshift 料金計算ツールは料金の見積もりに役立ちます。必要なコンピューティングリソースを入力すると、コストのプレビューが表示されます。

コンピューティングリソースのコスト管理のための最大容量の設定

最大容量設定は、Amazon Redshift Serverless がスケールアップできる RPU の上限として機能します。これにより、コンピュートリソースのコスト制御につながります。ベース容量で利用可能なコンピューティングリソースの最小量を設定するのと同様に、最大容量で RPU 使用量の上限を設定します。これは、計画に沿った支出につながります。最大容量は各ワークグループ個別に適用され、コンピューティングの使用状況は常に制限されます。

最大容量と RPU 時間の使用制限との違い

最大 RPU 時間制限と最大容量を設定する目的は、ともにコスト管理にあります。ただし、実現方法は異なります。違いは次の点で説明されるとおりです。

  • 最大容量 – 最大容量の設定は、Amazon Redshift Serverless がスケーリングに使用する RPU の最大数を指定します。コンピューティングのオートスケーリングが必要な場合、最大容量の値を高く指定すると、クエリのスループットが向上します。最大容量の上限に達すると、ワークグループはそれ以上のリソースのスケールアップを行いません。

  • 最大 RPU 時間使用制限 – 最大容量とは異なり、この設定ではキャパシティの上限は設定されません。ただし、コスト抑制につながるその他のアクションが実行されます。ログへのエントリの追加、ユーザーへの通知、クエリの実行の停止などを選択できます。

最大容量のみを使用することも、最大 RPU 時間使用制限を超過した場合のアクションでこれを補完することもできます。

最大容量のユースケース

ワークグループごとに最大容量の設定が異なる場合があります。これにより、予算要件の強制に役立ちます。この仕組みを説明するために、次を想定します。

  • ベース容量が 256 RPU に設定されたワークグループがあります。毎月のほとんどの期間、ワークロードは 256 RPU をわずかに超える安定した状態にあります。

  • 最大容量は 512 RPU に設定されています。

アドホックな統計レポートを生成するために、3 日間にわたり、予想外に使用率が高くなったと仮定します。この場合、512 RPU を超えるコンピューティングコストを回避するために最大容量を設定しています。これにより、確実にコンピューティング容量がこの上限を超えないようにすることができます。

最大容量の使用に関する注意事項

最大容量を適切に設定するうえで、次の注意事項が役立ちます。

  • Amazon Redshift Serverless ワークグループごとに異なる最大容量を設定できます。

  • リソース使用率が非常に高い期間があり、最大容量が低い RPU レベルで設定されている場合、ワークロードの処理に遅延が発生し、最適なユーザーエクスペリエンスが得られない可能性があります。

  • 最大容量を設定しても、RPU の使用率が高い場合のクエリの実行が妨げられることはありません。最大容量を設定しても、クエリの実行を停止する可能性がある使用制限のようには機能しません。最大容量を設定すると、該当のワークグループが使用できるコンピュートリソースのみが制限されます。一定期間に使用された容量は、Amazon Redshift Serverless ダッシュボードで確認できます。概要データの確認の詳細については、「ダッシュボードを使用して Amazon Redshift Serverless 概要データをチェックする」を参照してください。

  • 最大容量の設定の上限は 5632 RPU です。

最大容量の設定方法

最大容量は、コンソールで設定できます。既存のワークグループについては、[ワークグループの設定] で設定を変更できます。CLI を使用して、次のサンプルのようなコマンドを使用して設定することもできます。

aws redshift-serverless update-workgroup --workgroup-name myworkgroup --max-capacity 512

これにより、指定した名前のワークグループの最大容量設定を指定できます。設定を完了したら、コンソールで値を調べて検証できます。値は、CLI を使用して get-workgroup コマンドを実行しても確認できます。

最大容量設定を次のとおり -1 に指定すると、無効にできます。

aws redshift-serverless update-workgroup --workgroup-name myworkgroup --max-capacity -1

Amazon Redshift Serverless の使用状況とコストのモニタリング

Amazon Redshift Serverless の使用量と請求額を見積もるには、複数の方法があります。システムビューは、クエリのための設定を特にしなくても、クエリデータや使用状況のデータなどのシステムメタデータがタイムリーに表示できます。CloudWatch は、Amazon Redshift Serverless の使用状況のモニタリングにも活用でき、インサイトを提供し、アクションを設定するための追加機能も搭載されています。

システムビューのクエリによる使用状況の可視化

SYS_SERVERLESS_USAGE システムテーブルをクエリして使用状況を追跡し、クエリの料金を取得します。

select trunc(start_time) "Day", (sum(charged_seconds)/3600::double precision) * <Price for 1 RPU> as cost_incurred from sys_serverless_usage group by 1 order by 1

このクエリでは、Amazon Redshift Serverless で発生する 1 日あたりのコストを使用状況に基づいて提供します。

使用量とコストを決定するための使用に関する注意事項
  • 実行するワークロードに対して秒単位の RPU 時間 (60 秒の最低料金) で課金されます。

  • sys_serverless_usage システムテーブルのレコードには、1 分間隔で発生したコストが表示されます。以下の列について理解することが重要です。

    charged_seconds 列:

    • 時間間隔中に課金されたコンピュートユニット (RPU) 秒が提供されます。結果には、Amazon Redshift Serverless の最低料金が含まれます。

    • トランザクション完了後の compute-resource の使用量に関する情報があります。したがって、トランザクションが完了していない場合、この列の値は 0 になります。

    compute_seconds 列:

    • コンピューティングの使用状況情報をリアルタイムで提供します。Amazon Redshift Serverless の最低料金は含まれていません。そのため、インターバル中に請求される請求秒数とはある程度異なる場合があります。

    • (トランザクションが終了していない場合でも) 各トランザクション中の使用状況情報を表示するため、提供されるデータはリアルタイムで表示されます。

  • compute_seconds が 0 であるが charged_seconds が 0 より大きい場合も、その逆の場合もあります。これはシステムビューでのデータの記録方法によって生じる通常の動作です。サーバーレスの使用状況の詳細をより正確に表すには、SYS_SERVERLESS_USAGE のデータを集計することをお勧めします。

テーブルとビューのモニタリングの詳細については、「Amazon Redshift Serverless でのクエリとワークロードのモニタリング」を参照してください。

CloudWatch を使用した使用状況の可視化

CloudWatch で利用可能なメトリクスを使用して、使用状況を追跡できます。CloudWatch 用に生成されるメトリックスには、現在時刻で使用された RPU の総秒数を示す ComputeSeconds、その時点の合計のコンピューティング性能を示す ComputeCapacity があります。使用量のメトリクスは、Redshift Serverless dashboard の Redshift コンソールでも検索できます。CloudWatch の詳細については、「Amazon CloudWatch とは」を参照してください。

ストレージの請求

プライマリストレージ容量は、Redshift マネージドストレージ (RMS) として請求されます。ストレージは GB /月単位で請求されます。ストレージの請求は、コンピューティング能力の請求とは別に行われます。ユーザースナップショットに使用されるストレージは、利用枠に応じて標準のバックアップ請求レートで請求されます。

データ転送と機械学習 (ML) の料金は、プロビジョニングされたクラスターと同じように、別々に適用されます。AWS リージョン間のスナップショットレプリケーションとデータ共有は、料金ページに記載されている概略の転送レートで請求されます。詳細については、Amazon Redshift の料金を参照してください。

CloudWatch を使用した使用料請求の可視化

スナップショットストレージの使用状況を追跡するメトリクス SnapshotStorage が生成され、CloudWatch に送信されます。CloudWatch の詳細については、「Amazon CloudWatch とは」を参照してください。

Amazon Redshift Serverless 無料トライアルの利用

Amazon Redshift Serverless は無料トライアルを提供しています。無料トライアルに参加する場合は、Redshift コンソールで無料トライアルのクレジット残高を表示し、SYS_SERVERLESS_USAGE システムビューで無料トライアルの使用を確認できます。無料トライアルの使用に関する請求の詳細は、請求コンソールに表示されないことに注意してください。使用状況は、無料トライアルの終了後にのみ、請求コンソールで確認できます。Amazon Redshift Serverless 無料トライアルの詳細については、「Amazon Redshift Serverless 無料トライアル」を参照してください。

使用料の請求についての注記

  • 使用量の記録 - クエリやトランザクションは、トランザクションの完了、ロールバック、停止後にのみ測定、記録されます。例えば、トランザクションが 2 日間実行された場合、RPU の使用量はトランザクションの完了後に記録されます。sys_serverless_usage のクエリを実行することで、使用中の状況をリアルタイムでモニタリングできます。トランザクション記録は、RPU 使用量の変動として反映され、特定の時間や毎日の使用のコストに影響を与える可能性があります。

  • 明示的なトランザクションを記述する - トランザクションを終了することは、重要な役割を果たすベストプラクティスです。開いているトランザクションを終了またはロールバックしない場合、Amazon Redshift Serverless は RPU を使用し続けます。例えば、BEGIN TRANを明示的に記述する場合、それに対応した COMMITROLLBACK の記述があることが重要です。

  • クエリのキャンセル - クエリを実行し、終了する前にキャンセルした場合は、クエリの実行時間に対して請求されます。

  • スケーリング - Amazon Redshift Serverless インスタンスは、パフォーマンスを一定に保つためにスケーリングを開始して、負荷の高い時間に対応する場合があります。Amazon Redshift Serverless の請求には、同じ RPU レートでの基本のコンピューティング性能とスケール処理容量の両方が含まれます。

  • スケールダウン - Amazon Redshift Serverless は、基本 RPU 容量からスケールアップして、負荷の高い時間を処理します。場合によっては、クエリの負荷が低下した後も、RPU 容量が一定期間高い設定のままになる場合があります。予想外のコストを防ぐため、コンソールで最大 RPU 時間を設定することを推奨します。

  • システムテーブル - システムテーブルのクエリを実行すると、クエリ時間が請求されます。

  • Redshift Spectrum - Amazon Redshift Serverless があり、クエリを実行する場合、データレイククエリには別途の料金は発生しません。Amazon S3 に保存されているデータに対するクエリの場合は、トランザクション時間ごとに、ローカルデータに対するクエリと同じ料金になります。

  • フェデレーティッドクエリ - フェデレーションクエリは、データウェアハウスまたはデータレイクでのクエリと同様に、特定の時間で使用される RPU に基づいて課金されます。

  • ストレージ - ストレージは GB/月単位で別途請求されます。

  • 最低料金 – リソース使用量は最低 60 秒として課金され、1 秒単位で計測されます。

  • スナップショットの請求 - スナップショットの請求は変更されません。スナップショットの請求は、GB /月のレートで請求されるストレージに応じて課金されます。データウェアハウスを過去 30 分単位で、24 時間内の特定のポイントに、無料で復元できます。詳細については、Amazon Redshift の料金を参照してください。

請求を予測可能にするための Amazon Redshift Serverless のベストプラクティス

一貫した請求を維持するために役立つベストプラクティスと組み込みの設定を以下に示します。

  • 各トランザクションを必ず終了してください。BEGIN を使ってトランザクションを開始する場合、それを END することも重要です。

  • また、エラー処理のベストプラクティスに従ってエラーに適切に対応し、各トランザクションを終了します。オープントランザクションを最小化することで、不要な RPU の使用を回避できます。

  • SESSION TIMEOUT を使用して、開いているトランザクションとアイドルセッションを終了します。これにより、3600 秒 (1 時間)を超えてアイドル状態または非アクティブの状態のセッションがすべてタイムアウトします。これにより、21600 秒 (6 時間) を超えて開いたままの状態または非アクティブの状態のトランザクションがすべてタイムアウトします。このタイムアウト設定は、長時間実行されるクエリに対してセッションを開いたままにする場合など、特定のユーザーに対して明示的に変更できます。CREATE USER のトピックに、ユーザーに対して SESSION TIMEOUT を調整する方法が記載されています。

    • SESSION TIMEOUT の値は、ユースケースで具体的に求められていないかぎり、ほとんどの場合では、延長しないことを推奨します。開いているトランザクションでセッションがアイドル状態のままの場合、セッションが閉じられるまで RPU が使用されることがあります。これによって不要なコストが発生します。

    • Amazon Redshift Serverless では、クエリの実行時間が最大 86,399秒 (24時間) です。Amazon Redshift Serverless がトランザクションに関連付けられたセッションを終了するまでの、オープントランザクションのアイドル状態の最大期間は 6 時間です。詳細については、「Amazon Redshift Serverless オブジェクトのクォータ」を参照してください。