

# Amazon RDS の DB スナップショットを共有する
<a name="USER_ShareSnapshot"></a>

Amazon RDS を使用すると、次の方法で手動 DB スナップショットを共有できます。
+ 手動 DB スナップショットを共有すると、暗号化されているかいないかに関係なく、権限のある AWS アカウント がスナップショットをコピーできるようになります。
+ 暗号化されていない手動 DB スナップショットを共有すると、権限のある AWS アカウント が、DB インスタンスをコピーしてそこから復元するのではなく、スナップショットから DB インスタンスを直接復元できるようになります。ただし、共有され暗号化された DB スナップショットから、DB インスタンスを復元することはできません。代わりに、DB スナップショットのコピーを作成し、そのコピーから DB インスタンスを復元できます。

**注記**  
自動 DB スナップショットを共有するには、自動 DB スナップショットをコピーしてそのコピーを共有することで、手動スナップショットを作成します。このプロセスは、AWS Backup で生成されたリソースにも適用されます。

スナップショットのコピーの詳細については、「[Amazon RDS の DB スナップショットのコピー](USER_CopySnapshot.md)」を参照してください。DB スナップショットから DB インスタンスを復元する方法については、「[DB インスタンスへの復元](USER_RestoreFromSnapshot.md)」を参照してください。

手動スナップショットを最大 20 のその他の AWS アカウント と共有することができます。

手動スナップショットを他の AWS アカウントと共有する場合には、以下の制限が適用されます。
+ AWS Command Line Interface (AWS CLI) または Amazon RDS API を使用して共有スナップショットから DB インスタンスを復元する際、スナップショット識別子として共有スナップショットの Amazon リソースネーム (ARN) を指定する必要があります。
+ 固定オプションまたは永続オプションを持つオプショングループを使用する DB スナップショットを共有することはできません。`Timezone` または `OLS` オプション (あるいはその両方) を持つ Oracle DB インスタンスを除きます。

  *固定オプション*はオプショングループから削除できません。永続オプションを含むオプショングループは、そのオプショングループが DB インスタンスに割り当てられると、DB インスタンスから削除できなくなります。

  次の表は、固定オプションおよび永続オプションと、それらに関連する DB エンジンをリストしています。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_ShareSnapshot.html)

  Oracle DB インスタンスの場合、`Timezone` または `OLS` オプション (あるいはその両方) を持つ共有 DB スナップショットをコピーできます。そのためには、DB スナップショットをコピーするときにこれらのオプションを含むターゲットオプショングループを指定します。OLS オプションは、Oracle バージョン 12.2 以降を実行している Oracle DB インスタンスに対してのみ恒久的かつ永続的です。これらのオプションの詳細については、「[Oracle のタイムゾーン](Appendix.Oracle.Options.Timezone.md)」および「[Oracle Label Security](Oracle.Options.OLS.md)」を参照してください。
+ マルチ AZ DB クラスターのスナップショットは共有できません。
+ 追加のストレージボリュームが含まれているスナップショットは共有できません。

公開スナップショットの共有、暗号化されたスナップショットの共有、スナップショットの共有の停止については、以下のトピックを参照してください。

**トピック**
+ [Amazon RDS の公開スナップショットの共有](USER_ShareSnapshot.Public.md)
+ [Amazon RDS の暗号化されたスナップショットの共有](share-encrypted-snapshot.md)
+ [Amazon RDS のスナップショット共有の停止](share-snapshot-stop.md)

## スナップショットの共有
<a name="USER_ShareSnapshot.Sharing"></a>

AWS マネジメントコンソール、AWS CLI、または RDS API を使用して、DB スナップショットを共有できます。

### コンソール
<a name="USER_ShareSnapshot.Console"></a>

Amazon RDS コンソールを使用して、手動 DB スナップショットを最大 20 の AWS アカウント と共有することができます。また、コンソールを使用して、手動 スナップショットの 1 つ以上のアカウントとの共有を停止することもできます。

**Amazon RDS コンソールを使用して、手動 DB スナップショットを共有するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**Snapshots**] を選択します。

1. 共有する手動スナップショットを選択します。

1. **[Actions]** (アクション) で、**[Share snapshot]** (スナップショットの共有) を選択します。

