Amazon DynamoDBのバックアップ・リストア方法について整理する

# 1. はじめに
本記事では、Amazon DynamoDBのバックアップ・リストア方法を紹介し、それぞれの特徴を整理します。実際にバックアップからリストアまでのやり方についても記載しています。
今回は以下の5つの方法を紹介します。
- [DynamoDBのオンデマンドバックアップ機能](#3-dynamodbのオンデマンドバックアップ機能)
- [AWS Backupのオンデマンドバックアップ機能](#4-aws-backupのオンデマンドバックアップ機能)
- [AWS Backupのバックアッププラン機能](#5-aws-backupのバックアッププラン機能)
- [DynamoDBのポイントインタイムリカバリ(PITR)機能](#6-dynamodbのポイントインタイムリカバリpitr機能)
- [DynamoDBのS3へのエクスポート・インポート機能](#7-dynamodbのs3へのエクスポートインポート機能)

# 2. いきなりまとめ
3章以降で、それぞれのバックアップ・リストア方法について詳細を説明します。以下の表は、早見表としてそれぞれの特徴を比較するできるように作成しました。
||DynamoDBのオンデマンドバックアップ|AWS Backupのオンデマンドバックアップ|AWS Backupのバックアッププラン|DynamoDBのポイントインタイムリカバリ(PITR)機能|DynamoDBのS3へのエクスポート・インポート機能|
|----|----|----|----|----|----|
|バックアップ|フルバックアップ|フルバックアップ|フルバックアップ|増分バックアップ|フルバックアップと増分バックアップ選択可能|
|バックアップ方法|手動|手動|自動|自動|手動|
|保持期間|指定不可<br>(無期限)|1日～無期限<br>指定可能|1日～無期限<br>指定可能|35日前～5分前<br>自動保存|指定可能（S3のライフサイクルルール設定必要）<br>PITRを使用するため、エクスポート可能なのは直近35日間のデータのみ|
|バックアップ形式|テーブル|テーブル|テーブル|テーブル|JSON/Amazon Ion|
|バックアップ保存場所|DynamoDB|AWS Backupバックアップボールト|AWS Backupバックアップボール|DynamoDB|S3バケット|
|リストア方法|バックアップからの復元|バックアップからの復元|バックアップからの復元|復元ポイントを指定して復元|S3ファイルから新規テーブルを作成|
|考えられる主な用途|現時点や特定の時点でのテーブルのバックアップをすぐに取りたいとき|左に加えて、AWS Backup側でまとめてバックアップデータを管理したいとき|定期的にバックアップを取得したいとき|定期的なバックアップ取得を簡単に行いたいとき（ただし35日以上の保持要件がない場合）|テーブルデータをファイル形式で保管したいとき、バックアップデータを安価に保管したいとき|

# 3. DynamoDBのオンデマンドバックアップ機能
## 3-1. 概要
DynamoDBのコンソールから、DynamoDBテーブルごとのバックアップを手動で取得する方法です。
## 3-2. 特徴
### 3-2-1. バックアップ
機能はとてもシンプルで、テーブルを指定しバックアップ名を設定するだけでバックアップを作成することができます。

**フルバックアップ**
オンデマンドバックアップを作成するたびにテーブルデータ全体がバックアップされます。

**保存期間指定不可**
バックアップは手動で削除しないかぎり消えません。

### 3-2-2. リストア
**新規のテーブルとして作成**
リストアは新規のテーブルとして作成されます。必要な設定項目は以下になります。
- テーブル名
- セカンダリインデックスをリストアに含むかどうか
- テーブルをリストアするリージョン
- 暗号化

:::note warn
以下の項目についてはリストア後に手動で設定変更が必要になります。元のテーブルの設定は引き継がれないためご注意ください。
- Auto Scalingポリシー
- IAMポリシー
- Amazon CloudWatch メトリクスおよびアラーム
- タグ
- ストリーム設定
- 有効期限 (TTL) 設定
- 削除保護設定
- ポイントインタイムリカバリ (PITR) 設定
:::

## 3-3. 料金
バックアップとリストアにかかる料金を分けて紹介します。
なお、今回は東京リージョンの価格で計算しています。

バックアップストレージ料金：USD 0.114/GB -月
リストア料金(1回あたり)：USD 0.171/GB

## 3-4. 手順
### 3-4-1. バックアップ手順
1. バックアップ設定への移動
バックアップを取得するDynamoDBテーブルのバックアップタブを開き、バックアップの作成をクリック。オンデマンドバックアップの作成を選択する。（ここで、`バックアップのスケジュールを設定`を選択すると、後ほど説明するAWS Backupのバックアッププラン機能を使ったバックアップの作成ができる。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/e4a6d35e-dc34-54cd-264a-a4058e4c7b44.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/c8c9ac76-0dda-c512-0515-35e58dc40150.png)
2. バックアップを作成
DynamoDBの機能でバックアップを作成するには、`設定をカスタマイズ`を選択し、`バックアップの管理`で`DynamoDBを使用したバックアップ`を選択する。
バックアップ名を指定し、バックアップを作成する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/bd544277-c069-46b7-e29c-e8dd2ad4e527.png)
3. バックアップ作成完了
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/81059b43-c98d-47b0-d401-59cb891b07b9.png)


### 3-4-2. リストア手順
1. リストアするテーブルを選択し、復元をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/2326a34d-d1f6-6ea3-c427-b3291cd2f9de.png)

2. リストアするテーブルの設定を行う
    - テーブル名
    - セカンダリインデックス復元の有無
    - 復元先リージョン
    - 暗号化キーの選択
上記の設定ができたら、`復元`を実行する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/e46fbaff-866d-8354-3341-3be0d70c334e.png)
3. DynamoDBテーブルが作成されていることを確認
作成はテーブルのサイズに応じて10分以上かかる場合があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/802f7c28-23e2-d072-a7dc-6e8bcd24e0ed.png)
4. テーブルがアクティブになり、項目数が取得できることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/1a1d040d-8f54-11ac-a23c-039528c3b454.png)



