こんにちは。アプリケーションサービス部の兼安です。
本記事は時系列データに特化したDB、Amazon Timestreamのバックアップとリストアについての記事です。
本記事の対象者
- Amazon Timestreamで、本番を意識した運用を行いたい方
- Amazon TimestreamとAWS Backupの基礎知識を持っている方
Amazon TimestreamとAWS Backupの基本操作については割愛してるのでご了承ください。
Amazon Timestreamのバックアップ
まずは、バックアップの方法について説明します。
Amazon Timestreamのバックアップは、AWS Backupを使用して行います。
基本的に操作はこちらのAWS公式ページの手順に従います。
オンデマンドバックアップの作成
まずは、オンデマンドバックアップの作成方法について説明します。
AWS Backupのナビゲーションペインで、保護されたリソースをクリック、オンデマンドバックアップを作成をクリックします。

作成画面で、必要な情報を入力していきます。
まずは、リソースタイプにTimestreamを選択して、テーブルを選択します。

バックアップボールトとIAMロールを選択して、オンデマンドバックアップを作成をクリックすれば完了です。
バックアップジョブが始まり、一定時間後にバックアップができます。

スケジュールバックアップの作成
次に、スケジュールバックアップの作成方法について説明します。
スケジュールバックアップの場合は、事前にバックアッププランを作ります。
バックアッププランの画面で、画面下のリソースを割り当てるをクリックします。

オンデマンドバックアップの時とは画面構成が異なります。
まずは、名前とIAMロールを入力します。

特定のリソースタイプを含めるを選択し、リソースタイプにTimestreamを選択、そしてテーブル名を選択します。
あとは、リソースを割り当てるをクリックすれば完了です。

バックアップに必要なIAMロール
バックアップの手順の中で一番引っかかりやすいのは、IAMロールの設定です。
デフォルトを選んだ場合は問題ないのですが、独自のIAMロールを使用する場合は、こちらのページを参考にされるとよいと思います。
AWSBackupServiceRolePolicyForBackup — Amazon Timestream リソースのバックアップを AWS Backup に許可するアクセス許可を追加しました。
AWS Backup では、timestream:StartAwsBackupJob、timestream:GetAwsBackupStatus、timestream:ListTables、timestream:ListDatabases、timestream:ListTagsForResource、timestream:DescribeTable、timestream:DescribeDatabase および timestream:DescribeEndpoints のアクセス許可が追加されました。AWSBackupServiceRolePolicyForRestores — Amazon Timestream リソースの復元を AWS Backup に許可するアクセス許可を追加しました。
AWS Backup では、timestream:StartAwsRestoreJob、timestream:GetAwsRestoreStatus、timestream:ListTables、timestream:ListDatabases、timestream:ListTagsForResource、timestream:DescribeTable、timestream:DescribeDatabase、s3:GetBucketAcl および timestream:DescribeEndpoints のアクセス許可が追加されました。
timestream:StartAwsBackupJobやtimestream:DescribeEndpointsなど、知らなければ浮かばないようなポリシーが必要です。
Amazon Timestreamのリストア
バックアップができたので、次はリストアの方法について説明します。
リストア先は新しいテーブルができる
Amazon Timestreamのリストアはテーブル単位で行います。
リストアするとバックアップからテーブルそのものが新しくできます。
後で出てきますが、リストアでは特に何も指定しない場合、元のテーブル名 + _restoredという名前で新しいテーブルができます。
_restoredの部分を削除すれば元のテーブル名のままでリストアができますが、この場合は事前に元のテーブルは削除しておく必要があります。
リストアの手順
リストアの手順も基本的にAWSの公式ページの手順に従います。
docs.aws.amazon.com
AWS Backupのナビゲーションペインで、バックアップをクリック、一覧からリストアしたいバックアップを選択した状態で、復元をクリックします。

編集画面でリストアに必要な情報を入力していきます。
新しいテーブルの名前は、バックアップのテーブル名+_restoredが初期値として入っているはずです。
元のテーブル名のままでリストアしたい場合は、_restoredの部分の削除が必要です。
送信先データベースは、リストア先のデータベースを選択してください。

メモリストアの保持期間、マグネティックストアの保持期間、S3 エラーログの場所は、基本バックアップ元と同じ値がよいと思います。
ちなみに保持期間から外れたデータはリストアの過程で自動的に削除されるようです。

復元ロールを指定して、バックアップを復元をクリックして完了です。

復元ロールをIAMロールを選択とした場合は、バックアップ同様AWSの公式サイトを参考にしてポリシーを用意するとよいと思います。
AWS Backup 用の管理ポリシー - AWS Backup
なお、S3 エラーログの場所を指定した場合は指定したバケットに対する書き込みポリシーが必要なのも忘れないでください。
以上で、リストアの作業は完了です。
一定時間後にリストアしたテーブルが出来上がります。
レコードレベルでリストアするには
最後に、時系列DBだとあまりやらないかもしれませんが、レコードレベルでリストアする方法を考えます。
こちらは、エクスポート・インポート機能を駆使すれば実現できると思います。
エクスポート・インポートについてはこちらの記事をご覧ください。
リストアする時にテーブルを別名でリストアし、レコードをエクスポート。
エクスポートしたファイルを編集して、特定のレコードだけインポートの流れです。
兼安 聡(執筆記事の一覧)
アプリケーションサービス部 DS3課所属
2025 Japan AWS Top Engineers (AI/ML Data Engineer)
2025 Japan AWS All Certifications Engineers
2025 AWS Community Builders
Certified ScrumMaster
PMP
広島在住です。今日も明日も修行中です。
X(旧Twitter)