1. [**DB snapshot visibility**] で次のいずれかのオプションを選択します。
   + ソースが暗号化されていない場合、**[パブリック]** を選択して、すべての AWS アカウントが DB インスタンスをマニュアル DB スナップショットから復元できるようにするか、**[プライベート]** を選択して、指定した AWS アカウントだけが、DB インスタンスをマニュアル DB スナップショットから復元できるようにします。
**警告**  
**[DB スナップショットの可視性]** を **[パブリック]** に設定した場合、すべての AWS アカウントが手動 DB スナップショットから DB インスタンスを復元し、データにアクセスできるようになります。プライベート情報を含む手動 DB スナップショットは、[**Public**] として共有しないでください。  
詳細については、「[Amazon RDS の公開スナップショットの共有](USER_ShareSnapshot.Public.md)」を参照してください。
   + 出典 DB クラスターが暗号化されている場合、暗号化されているスナップショットはパブリックとして共有できないため、[**DB snapshot visibility**] が [**Private**] に設定されます。
**注記**  
デフォルトの AWS KMS key で暗号化されたスナップショットは共有できません。この問題を回避する方法については、「[Amazon RDS の暗号化されたスナップショットの共有](share-encrypted-snapshot.md)」を参照してください。

1. **[AWS アカウント ID]** では、手動スナップショットからの DB インスタンスの復元を許可するアカウントの AWS アカウント 識別子を入力してから、**[追加]** を選択します。この操作を繰り返して、AWS アカウント 識別子を最大 20 AWS アカウント まで含めます。

   許可されたアカウントのリストに AWS アカウント 識別子を誤って追加した場合には、正しくない AWS アカウント 識別子の右側にある **[削除]** を選択すれば、削除することができます。  
