

# 共享 Amazon RDS 的数据库快照
<a name="USER_ShareSnapshot"></a>

使用 Amazon RDS，您可以按以下方式共享手动数据库快照：
+ 共享手动数据库快照（无论是否加密）可允许经授权的 AWS 账户复制快照。
+ 共享未加密的手动数据库快照可允许经授权的 AWS 账户直接从快照还原数据库实例，而无需复制数据库实例再从中进行还原。但是，您无法从共享并且加密的数据库快照中恢复数据库实例。您可以改为创建数据库快照副本，并从该副本还原数据库实例。

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

有关复制快照的更多信息，请参阅[复制 Amazon RDS 的数据库快照](USER_CopySnapshot.md)。有关从数据库快照还原数据库实例的更多信息，请参阅[还原到数据库实例](USER_RestoreFromSnapshot.md)。

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

与其它 AWS 账户共享手动快照时以下限制适用：
+ 当使用 AWS Command Line Interface (AWS CLI) 或 Amazon RDS API 从共享的快照还原数据库实例时，您必须指定共享快照的 Amazon 资源名称（ARN）作为快照标识符。
+ 如果数据库快照使用具有永久选项或持久选项的选项组，则不能共享，但具有 `Timezone` 和/或 `OLS` 选项的 Oracle 数据库实例除外。

  不能从选项组中移除*永久*选项。若为数据库实例指定了包含持续性选项的选项组，则不能从数据库实例中删除这些选项组。

  下表列出了永久和持续性选项及其相关的数据库引擎。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/USER_ShareSnapshot.html)

  对于 Oracle 数据库实例，您可以复制具有选项 `Timezone` 或 `OLS`（或两者）的共享数据库快照。为此，在复制数据库快照时，指定一个包含这些选项的目标选项组。OLS 选项仅对于运行 Oracle 12.2 或更高版本的 Oracle 数据库实例具有永久性和持久性。有关这些选项的更多信息，请参阅 [Oracle 时区](Appendix.Oracle.Options.Timezone.md) 和 [Oracle Label Security](Oracle.Options.OLS.md)。
+ 您无法共享多可用区数据库集群的快照。
+ 当快照包含附加存储卷时，您无法共享该快照。

有关共享公有快照、共享加密快照和停止快照共享的信息，请参阅以下主题。

**主题**
+ [共享 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 共享数据库快照。

### 控制台
<a name="USER_ShareSnapshot.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 账户均可从您的手动数据库快照还原数据库实例，并且可访问您的数据。请勿将包含私有信息的任何手动数据库快照作为 **Public** 共享。  
有关更多信息，请参阅 [共享 Amazon RDS 的公有快照](USER_ShareSnapshot.Public.md)。
   + 如果源已加密，由于已加密的快照无法公开共享，**DB snapshot visibility (数据库快照可见性)** 将设为 **Private (私密)**。
**注意**  
无法共享已使用默认 AWS KMS key 加密的快照。有关如何解决此问题的信息，请参阅[共享 Amazon RDS 的加密快照](share-encrypted-snapshot.md)。

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

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

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

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

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

**Example 与单个账户共享快照**  
以下示例使 AWS 账户标识符 `123456789012` 能够还原名为 `db7-snapshot` 的数据库快照。  
对于 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 与多个账户共享快照**  
以下示例使两个 AWS 账户标识符（`111122223333` 和 `444455556666`）能够还原名为 `manual-snapshot1` 的数据库快照。  
对于 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 与其他 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 操作。