

# 共享数据库集群快照
<a name="aurora-share-snapshot"></a>

使用 Amazon RDS，您可以按以下方式共享手动数据库集群快照：
+ 共享手动数据库集群快照（无论是否加密）可允许经授权的 AWS 账户复制快照。
+ 共享手动数据库集群快照（无论是否加密）可允许经授权的 AWS 账户直接从快照还原数据库集群，无需复制数据库集群再从中进行还原。

**注意**  
要共享自动数据库集群快照，请通过复制自动快照来创建手动数据库集群快照，然后共享该副本。此过程也适用于 AWS Backup 生成的资源。

有关复制快照的更多信息，请参阅[数据库集群快照复制](aurora-copy-snapshot.md)。有关从数据库集群快照还原数据库实例的更多信息，请参阅[从数据库集群快照还原](aurora-restore-snapshot.md)。

有关从数据库群集快照还原数据库群集的更多信息，请参阅 [备份和还原 Aurora 数据库集群的概述](Aurora.Managing.Backups.md)。

您可以与最多 20 个其他 AWS 账户共享手动快照。

与其它 AWS 账户共享手动快照时存在以下限制：
+ 当使用 AWS Command Line Interface (AWS CLI) 或 Amazon RDS API 从共享的快照还原数据库集群时，您必须指定共享快照的 Amazon 资源名称（ARN）作为快照标识符。

在以下各节中学习共享快照、公有快照和加密快照。还可以学习如何停止共享快照。

