DB クラスターのスナップショットの共有 - Amazon Aurora

DB クラスターのスナップショットの共有

Amazon RDS を使用すると、次の方法で手動 DB クラスタースナップショットを共有できます。

  • 手動 DB クラスタースナップショットを共有すると、暗号化されているかいないかに関係なく、権限のある AWS アカウントがスナップショットをコピーできるようになります。

  • 手動 DB クラスタースナップショットを共有すると、暗号化されているかいないかに関係なく、権限を持つ AWS アカウントが DB クラスターをコピーしてそこから復元するのではなく、スナップショットから DB クラスターを直接復元できるようになります。

注記

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

スナップショットのコピーの詳細については、「DB クラスターのスナップショットのコピー」を参照してください。DB クラスタースナップショットから DB インスタンスを復元する方法については、「DB クラスターのスナップショットからの復元」を参照してください。

DB クラスタースナップショットから DB クラスターを復元する方法の詳細については、「Aurora DB クラスターのバックアップと復元の概要」を参照してください。

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

手動スナップショットを他の AWS アカウント と共有する場合には、次の制限が適用されます。

  • AWS Command Line Interface (AWS CLI) または Amazon RDS を使用して共有スナップショットから DB クラスターを復元する際、スナップショット識別子として共有 DB スナップショットの Amazon リソースネーム (ARN) を指定する必要があります。

公開スナップショットの共有

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

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

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

公開スナップショットをコピーする場合は、そのコピーを所有します。スナップショットコピーのバックアップストレージに対しては課金されます。DB クラスターを公開スナップショットから作成する場合、その DB クラスターに対して課金されます。Amazon Aurora の料金情報については、Aurora の料金表ページを参照してください。

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

他の AWS アカウント が所有する公開スナップショットの表示

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

公開スナップショットを表示するには
  1. Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

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

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

    公開スナップショットが表示されます。[Owner (所有者)] 列に、公開スナップショットを所有しているアカウントが表示されます。

    注記

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

独自の公開スナップショットの表示

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

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

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

"DBClusterSnapshotArn": "arn:aws:rds:us-west-2:123456789012:cluster-snapshot:myclustersnapshot1", "DBClusterSnapshotArn": "arn:aws:rds:us-west-2:123456789012:cluster-snapshot:myclustersnapshot2",

スナップショットの共有

AWS Management Console、AWS CLI、または RDS API を使用して、DB クラスタースナップショットを共有できます。

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

Amazon RDS コンソールを使用して、手動 DB クラスタースナップショットを共有するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

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

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

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

  5. [DB snapshot visibility] で次のいずれかのオプションを選択します。

    • ソースが暗号化されていない場合、[パブリック] を選択して、すべての AWS アカウント が DB クラスターをマニュアル DB クラスタースナップショットから復元できるようにするか、[プライベート] を選択して、指定した AWS アカウント だけが、DB クラスターをマニュアル DB クラスタースナップショットから復元できるようにします。

      警告

      [DB スナップショットの可視性][パブリック] に設定すると、すべての AWS アカウント が手動 DB クラスタースナップショットから DB クラスターを復元し、データへアクセスすることができるようになります。プライベート情報を含む手動 DB クラスタースナップショットは、[Public] として共有しないでください。

    • 出典 DB クラスターが暗号化されている場合、暗号化されているスナップショットはパブリックとして共有できないため、[DB snapshot visibility] が [Private] に設定されます。

      注記

      デフォルトの AWS KMS key で暗号化されたスナップショットは共有できません。この問題を回避する方法については、「暗号化されたスナップショットの共有」を参照してください。

  6. [AWS アカウント ID] では、マニュアルスナップショットからの DB クラスターの復元を許可するアカウントの AWS アカウント 識別子を入力してから、[追加] を選択します。この操作を繰り返して、AWS アカウント 識別子を最大 20 AWS アカウント 追加できます。

    アクセス権限が付与されたアカウントのリストに AWS アカウント 識別子を誤って追加した場合には、その AWS アカウント ID の右側にある [削除] を選択すれば、削除することができます。

    
                                手動 DB クラスタースナップショットの復元を AWS アカウント に許可する
  7. 手動 スナップショットの復元を許可する AWS アカウント 識別子をすべて追加したら、[保存] を選択して変更を保存します。

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

例 スナップショットを 1 つのアカウントで共有する