# 4. AWS Backupのオンデマンドバックアップ機能
## 4-1. 概要
AWS Backupにあるオンデマンドバックアップ機能を使って、バックアップを取得する方法です。DynamoDBのオンデマンドバックアップ機能と似ていますが、より柔軟な設定が可能になります。
## 特徴
DynamoDBのオンデマンドバックアップとの差分を中心に特徴を紹介します。

### 4-1-1. バックアップ
**バックアップの保持期間を指定**
1日～永続で選択できます。

**バックアップストレージの選択**
通常バックアップはウォームストレージに保管されますが、コールドストレージに移行する設定が可能です。
コールドストレージはウォームストレージに比べてバックアップストレージ料金が安いですが、その代わりにリストア料金が高いため、頻繁にリストアしないバックアップを保管する際に活用できます。
コールドストレージに移行されたバックアップは、コールドストレージに最低90日保存される必要があります。
AWSは8日間以上ウォームストレージに保管することを推奨しています。

:::note warn
コールドストレージの機能を使用するには、DynamoDBのバックアップ設定から、`AWS Backupの高度な機能`を有効化する必要があります。有効化することによる追加費用はかかりません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/bcc036dd-091d-c0e7-8e6a-ae4094ba6373.png)
:::

**バックアップボールトの選択**
バックアップボールトは、バックアップを整理するためのコンテナで、色々なサービスのバックアップをまとめて管理することができます。バックアップボールトでは暗号化キーやアクセスポリシーを指定できます。

**バックアップ作成時のIAMロールの指定**
AWS Backupがバックアップを作成するため、バックアップ作成時に使用するIAMロールを指定する必要があります。デフォルトのロールまたは任意のロールを指定することができます。

### 4-1-2. リストア

**新規のテーブルとして作成**
リストアは新規のテーブルとして作成されます。必要な設定項目は以下になります。
- テーブル名
- 暗号化
- リストア時に使用するIAMロール

AWS Backupを使用したバックアップの場合、インデックスは元のテーブルの設定が自動で引き継がれて復元されます。
別のリージョンで復元を実施する場合、取得したバックアップを別リージョンへコピーして、コピーしたリージョンから復元する必要があります。

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/CrossRegionAccountCopyAWS.html