**Topics**
+ [

## 共享快照
](#aurora-share-snapshot.Sharing)
+ [

# 共享公有快照
](aurora-share-snapshot.public.md)
+ [

# 共享加密的快照
](share-encrypted-snapshot.md)
+ [

# 停止快照共享
](share-snapshot-stop.md)

## 共享快照
<a name="aurora-share-snapshot.Sharing"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 共享数据库集群快照。

### 控制台
<a name="aurora-share-snapshot.Console"></a>

使用 Amazon RDS 控制台，可以与多达 20 个 AWS 账户共享手动数据库集群快照。您还可以使用该控制台停止与一个或多个账户共享手动快照。

**使用 Amazon RDS 控制台共享手动数据库集群快照**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**快照**。

1. 选择要共享的手动快照。

1. 对于 **Actions**（操作），请选择 **Share snapshot**（共享快照）。

1. 为 **DB snapshot visibility (数据库快照可见性)** 选择以下一个选项。
   + 如果源未加密，则选择**公有**以允许所有 AWS 账户从您的手动数据库集群快照还原数据库集群，或选择**私有**以仅允许您指定的 AWS 账户从手动数据库集群快照还原数据库集群。
**警告**  
如果将**数据库快照可见性**设置为**公有**，则所有 AWS 账户均可从您的手动数据库集群快照还原数据库集群，并且可访问您的数据。请勿将包含私密信息的任何手动数据库集群快照以**公开**形式共享。  
有关更多信息，请参阅 [共享公有快照](aurora-share-snapshot.public.md)。
   + 如果源已加密，由于已加密的快照无法公开共享，**DB snapshot visibility (数据库快照可见性)** 将设为 **Private (私密)**。
**注意**  
无法共享已使用默认 AWS KMS key 加密的快照。有关如何解决此问题的信息，请参阅[共享加密的快照](share-encrypted-snapshot.md)。

1. 对于 **AWS 账户 ID**，输入您想要允许从您的手动快照还原数据库集群的账户的 AWS 账户标识符，然后选择**添加**。重复操作以加入其它 AWS 账户标识符，最多可包含 20 个 AWS 账户。

   如果您在许可账户列表中错加了某个 AWS 账户标识符，可以选择错误 AWS 账户标识符右侧的**删除**将其从列表中删除。  
![\[允许 AWS 账户还原手动数据库集群快照\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/ShareSnapshot_add.png)

1. 为您想要允许还原手动快照的所有 AWS 账户添加标识符以后，选择**保存**以保存您的更改。

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

要共享数据库集群快照，请使用 `aws rds modify-db-cluster-snapshot-attribute` 命令。使用 `--values-to-add` 参数添加有权还原手动快照的 AWS 账户的 ID 列表。

**Example 与单个账户共享快照**  
以下示例使 AWS 账户标识符 `123456789012` 能够还原名为 `cluster-3-snapshot` 的数据库集群快照。  
对于 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
```

**Example 与多个账户共享快照**  
以下示例使两个 AWS 账户标识符（`111122223333` 和 `444455556666`）能够还原名为 `manual-cluster-snapshot1` 的数据库集群快照。  
对于 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 代码中转义双引号 (")，方法是使用反斜杠 (\$1) 作为其前缀。

要列出能够用于还原快照的 AWS 账户，请使用 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-cluster-snapshot-attributes.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-cluster-snapshot-attributes.html) AWS CLI 命令。

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

您还可以使用 Amazon RDS API 与其它 AWS 账户共享手动数据库集群快照。为此，请调用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterSnapshotAttribute.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterSnapshotAttribute.html) 操作。为 `AttributeName` 指定 `restore`，并使用 `ValuesToAdd` 参数添加有权还原手动快照的 AWS 账户的 ID 列表。

要将手动快照设为公有并允许所有 AWS 账户进行还原，请使用值 `all`。但请注意，若任何手动快照包含您不想向所有 AWS 账户公开的私有信息，则不要添加 `all` 值。此外，由于此类快照不支持公开共享，请不要为已加密的快照指定 `all`。

要列出有权还原快照的所有 AWS 账户，请使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusterSnapshotAttributes.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusterSnapshotAttributes.html) API 操作。

# 共享公有快照
<a name="aurora-share-snapshot.public"></a>

您可以将未加密的手动快照作为公有快照进行共享，这样所有 AWS 账户均可使用此快照。当以公有快照形式共享快照时，确保不要将您的私有信息包含在公有快照之中。

公开共享快照时，它会授予所有 AWS 账户复制快照并从中创建数据库集群的权限。

您不需要为其他账户拥有的公有快照的备份存储付费。您只需为您拥有的快照付费。

如果您复制公有快照，则您拥有该副本。您需要为快照副本的备份存储付费。如果您从公有快照创建数据库集群，则需要为该数据库集群付费。有关 Amazon Aurora 定价信息，请参阅 [Aurora 定价页面](https://aws.amazon.com/rds/aurora/pricing)。

您只能删除您拥有的公有快照。要删除共享或公有快照，务必登录到拥有快照的 AWS 账户。

## 查看其它 AWS 账户拥有的公有快照
<a name="aurora-share-snapshot.public.view.console"></a>

您可以在 Amazon RDS 控制台的**快照**页面的**公有**选项卡上查看特定 AWS 区域中其它账户拥有的公有快照。您的快照（由您账户拥有的快照）不会显示在此选项卡上。

**要查看公有快照**

1. 通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**快照**。

1. 选择 **Public (公有)** 选项卡。

   此时将显示公有快照。您可以在 **Owner (拥有者)** 列中查看哪个账户拥有公有快照。
**注意**  
您可能需要通过选择 **Public snapshots (公有快照)** 列表右上角的齿轮图标来修改页面首选项，才能看到此列。

## 查看您拥有的公有快照
<a name="aurora-share-snapshot.public.view.CLI"></a>

您可以使用以下 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",
```

## 共享来自已弃用数据库引擎版本的公有快照
<a name="aurora-share-snapshot.deprecated"></a>

不支持从已弃用的数据库引擎版本还原或复制公有快照。要使现有的不受支持的公有快照可供还原或复制，请执行以下步骤：

1. 将快照标记为私有。

1. 还原快照。

1. 将还原的数据库集群升级到受支持的引擎版本。

1. 创建新的快照。

1. 公开重新共享快照。

# 共享加密的快照
<a name="share-encrypted-snapshot"></a>

您可共享使用 AES-256 加密算法“静态”加密的数据库集群快照，如[加密 Amazon Aurora 资源](Overview.Encryption.md)中所述。

以下限制适用于共享加密快照：
+ 您无法公开共享加密的快照。
+ 如果某个快照已使用共享该快照的 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>

首先，在加密数据库集群快照所在的同一个 AWS 区域中创建一个自定义 KMS 密钥。在创建客户自主管理型密钥时，您可以为另一个 AWS 账户提供对它的访问权限。

**创建客户自主管理型密钥并授予对它的访问权限**

1. 从源 AWS 账户登录 AWS 管理控制台。

1. 从 [https://console.aws.amazon.com/kms](https://console.aws.amazon.com/kms) 打开 AWS KMS 控制台。

1. 要更改 AWS 区域，请使用页面右上角的区域选择器。

1. 在导航窗格中，选择**客户托管密钥**。

1. 选择 **Create key**。

1. 在**配置密钥**页面上：

   1. 对于**密钥类型**，选择**对称**。

   1. 对于**密钥用途**，选择**加密和解密**。

   1. 展开 **Advanced options (高级选项)**。

   1. 对于**密钥材料来源**，选择 **KMS**。

   1. 对于**区域性**，请选择**单区域密钥**。

   1. 选择**下一步**。

1. 在**添加标签**页面上：

   1. 对于**别名**，输入您的 KMS 密钥的显示名称，例如 **share-snapshot**。

   1. （可选）为 KMS 密钥输入描述。

   1. （可选）向 KMS 密钥添加标签。

   1. 选择**下一步**。

1. 在**定义密钥管理权限**页面上，选择**下一步**。

1. 在**定义密钥使用权限**页面上：

   1. 对于**其他 AWS 账户**，选择**添加另一个 AWS 账户**。

   1. 输入您要向其授予访问权限的 AWS 账户的 ID。

      您可以向多个 AWS 账户授予访问权限。

   1. 选择**下一步**。

1. 查看您的 KMS 密钥，然后选择**完成**。

## 从源账户复制和共享快照
<a name="share-encrypted-snapshot.share"></a>

接下来，使用客户自主管理型密钥将源数据库集群快照复制到新快照。然后，您将与目标 AWS 账户共享它。

**复制和共享快照**

1. 从源 AWS 账户登录 AWS 管理控制台。

1. 通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)

1. 在导航窗格中，选择**快照**。

1. 选择要复制的数据库集群快照。

1. 对于 **Actions (操作)**，请选择 **Copy snapshot (复制快照)**。

1. 在**复制快照**页面上：

   1. 对于**目标区域**，选择您在上一个过程中创建客户自主管理型密钥的 AWS 区域。

   1. 在 **New DB Snapshot Identifier (新数据库实例标识符)** 中输入数据库集群快照副本的名称。

   1. 对于 **AWS KMS key**，选择您创建的客户自主管理型密钥。  
![\[选择客户自主管理型密钥。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/copy-encrypted-snapshot.png)

   1. 选择**复制快照**。

1. 当快照副本可用时，将其选中。

1. 对于 **Actions**（操作），请选择 **Share snapshot**（共享快照）。

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. 在导航窗格中，选择**快照**。

1. 选择**与我共享**选项卡。

1. 选择共享快照。

1. 对于 **Actions (操作)**，请选择 **Copy snapshot (复制快照)**。

1. 按照前面的过程选择用于复制快照的设置，但要使用属于目标账户的 AWS KMS key。

   选择**复制快照**。

# 停止快照共享
<a name="share-snapshot-stop"></a>

要停止共享数据库集群快照，请删除目标 AWS 账户的权限。

## 控制台
<a name="share-snapshot-stop.CON"></a>

**停止与 AWS 账户共享手动数据库集群快照**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择**快照**。

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-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
```

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

要移除 AWS 账户的共享权限，请使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterSnapshotAttribute.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterSnapshotAttribute.html) 操作（`AttributeName` 设置为 `restore`）和 `ValuesToRemove` 参数。要将手动快照标记为私有，请将值 `all` 从 `restore` 属性的值列表中删除。