次の例では、AWS アカウント 識別子 123456789012cluster-3-snapshot という名前の DB クラスタースナップショットを復元できるようにします。

Linux、macOS、Unix の場合:

aws rds modify-db-cluster-snapshot-attribute \ --db-cluster-snapshot-identifier cluster-3-snapshot \ --attribute-name restore \ --values-to-add 123456789012

Windows の場合:

aws rds modify-db-cluster-snapshot-attribute ^ --db-cluster-snapshot-identifier cluster-3-snapshot ^ --attribute-name restore ^ --values-to-add 123456789012
例 複数のアカウントでスナップショットを共有する

次の例では、2 つの AWS アカウント 識別子 111122223333 および 444455556666manual-cluster-snapshot1 という名前の DB クラスタースナップショットを復元できるようにします。

Linux、macOS、Unix の場合:

aws rds modify-db-cluster-snapshot-attribute \ --db-cluster-snapshot-identifier manual-cluster-snapshot1 \ --attribute-name restore \ --values-to-add {"111122223333","444455556666"}

Windows の場合:

aws rds modify-db-cluster-snapshot-attribute ^ --db-cluster-snapshot-identifier manual-cluster-snapshot1 ^ --attribute-name restore ^ --values-to-add "[\"111122223333\",\"444455556666\"]"
注記

Windows コマンドプロンプトを使用する場合、JSON コードでは、二重引用符 (") の前にバックスラッシュ (\) を付けてエスケープする必要があります。

スナップショットの復元が有効になっている AWS アカウント を一覧表示するには、describe-db-cluster-snapshot-attributes AWS CLI コマンドを使用します。

Amazon RDS API を使用することで、手動 DB クラスタースナップショットを他の AWS アカウント と共有することもできます。そのためには、ModifyDBClusterSnapshotAttribute オペレーションを呼び出します。restoreAttributeName を指定し、ValuesToAdd パラメータを使用して、手動 スナップショットの復元が許可されている AWS アカウント の ID のリストを追加します。

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

スナップショットを復元することが許可されているすべての AWS アカウント を一覧表示するには、DescribeDBClusterSnapshotAttributes API オペレーションを使用します。

暗号化されたスナップショットの共有

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

以下の制限は、暗号化されたスナップショットの共有に適用されます。

  • 暗号化されたスナップショットをパブリックとして共有することはできません。

  • スナップショットを共有する AWS アカウント のデフォルト KMSキーを使って暗号化されたスナップショットを共有することはできません。

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

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

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

カスタマーマネージドキーを作成し、そのキーへのアクセス権を付与するには
  1. ソース AWS アカウントから AWS Management Console にサインインします。

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

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

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

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

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

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

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

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

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

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

    6. [次へ] をクリックします。

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

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

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

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

    4. [次へ] をクリックします。

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

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

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

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

      複数の AWS アカウント へのアクセスを許可できます。

    3. [次へ] をクリックします。

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

ソースアカウントからスナップショットをコピーして共有する

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

スナップショットをコピーして共有するには
  1. ソース AWS アカウント から AWS Management Console にサインインします。

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

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

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

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

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

    1. [送信先リージョン] で、前の手順でカスタマーマネージドキーを作成した AWS リージョン を選択します。

    2. [New DB Snapshot Identifier (新しい DB スナップショットの識別子)] に、DB クラスタースナップショットのコピーの名前を入力します。

    3. AWS KMS key には、作成したカスタマーマネージドキーを選択します。

      
                                    カスタマーマネージドキーを選択します。
    4. [スナップショットのコピー] を選択します。

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

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

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

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

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

    スナップショットを共有します。

ターゲットアカウントに共有したスナップショットをコピーします。

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

共有したスナップショットをコピーするには
  1. ターゲット AWS アカウント から AWS Management Console にサインインします。

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

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

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

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

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

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

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

スナップショット共有の停止

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

AWS アカウント との手動 DB クラスタースナップショットの共有を停止するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

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

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

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

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

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

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

例 スナップショット共有を停止する

AWS アカウント ID 444455556666 でスナップショットが復元できない例を以下に示します。

Linux、macOS、Unix の場合:

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

Windows の場合:

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

AWS アカウント でのアクセス許可の共有を削除するには、AttributeNamerestore に設定し、かつ ValuesToRemove パラメータを含めて、ModifyDBClusterSnapshotAttribute オペレーションを使用します。手動 スナップショットをプライベートとしてマークするには、all 属性の値リストから値 restore を削除します。