:::note warn
以下の項目についてはリストア後に手動で設定変更が必要になります。元のテーブルの設定は引き継がれないためご注意ください。
- Auto Scalingポリシー
- IAMポリシー
- Amazon CloudWatch メトリクスおよびアラーム
- タグ
- ストリーム設定
- 有効期限 (TTL) 設定
- 削除保護設定
- ポイントインタイムリカバリ (PITR) 設定
:::

## 4-2. 料金
[DynamoDBのオンデマンドバックアップ](#3-3-料金)と同じ料金体系のため、こちらでの説明は割愛します。

## 4-3. 手順
### 4-3-1. バックアップ手順
1. DynamoDBのバックアップ機能を使用するときと同じように、バックアップを実施するテーブルのバックアップタブから、`バックアップの作成`をクリックし、`オンデマンドバックアップの作成`をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/1359944f-0087-9261-acca-61852bbae5a1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/c8c9ac76-0dda-c512-0515-35e58dc40150.png)
2. `AWS Backupを使用したバックアップ`を選択し、バックアップの設定をする
    - バックアップ期間
        - 1時間以内に開始する場合は`今すぐバックアップを作成`を選択、時間を指定する場合は`バックアップ期間をカスタマイズ`を選択
    - コールドストレージへの移行有無
        - 移行する場合は、コールドストレージに移行する前にウォームストレージに保持する期間を選択
    - 保持期間
        - バックアップを保持する合計期間を選択
    - バックアップボールトの選択
    - IAMロールの選択
    - タグの追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/7f961bf8-20e1-5f19-72a5-95197dbf4874.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/a0d9d124-fafe-743a-9eab-ae94c2fc9a0c.png)
3. バックアップ作成完了。`今すぐバックアップを作成`を選択しても、バックアップが作成されるまで1時間程度かかる可能性があるので注意。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/1740e62e-a09c-020c-5c95-2c9958bfefb4.png)



### 4-3-2. リストア手順
1. 先ほど作成されたバックアップを選択し、復元をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/1d595fa6-7702-1f52-48e5-113f0dba5a76.png)
2. リストアするテーブルの設定を行う
    - テーブル名
    - 暗号化キーの選択
    - 復元時に使用するロールを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/1cdf42a4-9518-7b2e-195c-792a46ced66a.png)
3. DynamoDBテーブルが作成されていることを確認
作成はテーブルのサイズに応じて10分以上かかる場合があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/563d0af2-0a43-7313-8933-b29ccd463169.png)
4. テーブルがアクティブになり、項目数が取得できることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/d67f4113-047b-8e5e-0932-72c8914782a6.png)


# 5. AWS Backupのバックアッププラン機能
## 5-1. 概要
AWS Backupの機能であるバックアッププランを作成しリソース割り当てでDynamoDBテーブルを割り当てることで、バックアップを実施することができます。
複数のリソースのバックアップを同じルールで取りたいときに、プランを作成することでまとめて管理することができます。
## 5-2. 特徴

### 5-2-1. バックアップ
AWS Backupのオンデマンドバックアップ機能との差分は前述のとおり、バックアッププランに対して複数のリソースを割り当てることができることに加えて以下の点になります。

**バックアップの頻度**
バックアップ頻度は、12時間ごと・毎日・毎週・毎月から選択できます。cron式を指定することもできます。

**ライフサイクル設定**
通常バックアップはウォームストレージに保管されますが、コールドストレージに移行する設定が可能です。
コールドストレージはウォームストレージに比べてバックアップストレージ料金が安いですが、その代わりにリストア料金が高いため、頻繁にリストアしないバックアップを保管する際に活用できます。
コールドストレージに移行されたバックアップは、コールドストレージに最低90日保存される必要があります。
AWSは8日間以上ウォームストレージに保管することを推奨しています。

**別リージョンへのコピー**
オプションで、別リージョンへのバックアップのコピーを作成する設定をすることができます。
別アカウントへのコピーも可能です。
上述のライフサイクル設定は、元のリージョンと異なる設定にカスタマイズもすることができます。

