

# 使用 AWS RAM 与 Amazon Aurora 进行跨账户克隆
<a name="Aurora.Managing.Clone.Cross-Account"></a>

通过将 AWS Resource Access Manager（AWS RAM）与 Amazon Aurora 结合使用，您可以与另一个AWS账户或企业共享属于您的AWS账户的 Aurora 数据库集群和克隆。这种*跨账户克隆*比创建和恢复数据库快照快很多。您可以为您的 Aurora 数据库集群创建一个克隆并共享该克隆。或者，您可以与另一个AWS账户共享您的 Aurora 数据库集群，并让账户持有人创建克隆。方式的选择因使用案例而定。

如，您可能需要定期与组织的内部审计团队共享财务数据库的克隆。在这种情况下，您的审计团队对其使用的应用程序拥有自己的 AWS 账户。您可以授予审计团队的AWS账户访问 Aurora 数据库集群，并根据需要进行克隆的权限。

另一方面，如果外部供应商审核您的财务数据，您可能更愿意自己创建克隆。然后，您只允许外部供应商访问该克隆。

您还可以使用跨账户克隆来支持在同一AWS账户内进行克隆的许多相同用例，例如开发和测试。例如，您的企业可能会使用不同的 AWS 账户进行生产、开发、测试等。有关更多信息，请参阅“[Aurora 克隆概述](Aurora.Managing.Clone.md#Aurora.Clone.Overview)”。

因此，您可能希望与另一个AWS账户共享一个克隆或允许其他AWS账户创建您的 Aurora 数据库集群的克隆。无论哪种情况，请先使用 AWS RAM 来创建共享对象。有关在 AWS 账户之间共享 AWS 资源的完整信息，请参阅 [AWS RAM 用户指南](https://docs.aws.amazon.com/ram/latest/userguide/)。

创建跨账户克隆需要来自拥有原始集群的 AWS 账户和创建克隆的 AWS 账户的操作。首先，原始集群拥有者修改集群以允许一个或多个其他账户克隆它。对于在不同的AWS组织中的任何账户，AWS会生成共享邀请。另一个账户必须接受邀请，然后才能继续。之后，每个授权账户便能克隆集群。在整个过程中，集群由其唯一的 Amazon Resource Name (ARN) 标识。

与在同一 AWS 账户内进行克隆一样，只有在源或克隆对数据进行更改时才使用额外的存储空间。届时将会收取存储费用。如果删除源集群，则会在剩余的克隆集群中平均分配存储成本。

**Topics**
+ [跨账户克隆的限制](#Aurora.Managing.Clone.CrossAccount.Limitations)
+ [允许其他 AWS 账户克隆您的集群](#Aurora.Managing.Clone.CrossAccount.yours)
+ [克隆另一个AWS账户拥有的集群](#Aurora.Managing.Clone.CrossAccount.theirs)

## 跨账户克隆的限制
<a name="Aurora.Managing.Clone.CrossAccount.Limitations"></a>

 Aurora 跨账户克隆具有以下限制：
+ 您无法跨 Aurora Serverless v1 账户克隆 AWS 集群。
+ 您无法使用 AWS 管理控制台 来查看或接受共享资源的邀请。使用 AWS CLI、Amazon RDS API 或 AWS RAM 控制台查看和接受共享资源的邀请。
+ 从与您的 AWS 账户共享的资源中，您只能创建一个新克隆。无论共享资源是原始 Aurora 数据库集群还是先前创建的克隆，此规则都适用。
+ 您仅可以从与您的 AWS 账户共享的克隆创建一个新克隆。
+ 您无法共享已与您的AWS账户共享的资源（克隆或 Aurora 数据库集群）。
+ 您最多可从任何单个 Aurora 数据库集群创建 15 个跨账户克隆。
+  这 15 个跨账户克隆中的每一个都必须由不同的 AWS 账户拥有。也就是说，任何AWS账户都只能创建一个集群的跨账户克隆。
+  克隆集群之后，为了对跨账户克隆实施限制，原始集群及其克隆应视为相同。不能在同一 AWS 账户内同时创建原始集群和克隆集群的跨账户克隆。原始集群及其任何克隆的跨账户克隆总数不能超过 15 个。
+ 除非集群处于 `ACTIVE` 状态，否则您无法与其他AWS账户共享 Aurora 数据库集群。
+ 您无法重命名与其他AWS账户共享的 Aurora 数据库集群。
+  您无法创建使用默认 RDS 密钥加密的集群的跨账户克隆。
+ 对于从另一个 AWS 账户共享的加密 Aurora 数据库集群，您无法在 AWS 账户中创建非加密克隆。集群拥有者必须授予访问源集群的 AWS KMS key 的权限。但是，您可以在创建克隆时使用不同的密钥。

## 允许其他 AWS 账户克隆您的集群
<a name="Aurora.Managing.Clone.CrossAccount.yours"></a>

 要允许其他 AWS 账户克隆您拥有的集群，请使用 AWS RAM 设置共享权限。这样做还会向位于其他 AWS 组织中的所有其他账户发送邀请。

 有关在 AWS RAM 控制台中共享您拥有的资源的过程，请参阅 *AWS RAM 用户指南*中的[共享您拥有的资源](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing.html)。

**Topics**
+ [向其他 AWS 账户授予克隆集群的权限](#Aurora.Managing.Clone.CrossAccount.granting)
+ [检查是否与其他AWS账户共享您拥有的集群](#Aurora.Managing.Clone.CrossAccount.confirming)

### 向其他 AWS 账户授予克隆集群的权限
<a name="Aurora.Managing.Clone.CrossAccount.granting"></a>

 如果您共享的集群已加密，则您还可以共享集群的 AWS KMS key。您可以允许一个 AWS 账户中的 AWS Identity and Access Management (IAM) 用户或角色使用其他账户中的 KMS 密钥。

为此，您首先通过 AWS KMS 将外部账户（根用户）添加到 KMS 密钥的密钥策略中。您无需将单个用户或角色添加到密钥策略，只需添加拥有这些用户或角色的外部账户。您只能共享您创建的 KMS 密钥，而不能共享默认 RDS 服务密钥。有关 KMS 密钥的访问控制的信息，请参阅 [AWS KMS 的身份验证和访问控制](https://docs.aws.amazon.com/kms/latest/developerguide/control-access.html)。

#### 控制台
<a name="Aurora.Managing.Clone.CrossAccount.granting.console"></a>

**授予克隆您的集群的权限**

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

1.  在导航窗格中，选择 **Databases (数据库)**。

1.  选择要共享的数据库集群以查看其 **Details (详细信息)** 页面，并选择 **Connectivity & security (连接和安全性)** 选项卡。

1.  在 **与其他 AWS 账户共享数据库集群** 部分中，输入要允许克隆此集群的 AWS 账户的数字账户 ID。对于同一组织中的账户 ID，您可以开始在框中键入，然后从菜单中选择。
**重要**  
 在某些情况下，您可能需要使用一个不在您的账户所在的 AWS 组织中的账户来克隆集群。在这些情况下，出于安全原因，控制台不会报告谁拥有账户 ID 或该账户是否存在。  
请小心输入不在您的 AWS 账户所在的 AWS 组织中的账号。立即验证您是否与目标账户共享。

1.  在确认页面上，验证您指定的账户 ID 是否正确。在确认框中输入 `share` 以进行确认。

    在 **Details (详细信息)** 页面上，**Accounts that this DB cluster is shared with (此数据库集群与之共享的账户)** 下显示一个条目，该条目显示指定的AWS账户 ID。**Status (状态)** 列最初显示 **Pending (待处理)** 状态。

1.  联系另一个 AWS 账户的拥有者，或者如果您同时拥有这两个账户，则登录到该账户。指示其他账户的拥有者接受共享邀请并克隆数据库集群，如下所述。

#### AWS CLI
<a name="Aurora.Managing.Clone.CrossAccount.granting.cli"></a>

**授予克隆您的集群的权限**

1.  收集所需参数的信息。您需要集群的 ARN 和其他 AWS 账户的数字 ID。

1.  运行 AWS RAM CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/ram/create-resource-share.html](https://docs.aws.amazon.com/cli/latest/reference/ram/create-resource-share.html)。

   对于 Linux、macOS 或 Unix：

   ```
   aws ram create-resource-share --name descriptive_name \
     --region region \
     --resource-arns cluster_arn \
     --principals other_account_ids
   ```

   对于：Windows

   ```
   aws ram create-resource-share --name descriptive_name ^
     --region region ^
     --resource-arns cluster_arn ^
     --principals other_account_ids
   ```

    要包含 `--principals` 参数的多个账户 ID，请用空格将各个 ID 分隔开。要指定允许的账户 ID 是否能位于 AWS 组织外部，请包含 `--allow-external-principals` 的 `--no-allow-external-principals` 或 `create-resource-share` 参数。

#### AWS RAM API
<a name="Aurora.Managing.Clone.CrossAccount.granting.api"></a>

**授予克隆您的集群的权限**

1.  收集所需参数的信息。您需要集群的 ARN 和其他 AWS 账户的数字 ID。

1.  调用 AWS RAM API 操作 [CreateResourceShare](https://docs.aws.amazon.com/ram/latest/APIReference/API_CreateResourceShare.html)，并指定以下值：
   +  指定一个或多个AWS账户的账户 ID 作为 `principals` 参数。
   +  指定一个或多个 Aurora 数据库集群的 ARN 作为 `resourceArns` 参数。
   +  通过包含 `allowExternalPrincipals` 参数的布尔值来指定允许的账户 ID 是否能位于您的 AWS 企业外部。

#### 重新创建使用默认 RDS 密钥的集群
<a name="Aurora.Managing.Clone.CrossAccount.granting.defaultkey"></a>

如果您计划共享的加密集群使用默认 RDS 密钥，请确保重新创建集群。为此，请为数据库集群创建手动快照，使用 AWS KMS key，然后将集群还原到新集群。然后共享新集群。要执行此过程，请按以下步骤进行操作。

**重新创建使用默认 RDS 密钥的加密集群**

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

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

1.  选择您的快照。

1.  对于 **Actions (操作)**，选择 **Copy Snapshot (复制快照)**，然后选择 **Enable encryption (启用加密)**。

1.  对于 **AWS KMS key**，选择要使用的新加密密钥。

1.  还原复制的快照。为此，请按照 中的过程操作[从数据库集群快照还原](aurora-restore-snapshot.md) 新数据库实例使用新的加密密钥。

1.  （可选）如果您不再需要旧的数据库集群，请将其删除。为此，请按照 中的过程操作[删除数据库集群快照](aurora-delete-snapshot.md#DeleteDBClusterSnapshot) 在这样做之前，请确认您的新集群拥有所有必要的数据，并且您的应用程序能够成功地访问该数据。

### 检查是否与其他AWS账户共享您拥有的集群
<a name="Aurora.Managing.Clone.CrossAccount.confirming"></a>

 您可以检查其他用户是否有权共享集群。这样做可以帮助您了解集群是否正在接近跨账户克隆的最大数量限制。

 有关使用 AWS RAM 控制台共享资源的过程，请参阅 *AWS RAM 用户指南*中的[共享您拥有的资源](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing.html)。

#### AWS CLI
<a name="Aurora.Managing.Clone.CrossAccount.confirming.cli"></a>

**要查明您拥有的集群是否与其他AWS账户共享**
+  调用 AWS RAM CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/ram/list-principals.html](https://docs.aws.amazon.com/cli/latest/reference/ram/list-principals.html)，将账户 ID 用作资源拥有者，并将集群 ARN 用作资源 ARN。可使用以下命令来查看所有共享。结果指示允许哪些 AWS 账户克隆集群。

  ```
  aws ram list-principals \
      --resource-arns your_cluster_arn \
      --principals your_aws_id
  ```

#### AWS RAM API
<a name="Aurora.Managing.Clone.CrossAccount.confirming.api"></a>

**要查明您拥有的集群是否与其他AWS账户共享**
+  调用 AWS RAM API 操作 [ListPrincipals](https://docs.aws.amazon.com/ram/latest/APIReference/API_ListPrincipals.html)。将账户 ID 用作资源拥有者，并将集群 ARN 用作资源 ARN。

## 克隆另一个AWS账户拥有的集群
<a name="Aurora.Managing.Clone.CrossAccount.theirs"></a>

 要克隆另一个 AWS 账户拥有的集群，请使用 AWS RAM 获取创建克隆的权限。在获得必需权限后，您可以使用克隆 Aurora 集群的标准过程。

 您还可以检查您拥有的集群是否为其他 AWS 账户拥有的集群的克隆。

 有关在 AWS RAM 控制台中使用其他账户拥有的资源的过程，请参阅 *AWS RAM 用户指南*中的[访问与您共享的资源](https://docs.aws.amazon.com/ram/latest/userguide/working-with-shared.html)。

**Topics**
+ [查看克隆其他AWS账户拥有的集群的邀请](#Aurora.Managing.Clone.CrossAccount.viewing)
+ [接受共享其他 AWS 账户拥有的集群的邀请](#Aurora.Managing.Clone.CrossAccount.accepting)
+ [克隆另一个AWS账户拥有的 Aurora 集群](#Aurora.Managing.Clone.CrossAccount.cloning)
+ [检查数据库集群是否为跨账户克隆](#Aurora.Managing.Clone.CrossAccount.checking)

### 查看克隆其他AWS账户拥有的集群的邀请
<a name="Aurora.Managing.Clone.CrossAccount.viewing"></a>

 要处理克隆其他 AWS 组织中的 AWS 账户拥有的集群的邀请，请使用 AWS CLI、AWS RAM 控制台或 AWS RAM API。目前，您无法使用 Amazon RDS 控制台执行此过程。

 有关在 AWS RAM 控制台中处理邀请的过程，请参阅 *AWS RAM 用户指南*中的[访问与您共享的资源](https://docs.aws.amazon.com/ram/latest/userguide/working-with-shared.html)。

#### AWS CLI
<a name="Aurora.Managing.Clone.CrossAccount.viewing.cli"></a>

**查看克隆其他AWS账户拥有的集群的邀请**

1.  运行 AWS RAM CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/ram/get-resource-share-invitations.html](https://docs.aws.amazon.com/cli/latest/reference/ram/get-resource-share-invitations.html)。

   ```
   aws ram get-resource-share-invitations --region region_name
   ```

    上述命令的结果显示所有克隆集群的邀请，包括您已接受或拒绝的任何邀请。

1.  （可选）筛选列表，以便仅查看需要您执行操作的邀请。为此，请添加参数 `--query 'resourceShareInvitations[?status==`PENDING`]'`。

#### AWS RAM API
<a name="Aurora.Managing.Clone.CrossAccount.viewing.api"></a>

**查看克隆其他AWS账户拥有的集群的邀请**

1.  调用 AWS RAM API 操作 [https://docs.aws.amazon.com/ram/latest/APIReference/API_GetResourceShareInvitations.html](https://docs.aws.amazon.com/ram/latest/APIReference/API_GetResourceShareInvitations.html)。此操作返回所有此类邀请，包括您已接受或拒绝的任何邀请。

1.  （可选）通过在 `resourceShareAssociations` 返回字段中检查 `status` 值 `PENDING`，仅查找需要您执行操作的邀请。

### 接受共享其他 AWS 账户拥有的集群的邀请
<a name="Aurora.Managing.Clone.CrossAccount.accepting"></a>

 您可以接受共享其他 AWS 组织中的其他 AWS 账户拥有的集群的邀请。要处理这些邀请，请使用 AWS CLI、AWS RAM 和 RDS API 或 AWS RAM 控制台。目前，您无法使用 RDS 控制台执行此过程。

 有关在 AWS RAM 控制台中处理邀请的过程，请参阅 *AWS RAM 用户指南*中的[访问与您共享的资源](https://docs.aws.amazon.com/ram/latest/userguide/working-with-shared.html)。

#### AWS CLI
<a name="Aurora.Managing.Clone.CrossAccount.accepting.cli"></a>

**接受共享其他AWS账户的集群的邀请**

1.  通过运行 AWS RAM CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/ram/get-resource-share-invitations.html](https://docs.aws.amazon.com/cli/latest/reference/ram/get-resource-share-invitations.html) 查找邀请 ARN，如上所示。

1.  通过调用 AWS RAM CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/ram/accept-resource-share-invitation.html](https://docs.aws.amazon.com/cli/latest/reference/ram/accept-resource-share-invitation.html) 接受邀请，如下所示。

   对于 Linux、macOS 或 Unix：

   ```
   aws ram accept-resource-share-invitation \
     --resource-share-invitation-arn invitation_arn \
     --region region
   ```

   对于：Windows

   ```
   aws ram accept-resource-share-invitation ^
     --resource-share-invitation-arn invitation_arn ^
     --region region
   ```

#### AWS RAM 和 RDS API
<a name="Aurora.Managing.Clone.CrossAccount.accepting.api"></a>

**接受共享他人集群的邀请**

1.  通过调用 AWS RAM API 操作 [https://docs.aws.amazon.com/ram/latest/APIReference/API_GetResourceShareInvitations.html](https://docs.aws.amazon.com/ram/latest/APIReference/API_GetResourceShareInvitations.html) 查找邀请 ARN，如上所示。

1.  将 ARN 作为 `resourceShareInvitationArn` 参数传递到 RDS API 操作 [AcceptResourceShareInvitation](https://docs.aws.amazon.com/ram/latest/APIReference/API_AcceptResourceShareInvitation.html)。

### 克隆另一个AWS账户拥有的 Aurora 集群
<a name="Aurora.Managing.Clone.CrossAccount.cloning"></a>

 接受来自拥有数据库集群的 AWS 账户的邀请后（如上所示），您可以克隆集群。

#### 控制台
<a name="Aurora.Managing.Clone.CrossAccount.cloning.console"></a>

**克隆另一个AWS账户拥有的 Aurora 集群**

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

1.  在导航窗格中，选择 **Databases (数据库)**。

    在数据库列表的顶部，您应看到一个或多个 **Role (角色)** 值为 `Shared from account #account_id` 的项。出于安全原因，您只能看到有关原始集群的有限信息。您可以看到的属性是数据库引擎和版本等属性，这些属性在克隆的集群中必须相同。

1.  选择您打算克隆的集群。

1.  对于 **Actions (操作)**，选择 **Create clone (创建克隆)**。

1.  按照[控制台](Aurora.Managing.Clone.md#Aurora.Managing.Clone.Console)中的过程进行操作以完成对克隆集群的设置。

1. 根据需要，为克隆的集群启用加密。如果要克隆的集群已加密，则必须为克隆的集群启用加密。与您共享集群的 AWS 账户还必须共享用于加密集群的 KMS 密钥。您可以使用相同的 KMS 密钥来加密克隆，也可以使用您自己的 KMS 密钥。无法为使用原定设置 KMS 密钥加密的集群创建跨账户克隆。

    拥有加密密钥的账户必须通过使用密钥策略来向目标账户授予密钥的使用权限。此过程类似于共享加密快照的方式，使用密钥策略来向目标账户授予密钥的使用权限。

#### AWS CLI
<a name="Aurora.Managing.Clone.CrossAccount.cloning.cli"></a>

**克隆另一个AWS账户拥有的 Aurora 集群**

1.  接受来自拥有数据库集群的 AWS 账户的邀请，如上所示。

1.  通过在 RDS CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-to-point-in-time.html](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-to-point-in-time.html) 的 `restore-db-cluster-to-point-in-time` 参数中指定源集群的完整 ARN 来克隆集群，如下所示。

    如果未共享作为 `source-db-cluster-identifier` 传递的 ARN，则返回相同的错误，就像指定的集群不存在一样。

   对于 Linux、macOS 或 Unix：

   ```
   aws rds restore-db-cluster-to-point-in-time \
     --source-db-cluster-identifier=arn:aws:rds:arn_details \
     --db-cluster-identifier=new_cluster_id \
     --restore-type=copy-on-write \
     --use-latest-restorable-time
   ```

   对于：Windows

   ```
   aws rds restore-db-cluster-to-point-in-time ^
     --source-db-cluster-identifier=arn:aws:rds:arn_details ^
     --db-cluster-identifier=new_cluster_id ^
     --restore-type=copy-on-write ^
     --use-latest-restorable-time
   ```

1.  如果要克隆的集群已加密，请通过包含 `kms-key-id` 参数来加密克隆的集群。此 `kms-key-id` 值可以是用于加密原始数据库集群的值，也可以是您自己的 KMS 密钥。您的账户必须具有使用该加密密钥的权限。

   对于 Linux、macOS 或 Unix：

   ```
   aws rds restore-db-cluster-to-point-in-time \
     --source-db-cluster-identifier=arn:aws:rds:arn_details \
     --db-cluster-identifier=new_cluster_id \
     --restore-type=copy-on-write \
     --use-latest-restorable-time \
     --kms-key-id=arn:aws:kms:arn_details
   ```

   对于：Windows

   ```
   aws rds restore-db-cluster-to-point-in-time ^
     --source-db-cluster-identifier=arn:aws:rds:arn_details ^
     --db-cluster-identifier=new_cluster_id ^
     --restore-type=copy-on-write ^
     --use-latest-restorable-time ^
     --kms-key-id=arn:aws:kms:arn_details
   ```

    拥有加密密钥的账户必须通过使用密钥策略来向目标账户授予密钥的使用权限。此过程类似于共享加密快照的方式，使用密钥策略来向目标账户授予密钥的使用权限。下面是密钥策略的示例。

------
#### [ JSON ]

****  

   ```
   {
       "Id": "key-policy-1",
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Allow use of the key",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:user/KeyUser",
                       "arn:aws:iam::111122223333:root"
                   ]
               },
               "Action": [
                   "kms:CreateGrant",
                   "kms:Encrypt",
                   "kms:Decrypt",
                   "kms:ReEncrypt*",
                   "kms:GenerateDataKey*",
                   "kms:DescribeKey"
               ],
               "Resource": "*"
           },
           {
               "Sid": "Allow attachment of persistent resources",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:user/KeyUser",
                       "arn:aws:iam::111122223333:root"
                   ]
               },
               "Action": [
                   "kms:CreateGrant",
                   "kms:ListGrants",
                   "kms:RevokeGrant"
               ],
               "Resource": "*",
               "Condition": {
                   "Bool": {
                       "kms:GrantIsForAWSResource": true
                   }
               }
           }
       ]
   }
   ```

------

**注意**  
[restore-db-cluster-to-point-in-time](https://docs.aws.amazon.com/cli/latest/reference/rds/restore-db-cluster-to-point-in-time.html) AWS CLI 命令仅还原数据库集群，而不还原该数据库集群的数据库实例。要为恢复的数据库集群创建数据库实例，请调用 [create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance.html) 命令。在 `--db-cluster-identifier` 中指定恢复的数据库集群的标识符。  
只有在完成 `restore-db-cluster-to-point-in-time` 命令并且数据库集群可用后，您才能创建数据库实例。

#### RDS API
<a name="Aurora.Managing.Clone.CrossAccount.cloning.api"></a>

**克隆另一个AWS账户拥有的 Aurora 集群**

1.  接受来自拥有数据库集群的 AWS 账户的邀请，如上所示。

1.  通过在 RDS API 操作 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html) 的 `RestoreDBClusterToPointInTime` 参数中指定源集群的完整 ARN 来克隆集群。

    如果未共享作为 `SourceDBClusterIdentifier` 传递的 ARN，则返回相同的错误，就像指定的集群不存在一样。

1.  如果要克隆的集群已加密，请包含 `KmsKeyId` 参数以加密克隆的集群。此 `kms-key-id` 值可以是用于加密原始数据库集群的值，也可以是您自己的 KMS 密钥。您的账户必须具有使用该加密密钥的权限。

    在克隆卷时，目标账户必须具有使用用于加密源集群的加密密钥的权限。Aurora 使用 `KmsKeyId` 中指定的加密密钥对新的克隆集群进行加密。

    拥有加密密钥的账户必须通过使用密钥策略来向目标账户授予密钥的使用权限。此过程类似于共享加密快照的方式，使用密钥策略来向目标账户授予密钥的使用权限。下面是密钥策略的示例。

------
#### [ JSON ]

****  

   ```
   {
       "Id": "key-policy-1",
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Allow use of the key",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:user/KeyUser",
                       "arn:aws:iam::111122223333:root"
                   ]
               },
               "Action": [
                   "kms:CreateGrant",
                   "kms:Encrypt",
                   "kms:Decrypt",
                   "kms:ReEncrypt*",
                   "kms:GenerateDataKey*",
                   "kms:DescribeKey"
               ],
               "Resource": "*"
           },
           {
               "Sid": "Allow attachment of persistent resources",
               "Effect": "Allow",
               "Principal": {
                   "AWS": [
                       "arn:aws:iam::111122223333:user/KeyUser",
                       "arn:aws:iam::111122223333:root"
                   ]
               },
               "Action": [
                   "kms:CreateGrant",
                   "kms:ListGrants",
                   "kms:RevokeGrant"
               ],
               "Resource": "*",
               "Condition": {
                   "Bool": {
                       "kms:GrantIsForAWSResource": true
                   }
               }
           }
       ]
   }
   ```

------

**注意**  
[RestoreDBClusterToPointInTime](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_RestoreDBClusterToPointInTime.html) RDS API 操作仅还原数据库集群，而不还原该数据库集群的数据库实例。要为恢复的数据库集群创建数据库实例，请调用 [CreateDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstance.html) RDS API 操作。在 `DBClusterIdentifier` 中指定恢复的数据库集群的标识符。只有在完成 `RestoreDBClusterToPointInTime` 操作并且数据库集群可用后，您才能创建数据库实例。

### 检查数据库集群是否为跨账户克隆
<a name="Aurora.Managing.Clone.CrossAccount.checking"></a>

 `DBClusters` 对象标识每个集群是否是跨账户克隆。在运行 RDS CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html) 时，可使用 `describe-db-clusters` 选项查看您有权克隆的集群。但是，您看不到此类集群的大部分配置详细信息。

#### AWS CLI
<a name="Aurora.Managing.Clone.CrossAccount.checking.cli"></a>

**检查数据库集群是否为跨账户克隆**
+  调用 RDS CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html)。

   以下示例说明实际或潜在的跨账户克隆数据库集群在 `describe-db-clusters` 输出中的显示方式。对于您的 AWS 账户现在拥有的集群，`CrossAccountClone` 字段指示集群是否为另一个 AWS 账户拥有的数据库集群的克隆。

   在某些情况下，条目具有的AWS账号可能与您在`DBClusterArn`字段中的账号不同。在此情况下，该条目表示由其他 AWS 账户拥有且可克隆的集群。此类条目仅具有 `DBClusterArn` 字段。在创建克隆的集群时，指定与原始集群中相同的 `StorageEncrypted`、`Engine` 和 `EngineVersion` 值。

  ```
  $aws rds describe-db-clusters --include-shared --region us-east-1
  {
    "DBClusters": [
        {
            "EarliestRestorableTime": "2023-02-01T21:17:54.106Z",
            "Engine": "aurora-mysql",
            "EngineVersion": "8.0.mysql_aurora.3.02.0",
            "CrossAccountClone": false,
  ...
        },
        {
            "EarliestRestorableTime": "2023-02-09T16:01:07.398Z",
            "Engine": "aurora-mysql",
            "EngineVersion": "8.0.mysql_aurora.3.02.0",
            "CrossAccountClone": true,
  ...
        },
        {
            "StorageEncrypted": false,
            "DBClusterArn": "arn:aws:rds:us-east-1:12345678:cluster:cluster-abcdefgh",
            "Engine": "aurora-mysql",
            "EngineVersion": "8.0.mysql_aurora.3.02.0
    ]
  }
  ```

#### RDS API
<a name="Aurora.Managing.Clone.CrossAccount.checking.api"></a>

**检查数据库集群是否为跨账户克隆**
+  调用 RDS API 操作 [DescribeDBClusters](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusters.html)。

   对于您的 AWS 账户现在拥有的集群，`CrossAccountClone` 字段指示集群是否为另一个 AWS 账户拥有的数据库集群的克隆。在 AWS 字段中具有其他 `DBClusterArn` 账号的条目表示其他 AWS 账户拥有且可克隆的集群。这些条目仅具有 `DBClusterArn` 字段。在创建克隆的集群时，指定与原始集群中相同的 `StorageEncrypted`、`Engine` 和 `EngineVersion` 值。

   以下示例显示一个返回值，该值说明了实际和潜在的克隆的集群。

  ```
  {
    "DBClusters": [
        {
            "EarliestRestorableTime": "2023-02-01T21:17:54.106Z",
            "Engine": "aurora-mysql",
            "EngineVersion": "8.0.mysql_aurora.3.02.0",
            "CrossAccountClone": false,
  ...
        },
        {
            "EarliestRestorableTime": "2023-02-09T16:01:07.398Z",
            "Engine": "aurora-mysql",
            "EngineVersion": "8.0.mysql_aurora.3.02.0",
            "CrossAccountClone": true,
  ...
        },
        {
            "StorageEncrypted": false,
            "DBClusterArn": "arn:aws:rds:us-east-1:12345678:cluster:cluster-abcdefgh",
            "Engine": "aurora-mysql",
            "EngineVersion": "8.0.mysql_aurora.3.02.0"
        }
    ]
  }
  ```