Amazon Timestream for InfluxDBを試した所感 (2024年3月時点)

2024.03.16

しばたです。

先日よりAmazon TimestreamでInfluxDBデータベースの構築が可能になりました。
DevelopersIOでも弊社市田が試してみた記事を公開しています。

私も昨日から軽く試しておりブログを書く予定だったのですが、市田に先を越されてしまったので本記事では気になった点を中心に共有したいと思います。

Amazon Timestream for InfluxDBは独立したサービス

マネジメントコンソールのUI上ではAmazon Timestreamのいち機能の様な形で存在していますが、内部的には独立したサービスとして扱われておりAPIも分かれています。

AWS CLIもaws timestream-influxdbコマンドという形で独立しています。

Amazon Timestreamデータベースとの差異

Amazon Timestream for InfluxDBはどちらかというとRDSやDocumentDBの仲間と考えたほうが良さそうです。
通常のAmazon Timestream (for LiveAnalytics)はVPCに依存しないAWS独自の時系列データベースですが、Amazon Timestream for InfluxDBはVPC内にAWSマネージドなInfluxDBデータベースを提供するサービスとなります。

極めて簡単に両者を比較するとこんな感じであり、両者に互換性は無くそれぞれ独立しています。

項目 Timestream for LiveAnalytics Timestream for InfluxDB
データベース AWS独自(非公開) OSS版InfluxDB
ネットワーク 非VPC 要VPC
データアクセス AWSのAPI InfluxDBのAPI
スケーラビリティ スケーラブル 本日時点では極めて限定的

利用可能リージョン

AWS News BlogによればAmazon Timestreamが利用可能な以下のリージョンでInfluxDBも作成可能とされていました。

  • バージニア北部
  • オハイオ
  • オレゴン
  • ムンバイ
  • シンガポール
  • シドニー
  • 東京
  • フランクフルト
  • アイルランド
  • ストックホルム

ただ、

  • ムンバイ
  • ストックホルム

については本日時点でAmazon Timestream自体が使えないリージョンのため、こちらについてはおそらく近日中に使える様になるのかなと予想します。

費用感

利用料金については公式ページでご確認ください。

インスタンスタイプに応じた利用料金とストレージ容量に応じた費用がかかります。
また、ストレージはIOPSに応じた3 Tier(3000IOPS, 12000IOPS, 16000IOPS)用意されており、高性能なTierほどGB当たりの単価が高くなっています。

本日時点の東京リージョンで最低限のスペックにした場合

  • db.influx.medium (1vCPU, 8GB memory) : 0.142 USD/時
    • Multi-AZ構成時は倍額
  • ストレージ (3000IOPS Tier) : 0.12 USD/GB月
    • 最低20GBから
    • Multi-AZ構成時は倍額

となり、ざっくり

  • インスタンス利用料金 : 0.142 * 24 * 30 = 102.24 USD/月
  • ストレージ利用料金 : 0.12 * 20 = 2.4 USD/月

な費用感です。

インスタンスの更新

こちらは今後改善されると思いますが、本日時点においては一度作成したインスタンス設定はほぼ変更不可能です。
変更可能なのは

  • ログ保存用S3バケットの場所
  • パラメーターグループ

だけであり、パラメーターグループも別のものに差し替える形で設定変更する形式となっています。

運用上必須であろう、

  • インスタンスタイプ
  • 配置サブネット
  • セキュリティグループ割り当て
  • ストレージTierや容量

はまだ変更できません。
流石にこれらの項目が今後も変更不可のままなハズが無いと信じています。

余談 : スケーラビリティについて

本日時点のAmazon Timestream for InfluxDBは

  • 最大インスタンスタイプ : db.influx.16xlarg (64vCPU, 512GiB memory)
  • 最大ストレージ容量 : 16,384GiB

であり用途によってはこれでも足りない場合があるかもしれません。
マネジメントコンソールからインスタンスを作成しようとすると、

といった感じで大規模環境ではInfluxDB Cloud Dedicatedの利用を薦めてくることもあり、Amazon Timestream for InfluxDBは小・中規模環境での利用を想定してる様です。