:::note warn
コールドストレージやバックアップのコピーの機能を使用するには、DynamoDBのバックアップ設定から、`AWS Backupの高度な機能`を有効化する必要があります。有効化することによる追加費用はかかりません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/bcc036dd-091d-c0e7-8e6a-ae4094ba6373.png)
:::

### 5-2-2. リストア

**新規のテーブルとして作成**
リストアは新規のテーブルとして作成されます。必要な設定項目は以下になります。
- テーブル名
- 暗号化
- リストア時に使用するIAMロール

AWS Backupを使用したバックアップの場合、インデックスは元のテーブルの設定が自動で引き継がれて復元されます。
別のリージョンで復元を実施する場合、バックアッププランの設定で別リージョンへのコピーを設定しておくか、オンデマンドバックアップの時と同様に、1バックアップ単位で別リージョンへコピーして、コピーしたリージョンから復元する必要があります。

:::note warn
以下の項目についてはリストア後に手動で設定変更が必要になります。元のテーブルの設定は引き継がれないためご注意ください。
- Auto Scalingポリシー
- IAMポリシー
- Amazon CloudWatch メトリクスおよびアラーム
- タグ
- ストリーム設定
- 有効期限 (TTL) 設定
- 削除保護設定
- ポイントインタイムリカバリ (PITR) 設定
:::

## 5-3. 料金
バックアップとリストアにかかる料金を分けて紹介します。
なお、今回は東京リージョンの価格で計算しています。
下記の料金は1回のバックアップストレージにかかる料金のため、バックアップ頻度や保持期間に応じて合計のストレージ料金を計算する必要があります。

:::note warn
DynamoDBはAWS Backupの増分バックアップ機能に対応していないため、毎回テーブル全体のバックアップが行われます。料金もその前提で計算する必要があります。
:::

**バックアップ**
ウォームストレージの料金：USD 0.114/GB -月
コールドストレージの料金：USD 0.0342/GB -月

**リストア**
ウォームストレージからのリストア料金(1回あたり)：USD 0.171/GB
コールドストレージからのリストア料金(1回あたり)：USD 0.228/GB

## 5-4. 手順
### 5-4-1. バックアップ手順
1. AWS Backupのコンソールを開き、ダッシュボードから`バックアッププランを作成`をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/b7fb54da-2cd6-d420-3272-f7139bae4340.png)

2. バックアッププランを設定する
今回は`新しいプランを立てる`から設定をする。JSON形式で設定する方法や、AWS Backupが提供するテンプレートでプランを簡単に設定する方法もあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/1a961820-afcc-7819-8702-bfba31ed12ce.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/56babb6b-b1ff-ee3e-0dc3-2f0c95d8e5c6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/f98a1ca3-9765-6356-b849-ce8f194ba151.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/e168ae46-7dda-027e-4b29-d3001a7398c1.png)
3. リソースの割り当てを設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/cb244503-920e-b6d5-0416-cea2ce22ef2f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/45ecf1e1-741c-711b-f5b6-3a3dcbbecded.png)
4. 設定したバックアップ開始時間以降にバックアップが作成されたことを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/cc6d73df-e549-0adb-f1d0-34b374b7fad2.png)


### 5-4-2. リストア手順
1. 先ほど作成されたバックアップを選択し、復元をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/b0637d5a-6aaa-161a-5013-19d54d312241.png)

2. リストアするテーブルの設定を行い、復元を実行する
    - テーブル名
    - 暗号化キーの選択
    - 復元時に使用するロールを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/00ead1a4-a6b5-266e-b9c7-6bb2223b164d.png)

3. DynamoDBテーブルが作成されていることを確認
作成はテーブルのサイズに応じて10分以上かかる場合があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/7cb860dc-dbbc-a4d9-08e8-379c8aebe79c.png)
4. テーブルがアクティブになり、項目数が取得できることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/6082b0b4-a90e-a90e-91f1-e90675d6b8ab.png)




# 6. DynamoDBのポイントインタイムリカバリ(PITR)機能
## 6-1. 概要
過去35日間～5分前の任意の時点にテーブルを復元することができる機能です。誤ってデータ削除や上書きをしてしまった際に、正常な状態に戻すことができます。

