Amazon Timestreamのバックアップとリストアの方法

記事タイトルとURLをコピーする

こんにちは。アプリケーションサービス部の兼安です。
本記事は時系列データに特化したDB、Amazon Timestreamのバックアップとリストアについての記事です。

本記事の対象者

  • Amazon Timestreamで、本番を意識した運用を行いたい方
  • Amazon TimestreamとAWS Backupの基礎知識を持っている方

Amazon TimestreamとAWS Backupの基本操作については割愛してるのでご了承ください。

Amazon Timestreamのバックアップ

まずは、バックアップの方法について説明します。
Amazon Timestreamのバックアップは、AWS Backupを使用して行います。
基本的に操作はこちらのAWS公式ページの手順に従います。

docs.aws.amazon.com

オンデマンドバックアップの作成

まずは、オンデマンドバックアップの作成方法について説明します。
AWS Backupのナビゲーションペインで、保護されたリソースをクリック、オンデマンドバックアップを作成をクリックします。

「オンデマンドバックアップを作成」をクリック

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

「Timestream」を選択して必要な情報を入力

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

IAMロールなど、その他の情報を入力してボタンクリック

スケジュールバックアップの作成

次に、スケジュールバックアップの作成方法について説明します。

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

バックアッププランの画面で「リソースを割り当てる」をクリック

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

名前とIAMロールを入力

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

「Timestream」を選択して、テーブルを選択、そして「リソースを割り当てる」をクリック

バックアップに必要なIAMロール

バックアップの手順の中で一番引っかかりやすいのは、IAMロールの設定です。
デフォルトを選んだ場合は問題ないのですが、独自のIAMロールを使用する場合は、こちらのページを参考にされるとよいと思います。

docs.aws.amazon.com

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:StartAwsBackupJobtimestream:DescribeEndpointsなど、知らなければ浮かばないようなポリシーが必要です。

Amazon Timestreamのリストア

バックアップができたので、次はリストアの方法について説明します。

リストア先は新しいテーブルができる

Amazon Timestreamのリストアはテーブル単位で行います。
リストアするとバックアップからテーブルそのものが新しくできます。

後で出てきますが、リストアでは特に何も指定しない場合、元のテーブル名 + _restoredという名前で新しいテーブルができます。
_restoredの部分を削除すれば元のテーブル名のままでリストアができますが、この場合は事前に元のテーブルは削除しておく必要があります。

リストアの手順

リストアの手順も基本的にAWSの公式ページの手順に従います。
docs.aws.amazon.com

AWS Backupのナビゲーションペインで、バックアップをクリック、一覧からリストアしたいバックアップを選択した状態で、復元をクリックします。

バックアップを選択して、「復元」をクリック

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

送信先データベースは、リストア先のデータベースを選択してください。

新しいテーブルの名前には「_restored」が付いています。

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

保持期間などを入力

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

IAMロールを選択してボタンクリックで完了

復元ロールIAMロールを選択とした場合は、バックアップ同様AWSの公式サイトを参考にしてポリシーを用意するとよいと思います。
AWS Backup 用の管理ポリシー - AWS Backup

なお、S3 エラーログの場所を指定した場合は指定したバケットに対する書き込みポリシーが必要なのも忘れないでください。

以上で、リストアの作業は完了です。
一定時間後にリストアしたテーブルが出来上がります。

レコードレベルでリストアするには

最後に、時系列DBだとあまりやらないかもしれませんが、レコードレベルでリストアする方法を考えます。
こちらは、エクスポート・インポート機能を駆使すれば実現できると思います。
エクスポート・インポートについてはこちらの記事をご覧ください。

blog.serverworks.co.jp

リストアする時にテーブルを別名でリストアし、レコードをエクスポート。
エクスポートしたファイルを編集して、特定のレコードだけインポートの流れです。

兼安 聡(執筆記事の一覧)

アプリケーションサービス部 DS1課所属
AWS12冠。
広島在住です。
最近認定スクラムマスターになりました。今日も明日も修行中です。