![\[手動 DB スナップショットの復元を AWS アカウント に許可する\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/ShareSnapshot_add.png)

1. 手動スナップショットの復元を許可するすべての AWS アカウント の識別子を追加した後、**[保存]** を選択して、変更を保存します。

### AWS CLI
<a name="USER_ShareSnapshot.CLI"></a>

DB スナップショットを共有するには、`aws rds modify-db-snapshot-attribute` コマンドを使用します。`--values-to-add` のパラメータを使用して、手動スナップショットの復元が許可されている AWS アカウント のための ID リストを追加します。

**Example スナップショットを 1 つのアカウントで共有する**  
次の例では、AWS アカウント 識別子 `123456789012` が `db7-snapshot` という名前の DB スナップショットを復元できるようにします。  
Linux、macOS、Unix の場合:  

```
aws rds modify-db-snapshot-attribute \
--db-snapshot-identifier db7-snapshot \
--attribute-name restore \
--values-to-add 123456789012
```
Windows の場合:  

```
aws rds modify-db-snapshot-attribute ^
--db-snapshot-identifier db7-snapshot ^
--attribute-name restore ^
--values-to-add 123456789012
```

**Example 複数のアカウントでスナップショットを共有する**  
次の例では、2 つの AWS アカウント 識別子 `111122223333` および `444455556666` が `manual-snapshot1` という名前の DB スナップショットを復元できるようにします。  
Linux、macOS、Unix の場合:  

```
aws rds modify-db-snapshot-attribute \
--db-snapshot-identifier manual-snapshot1 \
--attribute-name restore \
--values-to-add {"111122223333","444455556666"}
```
Windows の場合:  

```
aws rds modify-db-snapshot-attribute ^
--db-snapshot-identifier manual-snapshot1 ^
--attribute-name restore ^
--values-to-add "[\"111122223333\",\"444455556666\"]"
```
Windows コマンドプロンプトを使用する場合、JSON コードでは、二重引用符 (") の前にバックスラッシュ (\$1) を付けてエスケープする必要があります。

スナップショットの復元が有効になっている AWS アカウント を一覧表示するには、[https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-snapshot-attributes.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-snapshot-attributes.html) AWS CLI コマンドを使用します。

### RDS API
<a name="USER_ShareSnapshot.API"></a>

Amazon RDS API を使用することで、手動 DB スナップショットを他の AWS アカウント と共有することもできます。そのためには、[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBSnapshotAttribute.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBSnapshotAttribute.html) オペレーションを呼び出します。`AttributeName` に `restore` を指定し、`ValuesToAdd` パラメータを使用して、手動 スナップショットの復元が許可されている AWS アカウント の ID のリストを追加します。

手動スナップショットをパブリックにして、すべての AWS アカウント による復元を可能にするには、値 `all` を使用します。ただし、すべての AWS アカウント には利用させたくないプライベート情報を含む手動スナップショットについては、値 `all` を追加しないように注意してください。また、暗号化されているスナップショットでは `all` を指定しないでください。そのようなスナップショットをパブリックにすることはできないためです。

スナップショットの復元が許可されているすべての AWS アカウント を一覧表示するには、[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSnapshotAttributes.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSnapshotAttributes.html) API 操作を使用します。

# Amazon RDS の公開スナップショットの共有
<a name="USER_ShareSnapshot.Public"></a>

暗号化されていない手動スナップショットをパブリックとして共有できます。これにより、このスナップショットをすべての AWS アカウント が使用できるようになります。スナップショットを公開として共有する場合には、公開スナップショットにプライベート情報が含まれないように注意してください。

スナップショットがパブリックに共有されると、スナップショットをコピーし、そこから DB インスタンスを作成するためのすべての AWS アカウント アクセス許可が付与されます。

他のアカウントが所有する公開スナップショットのバックアップストレージについては課金されません。課金されるのは、所有しているスナップショットに対してのみです。

公開スナップショットをコピーする場合は、そのコピーを所有します。スナップショットコピーのバックアップストレージに対しては課金されます。DB インスタンスを公開スナップショットから作成する場合、その DB インスタンスに対して課金されます。Amazon RDS の料金情報については、[Amazon RDS の製品ページ](https://aws.amazon.com/rds/pricing)を参照してください。

削除できるのは、所有している公開スナップショットのみです。共有またはパブリックスナップショットを削除するには、そのスナップショットを所有する AWS アカウント にログインできることを確認してください。

## 他の AWS アカウント が所有するパブリックスナップショットの表示
<a name="USER_ShareSnapshot.Public.View.Console"></a>

Amazon RDS コンソールの [**Snapshots**] (スナップショット) ページにある [**Public**] (公開) タブの特定の AWS リージョンで、他のアカウントが所有する公開スナップショットを表示できます。(自分のアカウントが所有する) スナップショットは、このタブには表示されません。

**公開スナップショットを表示するには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、**[スナップショット]** を選択します。

1. [**Public (公開)**] タブを選択します。

   公開スナップショットが表示されます。[**Owner (所有者)**] 列に、公開スナップショットを所有しているアカウントが表示されます。
**注記**  
ページ設定を変更する必要がある場合、[**Public snapshots (公開スナップショット)**] リストの右上にあるギヤアイコンを選択して、この列を表示させます。

## 独自の公開スナップショットの表示
<a name="USER_ShareSnapshot.Public.View.CLI"></a>

次の AWS CLI コマンド (Unix のみ) を使用して、特定の AWS リージョンの AWS アカウント が所有するパブリックスナップショットを表示することができます。

```
aws rds describe-db-snapshots --snapshot-type public --include-public | grep account_number
```

公開スナップショットがある場合、次の例のような出力が返されます。

```
"DBSnapshotArn": "arn:aws:rds:us-east-1:123456789012:snapshot:mysnapshot1",
"DBSnapshotArn": "arn:aws:rds:us-east-1:123456789012:snapshot:mysnapshot2",
```

**注記**  
`DBSnapshotIdentifier` または `SourceDBSnapshotIdentifier` のエントリが重複する場合があります。

## 廃止された DB エンジンバージョンからのパブリックスナップショットの共有
<a name="USER_ShareSnapshot.Public.deprecated"></a>

廃止された DB エンジンバージョンからのパブリックスナップショットの復元またはコピーはサポートされていません。

RDS for Oracle エンジンと RDS for PostgreSQL DB エンジンは、DB スナップショットのエンジンバージョンの直接アップグレードをサポートしています。スナップショットをアップグレードして、再度パブリックに共有できます。詳細については、次を参照してください:
+ [Oracle DB スナップショットのアップグレード](USER_UpgradeDBSnapshot.Oracle.md)
+ [PostgreSQL DB スナップショットエンジンのバージョンのアップグレード](USER_UpgradeDBSnapshot.PostgreSQL.md)

その他の DB エンジンでは、以下の手順を実行して、サポート対象外の既存のパブリックスナップショットを復元したりコピーしたりできます。

1. スナップショットをプライベートとしてマークします。

1. スナップショットを復元します。

1. 復元した DB インスタンスを、サポートされているエンジンバージョンにアップグレードします。

1. 新しいスナップショットを作成します。

1. スナップショットをパブリックに再共有します。

# Amazon RDS の暗号化されたスナップショットの共有
<a name="share-encrypted-snapshot"></a>

「[Amazon RDS リソースの暗号化](Overview.Encryption.md)」で説明しているように、AES-256 暗号化アルゴリズムを使用して暗号化された「保存中」の DB スナップショットを共有できます。

以下の制限は、暗号化されたスナップショットの共有に適用されます。
+ 暗号化されたスナップショットをパブリックとして共有することはできません。
+ Transparent Data Encryption (TDE) を使用して暗号化されている Oracle または Microsoft SQL Server のスナップショットを共有することはできません。
+ スナップショットを共有した AWS アカウント のデフォルト KMS キーを使用して暗号化されたスナップショットを共有することはできません。

  Amazon RDS の AWS KMS キー管理の詳細については、「[AWS KMS key 管理](Overview.Encryption.Keys.md)」を参照してください。

デフォルトの KMS キーの問題を回避するには、以下のタスクを実行します。

1. [カスタマーマネージドキーを作成し、そのキーへのアクセス権を付与する](#share-encrypted-snapshot.cmk).

1. [ソースアカウントからスナップショットをコピーして共有する](#share-encrypted-snapshot.share).

1. [ターゲットアカウントに共有したスナップショットをコピーします。](#share-encrypted-snapshot.target).

## カスタマーマネージドキーを作成し、そのキーへのアクセス権を付与する
<a name="share-encrypted-snapshot.cmk"></a>

まず、暗号化された DB スナップショットと同じ AWS リージョン にカスタム KMS キーを作成します。カスタマーマネージドキーの作成中に、別の AWS アカウント にそのキーへのアクセス権を付与します。

**注記**  
キーポリシーがソースアカウントとターゲットアカウントへのアクセスを許可する場合、別の AWS アカウントの KMS キーを使用することもできます。

**カスタマーマネージドキーを作成し、そのキーへのアクセス権を付与するには**

1. ソース AWS アカウント から AWS マネジメントコンソール にサインインします。

1. AWS KMS コンソール ([https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms)) を開きます。

1. AWS リージョン を変更するには、ページの右上隅にあるリージョンセレクターを使用します。

1. ナビゲーションペインで、**[カスタマーマネージドキー]** を選択します。

1. **[Create key]** (キーの作成) を選択します。

1. **[キーの設定]** ページで、次の操作を行います。

   1. **[キータイプ]** として、**[対称]** を選択します。

   1. **[キーの使用]** で、**[暗号化および復号化]** を選択します。

   1. **[詳細オプション]** を展開します。

   1. **[キーマテリアルオリジン]** として、**[KMS]** を選択します。

   1. **[リージョン]** で、**[単一リージョンキー]** を選択します。

   1. **[次へ]** を選択します。

1. **[ラベルを追加]** ページで以下のように操作します。

   1. **[エイリアス]** には、**share-snapshot** のように KMS キーの表示名を入力します。

   1. (オプション) KMS キーの説明を入力します。

   1. (オプション) KMS キーにタグを追加します。

   1. [**次へ**] を選択します。

1. [**キー管理アクセス許可の定義**] ページで、[**次へ**] をクリックします。

1. **[キーの使用アクセス許可の定義]** ページで、次の操作を行います。

   1. **[その他の AWS アカウント]** では、**[別の AWS アカウント の追加]** を選択します。

   1. アクセスを許可する AWS アカウント の ID を入力します。

      複数の AWS アカウント にアクセス権を付与できます。

   1. [**次へ**] を選択します。

1. KMS キーを確認し、**[終了]** を選択します。

## ソースアカウントからスナップショットをコピーして共有する
<a name="share-encrypted-snapshot.share"></a>

次に、カスタマーマネージドキーを使用して、ソース DB スナップショットを新しいスナップショットにコピーします。次に、ターゲット AWS アカウント と共有します。

**スナップショットをコピーして共有するには**

1. ソース AWS アカウント から AWS マネジメントコンソール にサインインします。

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**Snapshots**] を選択してください。

1. コピーする DB スナップショットを選択します。

1. **[アクション]** で、**[スナップショットをコピー]** を選択します。

1. **[スナップショットのコピー]** ページで、次の操作を行います。

   1. **[デスティネーションリージョン]** で、前の手順でカスタマーマネージドキーを作成した場所を選択します。

   1. **[新しい DB スナップショットの識別子]** に、DB スナップショットのコピーの名前を入力します。

   1. **[AWS KMS key]** で、作成したカスタマーマネージドキーを選択します。  
![\[カスタマーマネージドキーを選択します。\]](http://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/images/copy-encrypted-snapshot.png)

   1. **[スナップショットをコピー]** を選択します。

1. スナップショットのコピーが使用可能になったら、それを選択します。

1. **[アクション]** で、**[スナップショットを共有]** を選択します。

1. **[スナップショットのアクセス許可]** ページで、次の操作を行います。

   1. スナップショットのコピーを共有する **[AWS アカウント ID]** を入力し、**[追加]** を選択します。

   1. **[保存]** を選択します。

   スナップショットが共有されます。

## ターゲットアカウントに共有したスナップショットをコピーします。
<a name="share-encrypted-snapshot.target"></a>

これで、ターゲット AWS アカウント で共有スナップショットをコピーできます。

**共有したスナップショットをコピーするには**

1. ターゲット AWS アカウント から AWS マネジメントコンソール にサインインします。

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**Snapshots**] を選択してください。

1. **[自分と共有]** タブを選択します。

1. 共有スナップショットを選択します。

1. **[アクション]** で、**[スナップショットをコピー]** を選択します。

1. 前の手順のようにスナップショットをコピーするための設定を選択しますが、ターゲットアカウントに属する AWS KMS key を使用します。

   **[スナップショットをコピー]** を選択します。

# Amazon RDS のスナップショット共有の停止
<a name="share-snapshot-stop"></a>

DB スナップショットの共有を停止するには、ターゲット AWS アカウント からアクセス許可を削除します。

## コンソール
<a name="share-snapshot-stop.CON"></a>

**AWS アカウント との手動 DB スナップショットの共有を停止するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

1. ナビゲーションペインで、[**Snapshots**] を選択します。

1. 共有を停止する手動スナップショットを選択します。

1. **[Actions]** (アクション) を選択してから、**[Share Snapshot]** (スナップショットの共有) を選択します。

1. AWS アカウント のアクセス許可を削除するには、アクセス権限が付与されたアカウントのリストからそのアカウントの AWS アカウント識別子を選択し、**[削除]** を選択します。

1. **[保存]** を選択して変更を保存します。

## CLI
<a name="share-snapshot-stop.CLI"></a>

リストから AWS アカウント の識別子を削除するには、`--values-to-remove` のパラメータを使用します。

**Example スナップショット共有を停止する**  
次の例は、AWS アカウント ID 444455556666 がスナップショットを復元できないようにします。  
Linux、macOS、Unix の場合:  

```
aws rds modify-db-snapshot-attribute \
--db-snapshot-identifier manual-snapshot1 \
--attribute-name restore \
--values-to-remove 444455556666
```
Windows の場合:  

```
aws rds modify-db-snapshot-attribute ^
--db-snapshot-identifier manual-snapshot1 ^
--attribute-name restore ^
--values-to-remove 444455556666
```

## RDS API
<a name="share-snapshot-stop.API"></a>

AWS アカウント でのアクセス許可の共有を削除するには、`AttributeName` を `restore` に設定し、かつ `ValuesToRemove` パラメータを含めて、[https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterSnapshotAttribute.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterSnapshotAttribute.html) オペレーションを使用します。手動 スナップショットをプライベートとしてマークするには、`all` 属性の値リストから値 `restore` を削除します。