## 6-2. 特徴
ポイントインタイムリカバリには以下の特徴があります。

### 6-2-1. バックアップ
**秒単位で復元時点の指定が可能**
復元したい時点を秒単位で指定することができます。

**自動バックアップ**
PITRを有効にするだけで、自動でバックアップが実行されます。

### 6-2-2. リストア
**新規のテーブルとして作成**
リストアは新規のテーブルとして作成されます。必要な設定項目は以下になります。
- テーブル名
- セカンダリインデックスをリストアに含むかどうか
- テーブルをリストアするリージョン
- 暗号化

**復元したい日時を指定**
最新の時間または秒単位で時間を指定することができます。

:::note warn
以下の項目についてはリストア後に手動で設定変更が必要になります。元のテーブルの設定は引き継がれないためご注意ください。
- Auto Scalingポリシー
- IAMポリシー
- Amazon CloudWatch メトリクスおよびアラーム
- タグ
- ストリーム設定
- 有効期限 (TTL) 設定
- 削除保護設定
- ポイントインタイムリカバリ (PITR) 設定
:::

## 6-3. 料金
バックアップとリストアにかかる料金を分けて紹介します。
なお、今回は東京リージョンの価格で計算しています。

**バックアップ**
PITRの料金：USD 0.228/GB-月
PITRが有効になっているDynamoDBテーブルのサイズが毎月継続的にモニタリングされ、バックアップ料金が決定されるようになっています。

**リストア**
リストア料金(1回あたり)：USD 0.171/GB

## 6-4. 手順
### 6-4-1. バックアップ手順
1. テーブルのバックアップから、`ポイントインタイムリカバリ(PITR)`の`編集`をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/ff9a97c6-12dc-6b91-9f4c-bc17540c5977.png)
2. `ポイントインタイムリカバリの有効化`にチェックを入れて、変更を保存する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/3fa03245-d2a4-3f1a-7a00-a87b133623af.png)
3. 状態がオンになり、復元ポイントが表示されることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/5777c4c1-8f78-4e84-7b08-60468696f292.png)

### 6-4-2. リストア手順
1. ポイントインタイムリカバリの`復元`をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/4171cb3a-30a1-3e93-ad24-e3ba5144006c.png)
2. リストアするテーブルの設定を行い、復元を実行する
    - テーブル名
    - ポイントインタイムリカバリで、復元するポイントを指定する
    - セカンダリインデックスの復元有無の選択
    - 復元先リージョンの選択
    - 暗号化キーの選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/6751cceb-0342-904f-4670-54981a554506.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/24e835fe-81dc-af0b-df63-26b554a3087d.png)
3. DynamoDBテーブルが作成されていることを確認
作成はテーブルのサイズに応じて10分以上かかる場合があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/28541e3d-6ed9-77dc-a1d0-b8ba9959dede.png)
4. テーブルがアクティブになり、項目数が取得できることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/0f8dcf1d-5a56-aa08-478f-507ad9ebde96.png)


# 7. DynamoDBのS3へのエクスポート・インポート機能
## 7-1. 概要
DynamoDBのテーブルデータをS3バケットにエクスポートすることでバックアップとして保存することができます。エクスポートは手動で実行します。
エクスポートしたデータは、インポート機能でDynamoDBテーブルにインポートされます。インポート時は新しいテーブルが作成され、既存のテーブルへのインポートはサポートされていません。

:::note info
S3エクスポートは、PITRの任意の時点を選択してエクスポートすることができます。そのため、PITRを有効化する必要があります。
:::

## 7-2. 特徴
### 7-2-1. エクスポート

**S3バケットの指定**
エクスポートするS3バケットを指定する必要があります。
バケットの所有者は、同じAWSアカウントまたは別のAWSアカウントを指定します。

**フルエクスポートと増分エクスポート**
エクスポートは、フルエクスポートと増分エクスポートを選択できます。
フルエクスポートは、現時刻または任意の時刻を指定し、その時点でのテーブルデータがエクスポートされます。
増分エクスポートは、指定した期間中テーブルに加えられた変更のうち最終状態がエクスポートされます。

