Amazon Aurora DSQL が一般提供になりました
ウィスキー、シガー、パイプをこよなく愛する大栗です。
昨年の re:Invent 2024 で発表された Amazon Aurora DSQL が一般提供となりました
- AWS News Blog Amazon Aurora DSQL is now generally available
- AWS What's NewAmazon Aurora DSQL is now generally available
Amazon Aurora DSQL
Aurora DSQL は AWS re:Invent 2024 で発表された、事実上無制限のスケールするサーバーレスな分散 SQL データベースです。3個の AZ にまたがる Active/Active の単一クラスタを提供しつつ、マルチリージョン構成が可能で各リージョンのエンドポイントで単一の論理的なデータベースを提供して強いデータ一貫性を備えた読み取りと書き込みをサポートします。なお、Aurora DSQL は楽観的同時実行制御を採用しているので注意してください。
詳しくは、Aurora DSQL 発表時のブログを御覧ください。
提供リージョン
Aurora DSQL は現在以下のリージョンで提供されているとアナウンスされています。 日本では東京と大阪の 2 箇所のリージョンが提供されており、永続的なデータの保存場所を日本国内に限定できます。 日本では東京と大阪の 2 箇所のリージョンが提供されており、各々でシングルリージョンクラスターを作成できます。
- 北米:マルチリージョンクラスター対応
- バージニア北部 (us-east-1)
- オハイオ (us-east-2)
- オレゴン (us-west-2)
- アジアパシフィック:シングルリージョンクラスターのみ
- 大阪 (ap-northeast-3)
- 東京 (ap-northeast-1)
- ヨーロッパ:シングルリージョンクラスターのみ
- アイルランド (eu-west-1)
- ロンドン (eu-west-2)
- パリ (eu-west-3)
ただし、2025年5月28日5時44分 JST 現在に Aurora DSQL コンソールを確認すると、バージニア北部 (us-east-1)、オハイオ (us-east-2)、オレゴン (us-west-2)、東京 (ap-northeast-1)、パリ (eu-west-3) の 5 リージョンのみが有効になっていました。
料金
主要な料金
Aurora DSQL の料金は分散処理ユニット (Distributed Processing Unit : DPU) とストレージの主に2つの指標に基づいて請求されます。クエリ処理、読み取り、書き込みなどリクエストベースの全てのアクティビティを分散処理ユニット (DPU) という標準化された課金単位を使用して計測します。ストレージはデータベースの合計サイズ (GB/月) に基づいて課金されます。Aurora DSQL は 3 箇所の AZ 間でデータを複製しますが、課金されるのはデータの論理コピー1つのみです。
東京リージョンと大阪リージョンでの料金は以下のようになっています。
リージョン | DPU | ストレージ |
---|---|---|
東京リージョン | USD 10.00 / 100 万ユニット | 毎月 USD 0.40 / GB |
大阪リージョン | USD 10.00 / 100 万ユニット | 毎月 USD 0.40 / GB |
DPU だと AWS Glue の処理ユニット (Data Processing Unit : DPU) と同じなので少々混乱します。
無料枠も設定されており、毎月最初の 100,000 DPU と 1GB のストレージが無料です。
DPU の詳細については以下のエントリをご確認下さい。
データ転送料金
DPU とストレージ以外にデータ転送料金が発生します。AWS 内のデータ転送にはリージョン内とリージョン間、インターネットとのデータ転送のインバウンド (無料) とアウトバウンドです。データ転送料金は Amazon EC2 のデータ転送料金に準じます。
バックアップとリストアの料金
AWS Backup を使用して Aurora DSQL のバックアップとリストアを行います。そのため料金は AWS Backup の料金となります。
バックアップ
バックアップの料金は以下となります。
リージョン | ウォームストレージ - バックアップボールト | コールドストレージ - バックアップボールト | ウォームストレージ - 論理エアギャップボールト | コールドストレージ - 論理エアギャップボールト |
---|---|---|---|---|
東京リージョン | 毎月 USD 0.12 / GB | 毎月 USD 0.036 / GB | 毎月 USD 0.138 / GB | 毎月 USD 0.0414 / GB |
大阪リージョン | 毎月 USD 0.12 / GB | 毎月 USD 0.036 / GB | 毎月 USD 0.138 / GB | 毎月 USD 0.0414 / GB |
「論理エアギャップボールト」は聞き馴染みがないかもしれませんが、昨年発表された AWS Backup の新しいボールドタイプの Logically Air-gapped vault です。
リストア
リストアの料金は以下となります。Aurora DSQL はアイテムレベルリストアには対応していません。
リージョン | ウォームストレージ | コールドストレージ | アイテムレベルリストア |
---|---|---|---|
東京リージョン | USD 0.024 / GB | USD 0.036 / GB | n/a |
大阪リージョン | USD 0.024 / GB | USD 0.036 / GB | n/a |
SLA
現時点では SLA を確認できていません。まだ設定されていないようです。
SLA は設定されているようです。
Amazon Aurora DSQL Service Level Agreement
マルチリージョンとシングルリージョンで異なる SLA が設定されています。
サービスコミットメントには以下の記載があります。
AWS will use commercially reasonable efforts to make DSQL available with a Monthly Uptime Percentage for each AWS Region, during any monthly billing cycle, of (a) at least 99.999% if the Multi-Region SLA applies, or (b) at least 99.99% if the Single-Region SLA applies (the "Service Commitment").
日本語では以下のような意味となります。
AWS は各 AWS リージョンで、任意の月次請求期間中に DSQL を以下の月間稼働率で利用可能にする商業的に合理的な努力尽くします。(a) マルチリージョン SLA が適用される場合は 99.999% 以上、(b) シングルリージョン SLA が適用される場合は 99.99% 以上。DSQL がサービスコミットメントを満たさない場合、以下の記載の通りサービスクレジットを受け取る資格が与えられます。
なお、利用不可の状態とは、1 分間に60件以上のリクエストを行った場合に、(a) すべての接続リクエストが失敗する、または (b) すべてのPostgreSQLトランザクションリクエストが「内部エラー」で失敗することを意味します。1分間に60件以上のリクエストを行わなかった場合、当該期間は100%利用可能であるとみなされます。
アクセスが少ない状態では利用不可とならないことに注意が必要です。
マルチリージョン SLA
マルチリージョン SLA では以下の内容となります。マルチリージョン SLA の月間稼働率は、(a) 該当する月次請求サイクル全体を通じてマルチリージョンクラスターであり、(b) 単一の AWS リージョンで可用性の問題が発生した場合に他の利用可能なアクティブなピア DSQL クラスターを利用するための合理的な努力を行っている場合に適用されます。
月間稼働率 | サービスクレジット率 |
---|---|
99.999% 未満 99.0% 以上 | 10% |
99.0% 未満 95.0% 以上 | 25% |
95.0% 未満 | 100% |
シングルリージョン SLA
シングルリージョン SLA では以下の内容となります。シングルリージョン SLA の月間稼働率は、(a) DSQL クラスターがシングルリージョン クラスターである場合、または (b) DSQL クラスターがマルチリージョン クラスターであり 単一の AWS リージョンで可用性の問題が発生した場合に他の利用可能なアクティブなピア DSQL クラスターを利用するための合理的な努力を行わない場合に適用されます。
月間稼働率 | サービスクレジット率 |
---|---|
10% | |
99.0% 未満 95.0% 以上 | 25% |
95.0% 未満 | 100% |
サービスコミットメントでシングルリージョン SLA が適用される場合は月間稼働率が99.99%以上となるように商業的に合理的な努力を行うと謳っていますが、何故かサービスクレジットの適用は 99.9% 未満と記載されています。今後改定されることを期待します。
ワークショップ
すでに Aurora DSQL のワークショップも提供されているようです。AWS Workshop Studio の以下のリンクからご確認下さい。
Amazon Aurora DSQL Immersion Day
やってみた
マルチリージョンはプレビュー当初の作成方法と手順が変更されています。基本的に先日執筆した Aurora DSQL の PrivateLink 対応のブログの手順と同様です。これは CreateMultiRegionClusters
API と DeleteMultiRegionClusters
API が非推奨になり、CreateCluster
API の multiRegionProperties
パラメータが追加されたためです。
東京リージョンと大阪リージョンのマルチリージョン構成を作成してみようと思ったのですが、現時点では手元の環境で大阪リージョンで DSQL が有効になっていないため日本のリージョンはマルチリージョンクラスターに対応していないため東京リージョンのシングルリージョンを構成してみます。マルチリージョンの構成方法は PrivateLink 対応のブログの手順をご確認下さい。
シングルリージョンの Aurora DSQL を構成する方法は極めて簡単です。
Aurora DSQL コンソールで [クラスターを作成]ー[シングルリージョン] を選択します。
Aurora DSQL はデフォルトで暗号化されていますが、カスタマイズするために暗号鍵設定を行う場合には「暗号化設定をカスタマイズする」をチェック (ここではデフォルトキーを使用) し、削除保護を有効にする場合には「削除保護を有効にする」をチェックし、必要に応じてタグ情報をせっていしたら「クラスターを作成」をクリックするだけです。
数分でクラスターが作成されます。
対象のクラスターを選択して [アクション]ー[トークンを取得] を選択します。
エンドポイント、ポート、データベースを確認します。認証トークンの種類を管理者かカスタムロールか選択して [コピー] をクリックして認証トークンをコピーします。
psql でログインするには、PGSSLMODE
を require
に設定して、先程確認したエンドポイントやデータベースの情報でログインします。パスワードには認証トークンの内容を入力します。
PGSSLMODE=require \
psql --dbname <db_name> \
--username admin \
--host <your_cluster_endpoint>
以下のようにログインできます。
# PGSSLMODE=require \
> psql --dbname postgres \
> --username admin \
> --host abcdefghijklmnopqrstuvwxyz.dsql.ap-northeast-1.on.aws
Password for user admin:
psql (14.13, server 16.9)
WARNING: psql major version 14, server major version 16.
Some psql features might not work.
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES128-GCM-SHA256, bits: 128, compression: off)
Type "help" for help.
postgres=>
CloudShell からも簡単にアクセスできます。[アクション]ー[CloudShell で開く] を選択します。
管理者かカスタムロールか選択して [CloudShell を起動] をクリックします。
コマンドを確認して [実行] をクリックします。
手元の環境では、デプロイが完全に終わっていないのかエラーとなりログインできませんでした。しばらくすれば CloudShell でログイン可能になっていると思います。
CloudShell でログインできなかったので、普通に psql でクエリを実行していきます。
テーブルを作成してデータを挿入して選択すると、以下のように問題なく実行できます。プレビュー時と変わらず普通に PostgreSQL としてログインできます。
postgres=> CREATE TABLE items(item_id int, item_cat varchar, val int, item text);
CREATE TABLE
postgres=> INSERT INTO items (item_id, item_cat, val, item)
postgres-> VALUES
postgres-> (1, 'AAA', 101, '111'),
postgres-> (2, 'BBB', 102, '222'),
postgres-> (3, 'CCC', 103, '333'),
postgres-> (4, 'DDD', 104, '444'),
postgres-> (5, 'EEE', 101, '111'),
postgres-> (6, 'FFF', 102, '222'),
postgres-> (7, 'GGG', 103, '333'),
postgres-> (8, 'HHH', 104, '444');
INSERT 0 8
postgres=> SELECT * FROM items;
item_id | item_cat | val | item
---------+----------+-----+--------
5 | EEE | 101 | 111
3 | CCC | 103 | 333
1 | AAA | 101 | 111
2 | BBB | 102 | 222
8 | HHH | 104 | 444
6 | FFF | 102 | 222
4 | DDD | 104 | 444
7 | GGG | 103 | 333
(8 rows)
さいごに
個人的に re:Invent 2024 での最大の発表だったと思っている Aurora DSQL が一般提供されました。期待しか無いです。だた、必ず口を酸っぱくして注意していますが、Aurora DSQL は楽観的同時実行制御を採用しているのでアプリケーションの作りに注意が必要です。データベースでロックが掛からず、競合時はコミット実行時にエラーが発生します。そのためクエリのリトライが必要です。
また Aurora DSQL には MCP サーバーが追加されているらしいので、後で試してみます。
マルチリージョンで一貫性があり、かつサーバーレスというとても魅力のある Aurora DSQL なので、使用方法を間違えないようにしていきましょう。ワークショップなどで学習して順次万端で本番投入していきたいです。
【2025年5月28日17時 JST 追記】 日本のリージョンでは、まだマルチリージョンクラスターを作成できないようです。Witness を配置するリージョンが近くにないからということかなと思われます。今後ソウルリージョンなどでも Aurora DSQL が提供されるようになれば、マルチリージョンクラスターを作成できるようになるのかなと期待しています。