バックアップ・リストア

こちらも今後に期待したいところですが、本日時点ではデータベースのバックアップ・リストアに関する設定が一切ありませんでした。

influx backupinflux restoreコマンドは使えたので現時点ではクライアント環境にバックアップを保存する運用をする必要があります。

# Windowsクライアント環境でinflux bakcupコマンドを実行した例
PS C:\> influx backup C:\temp\
2024/03/16 02:01:58 WARN: Couldn't parse version "dev" reported by server, assuming latest backup/restore APIs are supported
2024/03/16 02:01:58 INFO: Downloading metadata snapshot
2024/03/16 02:01:58 INFO: Backing up TSM for shard 1

# そのままリストアもしてみる
PS C:\> influx restore C:\temp\ --bucket bucket1 --new-bucket bucket1-restored
2024/03/16 02:09:02 WARN: Couldn't parse version "dev" reported by server, assuming latest backup/restore APIs are supported
2024/03/16 02:09:02 INFO: Restoring bucket "f5a2211d53fb8b18" as "bucket1-restored"
2024/03/16 02:09:02 INFO: Restoring TSM snapshot for shard 2

なお、コマンド実行時に出ている警告メッセージ

WARN: Couldn't parse version "dev" reported by server, assuming latest backup/restore APIs are supported

は無視して構わないそうです。

InfluxDBのバージョン

AWS News BlogによればInfluxDBのバージョンはOSS版の2.7.5と互換があるとされています。
ただ、実環境を作ってバージョンチェックしてみたのものの、実際に利用されているバージョンを取得することはできませんでした。

# /ping にアクセスしてバージョンの取得を試みるも dev とだけ返されてしまう
PS C:\> curl.exe -skL -I https://<database-endpoint>.ap-northeast-1.timestream-influxdb.amazonaws.com:8086/ping
HTTP/1.1 204 No Content
Vary: Accept-Encoding
X-Influxdb-Build: OSS
X-Influxdb-Version: dev
Date: Fri, 15 Mar 2024 09:27:04 GMT

「X-Influxdb-Version: dev」とバージョンdevとだけ返されてしまいました。
先述の警告メッセージの件からもわかる様に具体的なバージョン番号は隠匿されている模様です。

InfluxDB UI

パブリックアクセス不可にしてインスタンスを作成した場合、マネジメントコンソールからInfluxDB UIへ遷移することはできません。

ただし、InfluxDB UI自体が無効になっているわけではないのでVPC内部からエンドポイントURLにアクセスしてやればInfluxDB UIを利用可能です。

(VPC内部からならInfluxDB UIにアクセス可能)

CloudWatchメトリクス

Amazon Timestream側では確認できませんが、以下のCloudWatchメトリクスが自動で取得されます。

  • CPUUtilization
  • MemoryUtilization
  • DiskUtilization

サービス権限まわり

Amazon Timestream for InfluxDBのサービス周りの権限は新設のAWSServiceRoleForTimestreamInfluxDBロールに記述されています。 (権限そのものはAmazonTimestreamInfluxDBServiceRolePolicyポリシーに記載)

このサービスロールにはS3へのアクセス権は無く、ログを出力するS3には以下のバケットポリシーを設定してサービスからのアクセスを許可する必要があります。

ログ用S3バケットポリシー

{
    "Version": "2012-10-17",
    "Id": "PolicyForInfluxLogs",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "timestream-influxdb.amazonaws.com"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::{BUCKET_NAME}/InfluxLogs/*"
        }
    ]
}

Secrets Manager

インスタンス作成時の認証情報がREADONLY-InfluxDB-auth-parametersで始まるシークレットに保存されます。

READONLYと付いている様に運用時に値を更新してもシークレットには反映されません。

最後に

以上となります。

リリース直後という事もありまだまだ粗さを感じる部分があるなというのが率直なところです。
とはいえ随時改善されていくでしょうし、すぐにマネージドサービスであるメリットを得られると思います。

EC2でInfluxDBを運用している方はAmazon Timestream for InfluxDBを採用できるか検討してみると良いでしょう。