**エクスポートのファイル形式**
JSON形式と、Amazon Ion形式を選択できます。

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/S3DataExport.Output.html

### 7-2-2. インポート
**インポートするファイルの形式**
ファイル形式は、CSV・DynamoDB JSON・Amazon Ion形式から選択できます。

**ファイルの圧縮タイプ**
圧縮（ZSTDまたはGZIP）と非圧縮形式を選択できます。

**テーブル設定**
インポート時は新しいテーブルを作成します。既存のテーブルへのインポートは現時点ではサポートされていません。
新規テーブルの作成になるため、テーブル作成時の設定が必要になります。


## 7-3. 料金
エクスポートとインポートの料金のほかに、ポイントインタイムリカバリ(PITR)の料金やS3へのデータ保存料金がかかります。
バックアップデータの保管料金はS3バケットのストレージ料金に準ずるため、他のバックアップに比べて安価に保管することができます。

**バックアップ**
- エクスポート：USD 0.114/GB
- PITR：USD 0.228/GB-月
- S3への保管：USD 0.025/GB-月

**リストア**
インポート：USD 0.171/GB



## 7-4. 手順
### 7-4-1. エクスポート手順
1. 事前にエクスポートするS3バケットを用意しておく
2. テーブルの`エクスポートおよびストリーム`タブを開き、`S3エクスポート`をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/afd17cda-dee2-a78d-db8e-f736ee3ad48f.png)
3. 以下の設定を行い、エクスポートを実行する
    - 送信先S3バケットの指定
    - バケットの所有アカウントの指定
    - フルエクスポートか増分エクスポートかの選択
    - エクスポートする時点の選択
    - エクスポートするファイル形式の選択
    - 暗号化タイプの選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/0d7658dd-6abf-a64b-1b92-447256ea7459.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/59d22b55-80b9-b3a9-3d31-1c12c4d2034f.png)
4. エクスポートが実行されていることを確認
エクスポートには10分以上かかることがある
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/63277eb7-dbd4-f727-5c02-dbd74a3db94e.png)
5. エクスポートが完了したら、S3バケットにファイルが保存されたことを確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/8228aa51-ef4e-a31b-1937-722ab5da76b3.png)


### 7-4-2. インポート手順
1. DynamoDBのコンソールから`S3からのインポート`を開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/e4da5c76-b713-a14e-660f-0b5fe54113ce.png)

2. インポートの設定を行う
    - ソースS3URLの選択
        - DynamoDBからS3エクスポートしたデータをインポートする場合は、`s3://bucket/prefix/AWSDynamoDB/<XXXXXXXX-XXXXXX>/data/`を指定する
    - S3バケット所有者の選択
    - ソースファイルの圧縮タイプの選択
    - ソースファイルのフォーマットの選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/d5ab2e18-8558-6ba9-dc21-beb65ac4df36.png)
3. テーブルの詳細設定を行う
    - テーブル名
    - パーティションキー・ソートキー
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/de094b39-0097-efb4-a8ff-aef8643e5466.png)
4. テーブルの構成設定を行う
    - 読み込み/書き込みキャパシティの設定
    - グローバルセカンダリインデックス
    - 暗号化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/8e46613c-7ae8-0c96-7fb6-c0519df626d7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/74af5162-ce69-9d4c-33cf-0185d9260411.png)
5. インポートが開始されたことを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/0928c3a7-ee10-a95b-1da9-c18dad8e8313.png)
数分後に完了したことを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/21e668d1-57b9-0c59-ec76-38eb45bf0739.png)
6. テーブルがアクティブになり、項目数が取得できることを確認
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2981404/fec1b0d2-689c-2e5c-2f6d-05a6909c36c7.png)



# 8. まとめ
DynamoDBのテーブルのバックアップ・リストアについて5つの方法を紹介しました。
DynamoDBを使用するかAWS Backupを使用するかS3を使用するかで、設定項目や可能なことが変わってくるため、その都度適切な方法を選択できるよう、それぞれの方法の特徴を頭に入れておきたいと思います。