小西秀和です。
今回は「AWSサービスのServerlessオプション、オンデマンドモードの特徴・比較・まとめ・プロビジョニングとの違い」の記事の一部としてAWSサービスの一部でクラスターやインスタンスのプロビジョニングに対して用意されているServerlessオプションについて、主なAWSサービスごとに特徴、設定項目、料金、制限事項を見ていきたいと思います。
今回の記事の内容は次のような構成になっています。
- Serverlessオプションが使える主なAWSサービス
- Amazon Aurora Serverless v1
- Amazon Aurora Serverless v2
- Amazon Neptune Serverless
- Amazon EMR Serverless
- Amazon Redshift Serverless
- Amazon Redshiftの概要
- Amazon Managed Streaming for Apache Kafka(Amazon MSK) Serverless
- Amazon SageMaker Serverless Inference(Amazon SageMakerサーバーレス推論)
- Amazon OpenSearch Serverless(Preview)
- まとめ
Serverlessオプションが使える主なAWSサービス
本記事執筆時点でServerlessオプションが使える主なAWSサービスについて個別に特徴、設定項目、料金、制限事項を見ていきたいと思います。
Amazon Aurora Serverless v1
Amazon Auroraの概要
Amazon Auroraはクォーラムモデルによる分散システム技術とマルチAZデプロイメントによって高可用性・高耐久性と一貫性のあるハイパフォーマンスを両立し、バックトラック、クローン機能、Performance Insights、クロスリージョン配置、マルチマスター配置、Serverlessなど拡張性の高い機能を備えたMySQLおよびPostgreSQLと互換性のあるフルマネージド型リレーショナルデータベースエンジンです。
Amazon Aurora Serverless v1はAmazon Auroraにおける第1世代のServerless構成です。
Amazon Aurora Serverless v1の特徴
プロビジョニング型のAmazon Aurora DBクラスターを使用する場合には、DBインスタンスクラス、クラスター構成などのプロビジョニング設定と管理をする必要があり、リクエストを処理するにはクラスターを起動しておく必要があります。
一方でAmazon Aurora Serverless v1は少ない設定項目でリクエスト処理に応じてコンピューティングリソースとメモリリソースを自動的にスケーリングするServerlessなDBクラスターを作成します。
ただし、Amazon Aurora Serverless v1は少ない項目の設定でDBクラスター全体をServerlessな構成にできる一方で、プロビジョニング型のDBクラスターとの互換性も低く、サポートしているAuroraの機能も少ないことも特徴です。
Amazon Aurora Serverless v1の設定項目
AWSマネジメントコンソールからAmazon AuroraでServerless DBクラスターを作成するにはサポートしているAurora MySQLまたはAurora PostgreSQLのバージョンを指定した上で「DB instance class」のフィールドで指定します。
Amazon Aurora Serverless v1の作成に必要な主な設定項目には次のものがあります。
※Amazon Aurora ServerlessのキャパシティはAurora Capacity Unit(ACU)で設定するようになっており、1ACUで2GBメモリが割り当てられ、メモリ容量に比例したCPUとネットワークパフォーマンスが提供されます。
DB cluster identifier:一意のDBクラスター識別子 Master username:DBインスタンスのマスターユーザーID Master password:DBインスタンスのマスターユーザーパスワード Capacity range:使用するAurora Capacity Unit(ACU)の最小値と最大値を設定する Autoscaling timeout and action:ACUを自動スケールするためのスケーリングポイント(処理処理中のトランザクションや実行時間の長いクエリがない瞬間)を探す時間(1分~10分) If the timeout expires before a scaling point is found, do this:スケーリングポイントが時間内に見つからなかった場合の動作。ACUの変更をロールバックする、または、ACUの変更を強制する。 Scale the capacity to 0 ACUs when cluster is idle:クラスターがアイドル状態のときにACUを0にするかどうか Virtual private cloud (VPC):Amazon Aurora Serverless v1を配置するAmazon VPC DB Subnet group:Amazon Aurora Serverless v1で使用するDBサブネットグループ VPC security group:Amazon Aurora Serverless v1に設定するセキュリティグループ Web Service Data API;SQLクエリを実行するコネクションレスWeb Service Data APIのHTTPエンドポイントを有効にするかどうか Initial database name(任意):最初に作成するデータベース名 DB cluster parameter group:DBクラスターのパラメータグループの指定 Backup retention period:バックアップ保持期間(1~35日で指定) AWS KMS key:暗号化に使用するAWS KMSキー名(暗号化は必須) Deletion protection:削除保護を有効化するかどうか
Amazon Aurora Serverless v1の料金
Amazon Aurora Serverless v1のアジアパシフィック(東京, ap-northeast-1)リージョンにおけるvCPU、メモリの料金は次のようになっています。
<Aurora MySQL> Aurora Capacity Unit(ACU):0.10 (USD/時間) <Aurora PostgreSQL> Aurora Capacity Unit(ACU):0.10 (USD/時間)
1ACUで2GBメモリが割り当てられ、メモリ容量に比例したCPUとネットワークパフォーマンスが提供されます。
プロビジョニング型とServerlessオプションの料金比較
プロビジョニング型とServerlessオプションの料金は適しているユースケースが異なるため、ユースケースに合わせて料金シミュレーションをすることが必要です。
ただ、ここでは単純に同様の条件下で料金を比較してみます。
Amazon Aurora Serverless v1で8ACU(16GBメモリ)をすべて使用する処理を1時間実行した料金を計算すると次のようになります。
8(ACU) * 0.10(USD/時間) * 1(時間) = 0.8 USD
プロビジョニング型のAmazon Auroraクラスターで使用できる同程度のオンデマンドインスタンスタイプdb.r6g.large(2vCPU、16GBメモリ)の料金は0.313(USD/時間)となっています。
そのため、コンピューティング料金に関して継続的に同じリソース量をフル使用する場合はAmazon Aurora Serverless v1料金は割高といえます。
ただし、これは単純な机上比較であり、一般的に複数インスタンスから構成されるクラスターの使い方によっては一概に比較できないため、「AWSサービスのServerlessオプション、オンデマンドモードの特徴・比較・まとめ・プロビジョニングとの違い」の記事に記載したユースケースを考慮して実際のより具体的な使用パターンごとにコスト計画をする必要があるでしょう。
Amazon Aurora Serverless v1の制限事項
Amazon Aurora Serverless v1の主な制限事項には次のものが挙げられます。
- Amazon Aurora Serverless v1を使用できるAuroraバージョンが次のものに限られる
Aurora MySQL 5.6:Version 1.22.3
Aurora MySQL 5.7:Version 2.08.3
Aurora PostgreSQL 10:Version 10.18
Aurora PostgreSQL 11:Version 11.13 - プロビジョニング型のAmazon Auroraクラスターでサポートされている次の機能が使えない
Aurora Global Databases、Aurora Multi-Master Clusters、Auroraレプリカ、AWS IAM Database Authentication、バックトラック、Database Activity Streams、Performance Insights、AWSマネジメントコンソールでのログ参照、バックアップウィンドウの優先設定、マルチAZ構成 - AWS Database Migration Service(AWS DMS)とChange Data Capture(CDC)が使用できない
- Aurora Serverless v1 DBクラスターのスナップショットをAmazon S3バケットにエクスポートできない
- Aurora Serverless v1 DBクラスターのデータをAmazon S3バケットにエクスポートおよびインポートできない
- Aurora Serverless v1 DBクラスターにIAMロールをアタッチできない
- Aurora Serverless v1 DBクラスターの接続は24時間で切断される
- その他、Aurora Serverless v1 MySQLとPostgreSQLでそれぞれ固有の制限事項がある
<参考資料>
AWS Documentation(Using Amazon Aurora Serverless v1 - Amazon Aurora)
Amazon Aurora Pricing
Amazon Aurora Serverless v2
Amazon Auroraの概要
Amazon Auroraはクォーラムモデルによる分散システム技術とマルチAZデプロイメントによって高可用性・高耐久性と一貫性のあるハイパフォーマンスを両立し、バックトラック、クローン機能、Performance Insights、クロスリージョン配置、マルチマスター配置、Serverlessなど拡張性の高い機能を備えたMySQLおよびPostgreSQLと互換性のあるフルマネージド型リレーショナルデータベースエンジンです。
Amazon Aurora Serverless v2はAmazon Auroraにおける第2世代のServerless構成です。
Amazon Aurora Serverless v2の特徴
Amazon Aurora Serverless v1はプロビジョニング型のDBクラスターと互換性が低く、クラスター全体を設定の少ないServerless構成にします。
一方でAmazon Aurora Serverless v2はプロビジョニング型のDBクラスターと類似した設定項目およびAuroraの機能をもち、DBインスタンスクラスを設定すること無く、リクエスト処理に応じてコンピューティングリソースとメモリリソースを自動的にスケーリングします。
Amazon Aurora Serverless v2ではDBクラスター内のDBインスタンス単位でServerless構成にできるため、Amazon Aurora Serverless v2をサポートしたAuroraバージョンでDBクラスターを作成するとプロビジョニング型のDBインスタンスとServerless DBインスタンスの両方を含むクラスターを構成できます。
Amazon Aurora Serverless v2の設定項目
AWSマネジメントコンソールからAmazon AuroraでServerless DBクラスターを作成するにはサポートしているAurora MySQLまたはAurora PostgreSQLのバージョンを指定した上で「DB instance class」のフィールドで指定します。
Amazon Aurora Serverless v2の作成に必要な主な設定項目には次のものがあります。
※Amazon Aurora ServerlessのキャパシティはAurora Capacity Unit(ACU)で設定するようになっており、1ACUで2GBメモリが割り当てられ、メモリ容量に比例したCPUとネットワークパフォーマンスが提供されます。
DB cluster identifier:一意のDBクラスター識別子 Master username:DBインスタンスのマスターユーザーID Master password:DBインスタンスのマスターユーザーパスワード Capacity range:使用するAurora Capacity Unit(ACU)の最小値と最大値を設定する Multi-AZ deployment:リーダー ノード、Auroraレプリカを別のAZに作成するマルチAZ構成を有効化するかどうか Compute resource:Amazon EC2インスタンスへの接続を自動的に設定するかどうか Network type:IPv4を使用するか、IPv4とIPv6を使用するかの選択 Virtual private cloud (VPC):Amazon Aurora Serverless v2を配置するAmazon VPC DB Subnet group:Amazon Aurora Serverless v2で使用するDBサブネットグループ Public access:DBクラスターにパブリックIPアドレスを割り当てるかどうか VPC security group:Amazon Aurora Serverless v2に設定するセキュリティグループ Database port;データベース接続に使用するポート番号 Database authentication:Password authentication、Password and IAM database authentication Performance Insights:データベースパフォーマンス監視機能であるPerformance Insightsの設定 Initial database name(任意):最初に作成するデータベース名 DB cluster parameter group:DBクラスターのパラメータグループの指定 DB parameter group:DBパラメータグループの指定 Failover priority:フェイルオーバーの優先順を指定する階層の選択(Tier-0~Tier-15) Backup retention period:バックアップ保持期間(1~35日で指定) Enable encryption:暗号化を有効化するかどうか AWS KMS key:暗号化に使用するAWS KMSキー名(暗号化は任意) Log exports:Amazon CloudWatch Logsに出力するログの選択(Audit log、Error log、General log、Slow query log) Enable auto minor version upgrade:自動的なマイナーバージョンアップグレードを有効にするかどうか Maintenance window:メンテナンスウィンドウ(保留中の変更やメンテナンスを適用する期間)の指定 Deletion protection:削除保護を有効化するかどうか
Amazon Aurora Serverless v2の料金
Amazon Aurora Serverless v2のアジアパシフィック(東京, ap-northeast-1)リージョンにおけるvCPU、メモリの料金は次のようになっています。
<Aurora MySQL> Aurora Capacity Unit(ACU):0.20 (USD/時間) <Aurora PostgreSQL> Aurora Capacity Unit(ACU):0.20 (USD/時間)
1ACUで2GBメモリが割り当てられ、メモリ容量に比例したCPUとネットワークパフォーマンスが提供されます。
プロビジョニング型とServerlessオプションの料金比較
プロビジョニング型とServerlessオプションの料金は適しているユースケースが異なるため、ユースケースに合わせて料金シミュレーションをすることが必要です。
ただ、ここでは単純に同様の条件下で料金を比較してみます。
Amazon Aurora Serverless v2で8ACU(16GBメモリ)をすべて使用する処理を1時間実行した料金を計算すると次のようになります。
8(ACU) * 0.20(USD/時間) * 1(時間) = 1.6 USD
プロビジョニング型のAmazon Auroraクラスターで使用できる同程度のオンデマンドインスタンスタイプdb.r6g.large(2vCPU、16GBメモリ)の料金は0.313(USD/時間)となっています。
そのため、コンピューティング料金に関して継続的に同じリソース量をフル使用する場合はAmazon Aurora Serverless v2料金は割高といえます。
ただし、これは単純な机上比較であり、一般的に複数インスタンスから構成されるクラスターの使い方によっては一概に比較できないため、「AWSサービスのServerlessオプション、オンデマンドモードの特徴・比較・まとめ・プロビジョニングとの違い」の記事に記載したユースケースを考慮して実際のより具体的な使用パターンごとにコスト計画をする必要があるでしょう。
Amazon Aurora Serverless v2の制限事項
Amazon Aurora Serverless v2の主な制限事項には次のものが挙げられます。
- Amazon Aurora Serverless v2を使用できるAuroraバージョンが次のものに限られる
Aurora MySQL Version 3:Version 3.02.0
Aurora PostgreSQL 13:Version 13.6以降
Aurora PostgreSQL 14:Version 14.3以降 - プロビジョニング型のAmazon Auroraクラスターでサポートされている次の機能が使えない
Database Activity Streams、バックトラック(Aurora MySQL Version 3のみ) - その他、Aurora Serverless v2 MySQLとPostgreSQLでそれぞれ固有の制限事項がある
<参考資料>
AWS Documentation(Using Aurora Serverless v2 - Amazon Aurora)
Amazon Aurora Pricing
Amazon Neptune Serverless
Amazon Neptuneの概要
Amazon Neptuneは一般的なグラフクエリ言語であるApache TinkerPop GremlinとW3CのSPARQLをサポートした高速で信頼性が高いフルマネージドグラフデータベースサービスです。
Amazon Neptune ServerlessはAmazon NeptuneにおけるServerless構成です。
Amazon Neptune Serverlessの特徴
Amazon Neptune ServerlessはAmazon Aurora Serverless v2とよく似た仕組みで構成されています。
Amazon Neptune Serverlessはプロビジョニング型のDBクラスターと類似した設定項目およびNeptuneの機能をもち、DBインスタンスクラスを設定すること無く、リクエスト処理に応じてコンピューティングリソースとメモリリソースを自動的にスケーリングします。
Amazon Neptune ServerlessではDBクラスター内のDBインスタンス単位でServerless構成にできるため、Amazon Neptune ServerlessをサポートしたNeptuneバージョンでDBクラスターを作成するとプロビジョニング型のDBインスタンスとServerless DBインスタンスの両方を含むクラスターを構成できます。
Amazon Neptune Serverlessの設定項目
AWSマネジメントコンソールからAmazon NeptuneでServerless DBクラスターを作成するには「Engine type」のフィールドでServerless
を指定します。
Amazon Neptune Serverlessの作成に必要な主な設定項目には次のものがあります。
※Amazon Neptune ServerlessのキャパシティはNeptune Capacity Unit(NCU)で設定するようになっており、1NCUで2GBメモリが割り当てられ、メモリ容量に比例したCPUとネットワークパフォーマンスが提供されます。
DB cluster identifier:一意のDBクラスター識別子 Capacity settings:使用するNeptune Capacity Unit(NCU)の最小値と最大値を設定する Multi-AZ deployment:Neptuneレプリカを別のAZに作成するマルチAZ構成を有効化するかどうか Virtual Private Cloud (VPC):Amazon Neptune Serverlessを配置するAmazon VPC Subnet group:Amazon Neptune Serverlessで使用するDBサブネットグループ VPC security group:Amazon Neptune Serverlessに設定するセキュリティグループ Database port:データベース接続に使用するポート番号 Create notebook:Neptuneクラスターのデータをクエリ・視覚化するNeptuneノートブックを作成するかどうか DB instance identifier:一意のDBインスタンス識別子 DB cluster parameter group:DBクラスターのパラメータグループの指定 DB parameter group:DBパラメータグループの指定 Failover priority:フェイルオーバーの優先順を指定する階層の選択(Tier-0~Tier-15) Backup retention period:バックアップ保持期間(1~35日で指定) Log exports:Amazon CloudWatch Logsに出力するログの選択(Audit log) Enable auto minor version upgrade:自動的なマイナーバージョンアップグレードを有効にするかどうか Maintenance window:メンテナンスウィンドウ(保留中の変更やメンテナンスを適用する期間)の指定 Deletion protection:削除保護を有効化するかどうか
Amazon Neptune Serverlessの料金
Amazon Neptune Serverlessのアジアパシフィック(東京, ap-northeast-1)リージョンにおけるvCPU、メモリの料金は次のようになっています。
Neptune Capacity Unit(NCU):0.1941(USD/時間)
1NCUで2GBメモリが割り当てられ、メモリ容量に比例したCPUとネットワークパフォーマンスが提供されます。
プロビジョニング型とServerlessオプションの料金比較
プロビジョニング型とServerlessオプションの料金は適しているユースケースが異なるため、ユースケースに合わせて料金シミュレーションをすることが必要です。
ただ、ここでは単純に同様の条件下で料金を比較してみます。
Amazon Neptune Serverlessで8NCU(16GBメモリ)をすべて使用する処理を1時間実行した料金を計算すると次のようになります。
8(NCU) * 0.1941(USD/時間) * 1(時間) = 1.5528 USD
プロビジョニング型のAmazon Neptuneクラスターで使用できる同程度のオンデマンドインスタンスタイプdb.r6g.large(2vCPU、16GBメモリ)の料金は0.3967(USD/時間)となっています。
そのため、コンピューティング料金に関して継続的に同じリソース量をフル使用する場合はAmazon Neptune Serverless料金は割高といえます。
ただし、これは単純な机上比較であり、一般的に複数インスタンスから構成されるクラスターの使い方によっては一概に比較できないため、「AWSサービスのServerlessオプション、オンデマンドモードの特徴・比較・まとめ・プロビジョニングとの違い」の記事に記載したユースケースを考慮して実際のより具体的な使用パターンごとにコスト計画をする必要があるでしょう。
Amazon Neptune Serverlessの制限事項
Amazon Neptune Serverlessの主な制限事項には次のものが挙げられます。
- Amazon Neptune Serverlessを使用できるNeptuneバージョンが次のものに限られる
Neptune 1.2.0.1.R1
<参考資料>
AWS Documentation(Amazon Neptune Serverless - Amazon Neptune)
Amazon Neptune Pricing
Amazon EMR Serverless
Amazon EMRの概要
Amazon EMRは必要十分なキャパシティのプロビジョニングや変化するコンピューティング需要を管理するスケーリングルールを設定し、Apache Spark、Apache Hive、Prestoといったオープンソースフレームワークを使用したデータ処理、インタラクティブ分析、機械学習などを実行できるビッグデータプラットフォームサービスです。
Amazon EMR ServerlessはAmazon EMRのServerless構成です。
Amazon EMR Serverlessの特徴
Amazon EMRをAmazon EC2インスタンスから構成されるクラスターで使用する場合には、インスタンスタイプ、クラスター構成などのプロビジョニング設定と管理をする必要があり、リクエストを処理するにはクラスターを起動しておく必要があります。
また、Amazon EC2を使用したAmazon EMRクラスターでAuto Scalingを使用するにはリソースの構成やしきい値などのスケーリングポリシーを設定する必要があり、一部のインスタンスが起動していることを前提としてインスタンスを増減させることでスケールアウトさせます。
一方でAmazon EMR Serverlessは少ない設定項目でリクエスト処理に応じてコンピューティングリソースとメモリリソースを自動的にスケーリングします。
Amazon EC2を使用したAmazon EMRクラスターはApache Spark、Apache Hiveに加えて様々なフレームワークをサポートし、単一のアベイラビリティーゾーン(AZ)を使用します。
それに対し、Amazon EMR Serverlessでサポートしているフレームワークは本記事執筆時点でApache Spark、Apache Hiveがあり、複数のアベイラビリティーゾーン(AZ)を使用したAZ障害耐性があります。
Amazon EMR Serverlessの設定項目
Amazon EMR ServerlessをAWSマネジメントコンソールから作成するには無料のEMR Studioを使用します。
Amazon EMR Serverlessの作成に必要な主な設定項目には次のものがあります。
Name:Amazon EMR Serverlessアプリケーションの名称 Type:Apache Spark、Apache Hiveの選択 Release version:EMRのバージョン Pre-initialized capacity(任意):アプリケーション起動時に即座に適用するドライバーとワーカーのリソース(CPU、メモリ、ディスク容量) Application limits(任意):同時実行されているすべてのジョブで使用できる最大のCPU、メモリ、ディスク容量 Application behavior(任意):ジョブの送信時にアプリケーションを自動的に開始するかの有無、アプリケーションがアイドル状態になった後に自動停止するまでの時間(分) Network connections(任意):アプリケーションがアクセスするAmazon VPC
Amazon EMR Serverlessの料金
Amazon EMR Serverlessのアジアパシフィック(東京, ap-northeast-1)リージョンにおけるvCPU、メモリの料金は次のようになっています。
vCPU:0.065728 (USD/vCPU数・時間) メモリ:0.007189(USD/GB・時間)
プロビジョニング型とServerlessオプションの料金比較
プロビジョニング型とServerlessオプションの料金は適しているユースケースが異なるため、ユースケースに合わせて料金シミュレーションをすることが必要です。
ただ、ここでは単純に同様の条件下で料金を比較してみます。
Amazon EMR Serverlessで2vCPU、8GBメモリをすべて使用するジョブを1時間実行した料金を計算すると次のようになります。
2(vCPU) x 1(時間) x 0.065728 (USD/vCPU数・時間) = 0.1315 USD 8(GBメモリ) x 1(時間) x 0.007189 (USD/GB・時間) = 0.0575 USD 0.1315 USD + 0.0575 USD = 0.189 USD
Amazon EC2を使用したAmazon EMRクラスターで使用できるオンデマンドインスタンスタイプm6g.xlarge(2vCPU、8GBメモリ)のEMR料金は0.039(USD/時間)となっています。
そのため、コンピューティング料金に関して継続的に同じリソース量をフル使用する場合はAmazon EMR Serverless料金は割高といえます。
ただし、これは単純な机上比較であり、一般的に複数インスタンスから構成されるクラスターの使い方によっては一概に比較できないため、「AWSサービスのServerlessオプション、オンデマンドモードの特徴・比較・まとめ・プロビジョニングとの違い」の記事に記載したユースケースを考慮して実際のより具体的な使用パターンごとにコスト計画をする必要があるでしょう。
Amazon EMR Serverlessの制限事項
Amazon EMR Serverlessの主な制限事項には次のものが挙げられます。
- 使用できるフレームワークがApache Spark、Apache Hiveに限定される
- EMR Studioやその他のノートブックサービスからのインタラクティブなワークロード実行がサポートされていない
- HDFSをサポートしていない
- emr-dynamodb-connectorをサポートしていない
- ジョブ実行時間はデフォルトで12時間(executionTimeoutInMinutesプロパティで変更が可能)
<参考資料>
AWS Documentation(Amazon EMR Serverless User Guide - Amazon EMR)
Amazon EMR Pricing
Amazon Redshift Serverless
Amazon Redshiftの概要
Amazon Redshiftは標準SQLと既存のビジネスインテリジェンス(BI)ツールを使用して、ペタバイト規模のデータを迅速かつ費用効果の高い方法で分析できるフルマネージド型データウェアハウスサービスです。
Amazon Redshift ServerlessはAmazon RedshiftのServerless構成です。
Amazon Redshift Serverlessの特徴
従来のAmazon Redshiftクラスターは、ノードタイプ、クラスター構成などのプロビジョニング設定と管理をする必要があり、リクエストを処理するにはクラスターを起動しておく必要があります。
また、Amazon Redshiftクラスターでのスケーリング方法にはワークロード管理(WLM)を使用した同時ユーザーと同時クエリの一貫した高速なパフォーマンスを提供する同時実行スケーリング(Concurrency Scaling)がありますが、リクエストを処理するためにクラスターを起動しておくことには変わりありません。
一方でAmazon Redshift Serverlessはノードタイプ、パラメータグループ、メンテナンスウィンドウ、ワークロード管理(WLM)といった設定をする必要がなく、少ない設定項目でリクエスト処理に応じてコンピューティング性能(Redshift Processing Unit)を自動的にスケーリングします。
また、Amazon Redshift Serverlessは従来のAmazon Redshiftクラスターと同様にAmazon Redshift Spectrum、AWS KMSカスタマーマネージドキーによる暗号化、IAMまたはRedshiftユーザーによるユーザー管理、JDBCおよびODBC接続が可能です。
さらにAmazon Redshift ServerlessはAmazon Redshift Data API、ポイントインタイムリカバリ、新しいシステムビュー監視、Amazon CloudWatch Logsによる監査ログをサポートしています。
Amazon Redshift Serverlessの設定項目
AWSマネジメントコンソールにおけるAmazon Redshift Serverlessの作成に必要な主な設定項目には次のものがあります。
Namespace name:一意のネームスペース名。 Database name:最初のデータベース名。「dev」の固定値。 Admin user credentials(任意):Admin userのnameとpasswordの設定。設定しなければデフォルトのIAM認証情報を使用 Associated IAM roles(任意):Amazon Redshift Serverless Endpointに付与するIAMロール(LOAD、UNLOAD、COPY、SELECTなどの権限を与える) Customize encryption settings(任意):AWS KMSカスタマーマネージドキーを使用した暗号化の設定 Audit logging(任意):監査ログ(User log、Connection log、User activity log)を出力するかの設定 Workgroup name:一意のワークグループ名。 Virtual private cloud(VPC):Amazon Redshift Serverlessを配置するAmazon VPC VPC security groups:Amazon Redshift Serverlessに設定するセキュリティグループ Subnet:Amazon VPCで使用するサブネット(異なるアベイラビリティゾーンを使用する3つ以上のサブネットを指定) Enhanced VPC routing:データベースとデータリポジトリ間のトラフィックをAmazon VPC経由に強制するかの設定
Amazon Redshift Serverlessの料金
Amazon Redshift Serverlessのアジアパシフィック(東京, ap-northeast-1)リージョンにおけるvCPU、メモリの料金は次のようになっています。
Redshift Processing Unit(RPU):0.494(USD/RPU・時間)
1RPUで16GBメモリが割り当てられ、メモリ容量に比例したCPUとネットワークパフォーマンスが提供されます。
※AWSの一部資料では1RPUで16GBメモリ、2vCPUが割り当てられるとの記載があります。
最新のDWHおよびデータレイク動向について
RPUのデフォルト値は128RPUで設定されますが、AWSマネジメントコンソールまたはAmazon Redshift APIでベースを32RPUから512RPUまで8ユニット(32、40、48~最大512)ごとに調整できます。
プロビジョニング型とServerlessオプションの料金比較
プロビジョニング型とServerlessオプションの料金は適しているユースケースが異なるため、ユースケースに合わせて料金シミュレーションをすることが必要です。
ただ、ここでは単純に同様の条件下で料金を比較してみます。
プロビジョニング型のAmazon Redshiftクラスターで使用できる最大メモリサイズのオンデマンドインスタンスタイプはra3.16xlarge(48vCPU、384GBメモリ)の料金は15.347(USD/時間)となっています。
Amazon Redshift Serverlessの最小構成である32RPU(512GBメモリ)をすべて使用する処理を1時間実行した料金を計算すると次のようになります。
32(RPU) * 0.494(USD/RPU・時間) * 1(時間) = 15.808 USD
また、Amazon Redshift Serverlessの最小構成が32RPUであるため、不可能な構成ではありますがra3.16xlargeにあわせて24RPU(384GBメモリ)をすべて使用する処理を1時間実行すると仮定した料金を計算すると次のようになります。
24(RPU) * 0.494(USD/RPU・時間) * 1(時間) = 11.856 USD
これらのことから、コンピューティング料金に関して継続的に同じリソース量をフル使用する場合でもAmazon Redshift Serverlessの料金はプロビジョニング型のAmazon Redshiftクラスターに比べて割安といえます。
また、上記でも触れたように本記事執筆時点でプロビジョニング型のAmazon Redshiftクラスターで使用できる最大メモリサイズのオンデマンドインスタンスタイプはra3.16xlarge(48vCPU、384GBメモリ)です。
そのため、他のAWSサービスのServerlessオプションの位置づけとは異なり、Amazon Redshift Serverlessはプロビジョニング型のオンデマンドインスタンスの最大メモリサイズを超えるようなユースケースに対応するための構成とも言えます。
もちろん、Amazon Redshiftクラスターは複数のインスタンスで構成することができ、使い方によっては一概にAmazon Redshift Serverlessが割安とは言えないため、「AWSサービスのServerlessオプション、オンデマンドモードの特徴・比較・まとめ・プロビジョニングとの違い」の記事に記載したユースケースを考慮して実際のより具体的な使用パターンごとにコスト計画をする必要があるでしょう。
Amazon Redshift Serverlessの制限事項
Amazon EMR Serverlessの主な制限事項には次のものが挙げられます。
- Amazon VPCで使用するサブネットを異なるアベイラビリティゾーンで3つ以上指定する必要がある
- Advanced Query Accelerator(AQUA)はサポートされていない
- ソフトウェアのバージョンアップデートが自動的に適用される(バージョンアップデートで接続やクエリ実行が中断されることはない)
- カーソルを宣言するとAmazon Redshift Serverlessの結果セットのサイズがDECLAREに指定される
- 最大クエリ実行時間が86,399秒(24時間)。これを超えるとクエリがタイムアウトする。
- その他、Amazon Redshift Serverless独自のクォータがある
<参考資料>
AWS Documentation(Amazon Redshift Serverless - Amazon Redshift)
Amazon Redshift Pricing
Amazon Managed Streaming for Apache Kafka(Amazon MSK) Serverless
Amazon MSKの概要
Amazon Managed Streaming for Apache Kafka(Amazon MSK)はApache Kafkaを使用してストリーミングデータを処理するアプリケーションを構築および実行できるようにするフルマネージドサービスです。
Amazon MSK ServerlessはAmazon MSKのServerless構成です。
Amazon MSK Serverlessの特徴
プロビジョニングタイプのAmazon MSKクラスターは、ブローカータイプ、クラスター構成などのプロビジョニング設定と管理をする必要があり、リクエストを処理するにはクラスターを起動しておく必要があります。
また、Amazon MSKのAuto ScalingでAuto Scalingを使用するにはリソースの構成やしきい値などのスケーリングポリシーを設定する必要があり、一部のインスタンスが起動していることを前提としてインスタンスを増減させることでスケールアウトさせます。
一方でAmazon MSK Serverlessは少ない設定項目でブローカーインスタンスタイプを指定せず、クラスターごとに最大200MBpsの書き込みキャパシティと400MBpsの読み込みキャパシティ、パーティションごとに最大5MBpsのインスタント書き込みキャパシティと10MBpsのインスタント読み込みキャパシティを割り当て、スループット容量までリクエストに応じて自動的にスケーリングします。
Amazon MSK Serverlessの設定項目
AWSマネジメントコンソールにおけるAmazon MSK Serverlessの作成に必要な主な設定項目には次のものがあります。
Cluster name:一意のクラスター名 VPC:Amazon MSK Serverlessクラスターを配置するAmazon VPC Subnets:Amazon VPCで使用するサブネット(異なるアベイラビリティゾーンを使用する3つ以上のサブネットを指定) Security groups:Amazon MSK Serverlessクラスターに設定するVPCセキュリティグループ
Amazon MSK Serverlessの料金
Amazon MSK Serverlessのアジアパシフィック(東京, ap-northeast-1)リージョンにおける料金は次のようになっています。
クラスター:0.9675(USD/クラスター数・時間) パーティション:0.0019(USD/パーティション数・時間) ストレージ:0.12(USD/GB・月) データ(イン):0.129(USD/GB) データ(アウト):0.0645(USD/GB)
プロビジョニング型とServerlessオプションの料金比較
プロビジョニング型とServerlessオプションの料金は適しているユースケースが異なるため、ユースケースに合わせて料金シミュレーションをすることが必要です。
ただ、ここでは単純に同様の条件下で料金を比較してみます。
Amazon MSK Serverlessとプロビジョニング型Amazon MSKクラスターの料金を次の条件で比較してみます。
- 1クラスター、5トピック、20パーティションで730時間(1か月)継続して処理
- データはインターネットから受信し、リージョン内のコンシューマーに送信する
- データの受信:1(GB/時間)
- データの送信:1(GB/時間)
- データ保持日数:24時間(1日)
- ストレージ容量(クラスターあたり):150(GB/月)
- プロビジョニング型Amazon MSKクラスターはm5.largeブローカータイプの3ノードを使用する
この条件下でAmazon MSK Serverlessとプロビジョニング型Amazon MSKクラスターのアジアパシフィック(東京, ap-northeast-1)リージョンにおける料金を算出すると以下のようになります。
<Amazon MSK Serverlessの料金> クラスター料金:0.9675(USD/時間) * 730(時間) = 706.275(USD/月) パーティション料金:0.0019(USD/パーティション数・時間) * 5(トピック) * 20(パーティション) * 730(時間) = 138.7(USD/時間) ストレージ料金:0.12(USD/GB・月) * 150(GB/月) = 18(USD/月) データ(イン)料金:0.129(USD/GB) * 1(GB/時間) * 730(時間) = 94.17(USD/月) データ(アウト)料金:0.0645(USD/GB) * 1(GB/時間) * 730(時間) = 47.085(USD/月) クラスター料金 + パーティション料金 + ストレージ料金 + データ(イン)料金 + データ(アウト)料金 = 1004.23(USD/月) <プロビジョニング型Amazon MSKクラスターの料金> クラスター料金:3(ブローカーノード) * 0.271(USD/時間) * 730(時間) = 593.49(USD/月) ストレージ料金:0.12(USD/GB・月) * 150(GB/月) = 18(USD/月) 受信データ転送料金(インターネット):無料 送信データ転送料金(リージョン内):730(GB/月) * 0.01(USD/GBアウトバウンド) + 730(GB/月) * 0.01(USD/GBインバウンド) = 14.60(USD/月) クラスター料金 + ストレージ料金 + 受信データ転送料金(インターネット) + 送信データ転送料金(リージョン内)= 626.09(USD/月)
このことから断続的にプロビジョニング型Amazon MSKクラスターを余すことなくフル使用する場合はAmazon MSK Serverlessは割高といえます。
また、Amazon MSK Serverlessでは「クラスター料金」の変動が少ないのに対して「データ(イン)」「データ(アウト)」に関係するデータサイズが料金に大きな影響を与えることがわかります。
ただし、Amazon MSK Serverlessの料金は多くの項目から計算するため、プロビジョニング型Amazon MSKクラスターの比較は他のServerlessオプションを提供するAWSサービスよりも複雑です。
そのため、「AWSサービスのServerlessオプション、オンデマンドモードの特徴・比較・まとめ・プロビジョニングとの違い」の記事に記載したユースケースを考慮して実際のより具体的な使用パターンごとにコスト計画をする必要があるでしょう。
Amazon MSK Serverlessの制限事項
Amazon MSK Serverlessの主な制限事項には次のものが挙げられます。
- ブローカーインスタンスタイプの指定が不要である一方で次のスループットに関するクォータが決められている
<スループットに関するクォータ> クラスターあたりの最大入力スループット:200MBps クラスターあたりの最大出力スループット:400MBps パーティションあたりの最大入力スループット:5MBps パーティションあたりの最大出力スループット:10MBps <その他のクォータ> 保存の最長期間:24時間(サポートケースにより調整可能) クライアント接続の最大数:1000 接続の最大試行:100/秒 最大メッセージサイズ(MB):8MB 最大リクエストサイズ:100MB 最大リクエストレート:15,000/秒 リクエストあたりの最大フェッチバイト数:55MB ユーザーグループの最大数:500 パーティションの最大数:120(サポートケースにより調整可能) パーティションの作成と削除の最大レート:5分あたり120 最大パーティションサイズ:250GB サーバーレスクラスターあたりのクライアントVPCの最大数:5 アカウントあたりのサーバーレスクラスターの最大数:3
<参考資料>
AWS Documentation(MSK Serverless - Amazon Managed Streaming for Apache Kafka)
Amazon MSK Pricing
Amazon SageMaker Serverless Inference(Amazon SageMakerサーバーレス推論)
Amazon SageMakerの概要
Amazon SageMakerは機械学習(ML)モデルを迅速に構築、トレーニング、デプロイできるようにするフルマネージドサービスです。
Amazon SageMakerはインスタンスを実行し、エンドポイントをプロビジョニングしてリアルタイム推論をします。
Amazon SageMaker Serverless InferenceはAmazon SageMakerにおける推論のServerless構成です。
Amazon SageMaker Serverless Inferenceの特徴
Amazon SageMakerでリアルタイム推論(Amazon SageMaker Real-Time Inference)をするにはエンドポイントをプロビジョニングして、インスタンスを起動しておく必要があります。
リアルタイム推論のエンドポイントはフルマネージドで自動的にスケーリングしますが、リアルタイム推論を実行するためにインスタンスを起動しておくことには変わりありません。
一方でAmazon SageMaker Serverless Inferenceは少ない設定項目でトラフィックに応じてコンピューティングリソースとメモリリソースを事前に選択したメモリサイズまで自動的にスケーリングするサーバーレス推論を提供します。
Amazon SageMaker Serverless Inferenceの設定項目
Amazon SageMaker Serverless Inferenceを使用するにはエンドポイントタイプをServerlessにしたエンドポイント設定でエンドポイントを作成し、モデルと関連付けます。
Amazon SageMaker Serverless Inferenceを使用するために必要なエンドポイント設定の項目には次のものがあります。
メモリサイズ:設定するメモリサイズ(1024、2048、3072、4096、5120、6144から選択) 最大同時実行数:エンドポイントを同時呼び出せる最大数
Amazon SageMaker Serverless Inferenceの料金
mazon SageMaker Serverless Inferenceのアジアパシフィック(東京, ap-northeast-1)リージョンにおけるメモリサイズおよびデータ処理量の料金は次のようになっています。
<選択可能なメモリサイズ> 1024(MB):0.0000200 (USD/秒) 2048(MB):0.0000400 (USD/秒) 3072(MB):0.0000600 (USD/秒) 4096(MB):0.0000800 (USD/秒) 5120(MB):0.0001000 (USD/秒) 6144(MB):0.0001200 (USD/秒) ※メモリ容量に比例したvCPUとネットワークパフォーマンスが提供されます。 <データ処理量> データ処理量(入力):0.016(USD/GB) データ処理量(出力):0.016(USD/GB)
プロビジョニング型とServerlessオプションの料金比較
プロビジョニング型とServerlessオプションの料金は適しているユースケースが異なるため、ユースケースに合わせて料金シミュレーションをすることが必要です。
ただ、ここでは単純に同様の条件下で料金を比較してみます。
Amazon SageMaker Serverless Inference(サーバーレス推論)とAmazon SageMaker Real-Time Inference(リアルタイム推論)の料金を次の条件で比較してみます。
- 5(リクエスト/秒)に対して各0.2(秒/リクエスト)を730時間(1か月)継続する推論時間:5(リクエスト/秒) * 730(時間) * 60(分) * 60(秒) * 0.2(秒/リクエスト) = 2,628,000(秒)
- 入力データ量:10(GB)
- 出力データ量:10(GB)
- Serverless Inferenceは4GBメモリを割り当てる
- Real-Time Inferenceは1モデル、1エンドポイント、1インスタンス(ml.c6g.large(vCPU:2、メモリ:4GB))を730時間(1か月)実行する
この条件下でAmazon SageMaker Serverless InferenceとAmazon SageMaker Real-Time Inferenceのアジアパシフィック(東京, ap-northeast-1)リージョンにおける料金を算出すると以下のようになります。
<Amazon SageMaker Serverless Inferenceの料金> コンピューティング料金:0.0000800(USD/秒) * 2,628,000(秒) = 210.24(USD/月) データ処理料金(入力):0.016(USD/GB) * 10(GB/月) = 0.16(USD/月) データ処理料金(出力):0.016(USD/GB) * 10(GB/月) = 0.16(USD/月) コンピューティング料金 + データ処理料金(入力) + データ処理料金(出力) = 210.56(USD/月) <Amazon SageMaker Real-Time Inferenceの料金> コンピューティング料金:0.10272(USD/時間) * RoundUp{1(モデル) / 1(エンドポイント/モデル)} * 1(インスタンス/エンドポイント) * 730(時間) = 74.9856(USD/月) データ処理料金(入力):0.016(USD/GB) * 10(GB/月) = 0.16(USD/月) データ処理料金(出力):0.016(USD/GB) * 10(GB/月) = 0.16(USD/月) コンピューティング料金 + データ処理料金(入力) + データ処理料金(出力) = 75.3056(USD/月)
このことから、コンピューティング料金に関しては断続的にAmazon SageMaker Real-Time Inferenceを余すことなくフル使用する場合はAmazon SageMaker Serverless Inferenceは割高といえます。
上記の条件下のAmazon SageMaker Serverless Inferenceでは推論時間が現状より約1/3倍になった場合にAmazon SageMaker Real-Time Inferenceの料金より低くなります。
ただし、これは単純な机上比較で使い方によっては一概に割高とは言えないため、「AWSサービスのServerlessオプション、オンデマンドモードの特徴・比較・まとめ・プロビジョニングとの違い」の記事に記載したユースケースを考慮して実際のより具体的な使用パターンごとにコスト計画をする必要があるでしょう。
Amazon SageMaker Serverless Inferenceの制限事項
Amazon MSK Serverlessの主な制限事項には次のものが挙げられます。
- メモリリソースとそれに比例するコンピューティングリソースは事前にメモリサイズを選択する必要がある(上限なくスケールするわけではない)
- リアルタイム推論でサポートされている次のような機能をサポートしていない
GPU、AWSマーケットプレイスモデルパッケージ、プライベートDockerレジストリ、マルチモデルエンドポイント、VPC設定、ネットワーク分離、データキャプチャ、複数の本番バリアント、モデル監視、インターフェイスパイプラインなど
<参考資料>
AWS Documentation(Serverless Inference - Amazon SageMaker)
Amazon SageMaker Pricing
Amazon OpenSearch Serverless(Preview)
Amazon OpenSearch Serviceの概要
Amazon OpenSearch ServiceはElasticsearchから派生したオープンソースの分散検索および分析スイートであるOpenSearchのデプロイ、オペレーション、スケーリングを管理し、インタラクティブなログ分析、リアルタイムのアプリケーションモニタリング、ウェブサイト検索などを実行するマネージドサービスです。
Amazon OpenSearch ServerlessはAmazon OpenSearch ServiceにおけるServerless構成です。
Amazon OpenSearch Serverlessの特徴
プロビジョニングを必要とするAmazon OpenSearch Serviceクラスター(Amazon OpenSearch Serviceドメインと同義)を使用する場合には、インスタンスタイプ、クラスター構成などのプロビジョニング設定と管理をする必要があり、リクエストを処理するにはクラスターを起動しておく必要があります。
また、Amazon OpenSearch ServiceクラスターをスケーリングするにはAmazon CloudWatchメトリクスなどを参考にして必要な容量を判断し、ドメインにノードを追加するスケールアウト、ノードを大きなインスタンスタイプに変更するスケールアップを実行する作業が必要になります。
一方でAmazon OpenSearch Serverlessは少ない設定項目でリクエスト処理に応じてコンピューティングリソースとメモリリソースを自動的にスケーリングします。
Amazon OpenSearch Serverlessの設定項目
AWSマネジメントコンソールからAmazon OpenSearch Serverlessを使用するにはAmazon OpenSearch ServiceコンソールのサイドメニューからServerless
を指定します。
Amazon OpenSearch Serverlessの作成に必要な主な設定項目には次のものがあります。
※Amazon OpenSearch ServerlessのキャパシティはOpenSearch Compute Unit(OCU)で設定するようになっており、1 OCUで6GBメモリが割り当てられ、メモリ容量に比例したCPUとネットワークパフォーマンスが提供されます。
Collection name:一意のコレクション名 Description:コレクションの説明 Collection type:Time series(大量の半構造化されたマシン生成データのリアルタイム分析)またはSearch(ネットワーク内のアプリケーションを強化する全文検索)を選択する Choose an AWS KMS key:AWS所有のキーまたはAWS KMSカスタマーマネージドキーを選択する Access collections from:PublicまたはVPC(VPCエンドポイント)を選択する Enable access to OpenSearch endpoints:OpenSearchエンドポイントへのアクセスを有効にするかどうか Enable access to OpenSearch Dashboards:OpenSearch Dashboardsへのアクセスを有効にするかどうか Access policy name:アクセスポリシーの名称 Access policy description:アクセスポリシーの説明 Rule name:アクセスポリシーに含めるルール名 Select principals:ルールで対象とするプリンシパルをIAMユーザーまたはロール、SAMLユーザーまたはロールで選択する Alias and templates permissions:ルールで許可するエイリアスとテンプレートのアクセスを選択する(Create、Describe、Update、Delete) Index permissions:ルールで許可するインデックスの権限を選択する(Create、Describe、Update、Delete、Read documents、Write or update documents)
Amazon OpenSearch Serverlessの料金
Amazon OpenSearch Serverlessのアジアパシフィック(東京, ap-northeast-1)リージョンにおけるvCPU、メモリの料金は次のようになっています。
OpenSearch Compute Unit(OCU) - Indexing:0.334(USD/時間) OpenSearch Compute Unit(OCU) - Search and Query:0.334(USD/時間)
1 OCUで6GBメモリが割り当てられ、メモリ容量に比例したCPUとネットワークパフォーマンスが提供されます。
プロビジョニング型とServerlessオプションの料金比較
プロビジョニング型とServerlessオプションの料金は適しているユースケースが異なるため、ユースケースに合わせて料金シミュレーションをすることが必要です。
ただ、ここでは単純に同様の条件下で料金を比較してみます。
Amazon OpenSearch Serverlessで5 OCU(30GBメモリ)をすべて使用する処理を1時間実行した料金を計算すると次のようになります。
5(OCU) * 0.334(USD/時間) * 1(時間) = 1.67 USD
プロビジョニング型のAmazon OpenSearch Serviceクラスターで使用できる同程度のオンデマンドインスタンスタイプi3.xlarge.search(4vCPU、30.5GBメモリ)の料金は0.586(USD/時間)となっています。
そのため、コンピューティング料金に関して継続的に同じリソース量をフル使用する場合はAmazon OpenSearch Serverless料金は割高といえます。
ただし、これは単純な机上比較であり、一般的に複数インスタンスから構成されるクラスターの使い方によっては一概に比較できないため、「AWSサービスのServerlessオプション、オンデマンドモードの特徴・比較・まとめ・プロビジョニングとの違い」の記事に記載したユースケースを考慮して実際のより具体的な使用パターンごとにコスト計画をする必要があるでしょう。
Amazon OpenSearch Serverlessの制限事項
Amazon OpenSearch Serverlessの主な制限事項には次のものが挙げられます。
- 一部のOpenSearch API操作がサポートされていない。
- 一部のOpenSearchプラグインがサポートされていない。
- 検索クエリとインデックスクエリが減少するため、スケールダウンできない。
- OpenSearch ServiceドメインからOpenSearch Serverlessコレクションにデータを自動的に移行する方法はない。
- OpenSearch Serverlessコレクションへのクロスアカウントアクセスはサポートされていない。
- 暗号化またはデータアクセスポリシーに他のアカウントからのコレクションを含めることはできない。
- カスタムOpenSearchプラグインがサポートされていない。
- OpenSearch Serverlessコレクションのスナップショットを取得または復元することはできない。
- クロスリージョン検索とレプリケーションはサポートされていない。
- 1つのアカウントとリージョンで使用できるOpenSearch Serverlessリソース数に制限があある。
- インデックスの更新間隔はリクエストのサイズに応じて10~30 秒になる場合がある。
<参考資料>
Amazon OpenSearch Serverless (preview) - Amazon OpenSearch Service
Amazon OpenSearch Service Pricing
Tech Blog with related articles referenced
まとめ
今回は「AWSサービスのServerlessオプション、オンデマンドモードの特徴・比較・まとめ・プロビジョニングとの違い」の記事の一部としてクラスターやインスタンスをプロビジョニングするAWSサービスの一部で用意されているServerlessオプションについてまとめました。
「AWSサービスのServerlessオプション、オンデマンドモードの特徴・比較・まとめ・プロビジョニングとの違い」ではServerlessオプション、オンデマンドモードの特徴、共通点、ユースケース、比較についてまとめていますのであわせて御覧ください。