

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 在 AWS RAM 中更新资源共享
<a name="working-with-sharing-update"></a>

您可以通过以下方式随时更新 AWS RAM 中的资源共享：
+ 您可以向您创建的资源共享添加主体、资源或标签。
+ 对于支持超过默认 AWS 托管权限的资源类型，您可以选择将哪种托管权限应用于每种类型的资源。
+ 当附加到资源共享的托管权限具有新的默认版本时，您可以更新托管权限以使用新版本。
+ 您可以通过从资源共享中删除主体或资源，撤消对共享资源的访问权限。如果您撤消访问权限，则主体不再对共享资源具有访问权限。

**注意**  
如果资源共享为空或仅包含支持退出资源共享的资源类型，则您与之共享资源的主体可以退出该共享。如果资源共享包含不支持退出的资源类型，则会显示一条消息，告知主体他们必须联系共享所有者。在这种情况下，作为资源共享的所有者，您必须从资源共享中移除主体。有关不支持此操作的资源类型的列表，请参阅[退出资源共享的先决条件](working-with-shared-leave.md#working-with-shared-leave-prerequisites)。

------
#### [ Console ]

**要更新资源共享，请执行以下操作：**

1. 导航到 AWS RAM 控制台中的**[由我共享：资源共享](https://console.aws.amazon.com/ram/home#OwnedResourceShares:)**页面。

1. 由于 AWS RAM 资源共享存在于特定 AWS 区域，因此，请从控制台右上角的下拉列表中选择相应的 AWS 区域。要查看包含全球资源的资源共享，您必须将 AWS 区域设置为美国东部（弗吉尼亚州北部）（`us-east-1`）。有关共享全球资源的更多信息，请参阅[共享区域资源（相较于全球资源）](working-with-regional-vs-global.md)。

1. 选择资源共享，然后选择**修改**。

1. 在**步骤 1：指定资源共享详细信息**中，查看资源共享详细信息，并在需要时更新以下任意内容：

   1. （可选）要更改资源共享的名称，请编辑**名称**。

   1. （可选）要将资源添加到资源共享，请在**资源**下，选择资源的类型，然后选中要将其添加到资源共享的资源旁边的复选框。仅当您在 AWS 管理控制台 中将区域设置为美国东部（弗吉尼亚州北部）（`us-east-1`）时，全球资源才会显示。

   1. （可选）要从资源共享中移除资源，请在**选定资源**下找到该资源，然后选择资源 ID 旁边的 **X**。

   1. （可选）要向资源共享添加标签，请在**标签**下方的空白文本框中，输入标签键和值。要添加多个标签键和值对，请选择**添加新标签**。最多可以添加 50 个标签。

   1. 要从资源共享中移除标签，请在**标签**下，找到该标签并选择其旁边的**移除**。

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

1. （可选）在**步骤 2：将托管权限与每种资源类型关联**中，您可以选择将 AWS 创建的托管权限与资源类型相关联，选择现有的客户托管权限，也可以创建自己的客户托管权限。有关更多信息，请参阅 [托管权限的类型](security-ram-permissions.md#permissions-types)。

   您也可以选择**创建客户托管权限**，以构建符合共享使用案例要求的客户托管权限。有关更多信息，请参阅 [创建客户托管权限](create-customer-managed-permissions.md#create_cmp)。完成该过程后，选择 ![Refresh icon](http://docs.aws.amazon.com/zh_cn/ram/latest/userguide/images/refresh_icon.PNG)，然后您可以从**托管权限**下拉列表中选择新的客户托管权限。

   要显示托管权限允许的操作，请展开**查看该托管权限的策略模板**。

1. 如果当前分配给资源共享的托管权限版本不是当前默认版本，则您可以通过选择**更新到默认版本**，更新到默认版本。
**注意**  
在完成最后一步之后保存对资源共享所做的更改之前，您可以通过选择**还原到以前的版本**，取消版本更新。但是，对于 AWS 托管权限，保存资源共享后，更改即为最终更改，您无法再返回到以前的版本。

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

1. 在**步骤 3：选择允许访问的主体**中，查看选定的主体，并在需要时更新以下任一内容：

   1. （可选）要更改是否启用与组织内部或外部的主体共享，请选择以下选项之一：
      + 要与组织外部的 AWS 账户或者单个 IAM 角色或用户共享资源，请选择**允许与外部主体共享**。
      + 要将资源共享限制为仅 AWS Organizations 中组织的主体，请选择**仅允许与组织内的主体共享**。

   1. 对于**主体**，请执行以下操作：
      + （可选）要在组织内部添加组织、组织单位（OU）或成员 AWS 账户，请打开**显示组织结构**以显示组织的树视图。然后，选中要添加的每个主体旁边的复选框。
**重要**  
当您与组织或 OU 共享，并且该范围包括拥有资源共享的账户时，共享账户中的所有主体都会自动获得对共享中资源的访问权限。授予的访问权限由与共享关联的托管权限定义。这是因为 AWS RAM 附加到共享中每个资源的基于资源的策略使用 `"Principal": "*"`。有关更多信息，请参阅 [在基于资源的策略中使用 "Principal": "\*" 的影响](getting-started-terms-and-concepts.md#term-principal-star)。  
其他所使用账户中的主体无法立即访问共享的资源。其他账户的管理员必须首先将基于身份的权限策略附加到相应的主体。这些策略必须授予对资源共享中各个资源 ARN 的 `Allow` 访问权限。这些策略中的权限不能超过与资源共享关联的托管权限中指定的权限。
**注意**  
仅当启用与 AWS Organizations 的共享功能并且您以组织管理账户的主体身份登录时，才会显示**显示组织结构**切换开关。  
您不能使用此方法来指定组织外部的 AWS 账户、IAM 角色或用户。相反，您必须通过输入其标识符来添加这些主体，这些标识符显示在**显示组织结构**切换开关下方的文本框中。请参见下一个要点。
      + （可选）要按标识符添加主体，请从下拉列表中选择主体类型，然后输入主体的 ID 或 ARN。最后，选择**添加**。

        如果您选择单个 AWS 账户，则只有该账户才能访问资源共享。您可以选择以下任一选项。
        + **其他 AWS 账户（资源所有者除外）**- 使资源可供其他账户使用。该账户的管理员必须使用基于身份的权限策略向个人角色和用户授予对共享资源的访问权限，以完成该过程。这些权限不能超过附加到资源共享的托管权限中定义的权限。
        + **该 AWS 账户（资源所有者）**- 资源拥有账户中的所有角色和用户都将自动获得由附加到资源共享的托管权限所定义的访问权限。
      + 添加的内容会立即显示在**选定的主体**列表中。

        然后，您可以重复此步骤，添加其他账户、OU 或您的组织。
      + （可选）要删除主体，请在**选定的主体**下找到主体，选中其复选框，然后选择**取消选择**。

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

1. 在**步骤 4：查看和更新**中，查看资源共享的配置详细信息。

1. 要更改任何步骤的配置，请选择与要返回的步骤对应的链接，然后进行所需的更改。

   如果任何托管权限仍在使用默认版本以外的版本，则您可以选择**更新到默认版本**来解决这个问题。

1. 完成更改后，选择**更新资源共享**。

------
#### [ AWS CLI ]

**要更新资源共享，请执行以下操作：**  
您可以使用以下 AWS CLI 命令修改资源共享：
+ 要重命名资源共享或更改是否允许使用外部主体，请使用命令 [https://docs.aws.amazon.com/cli/latest/reference/ram/update-resource-share.html](https://docs.aws.amazon.com/cli/latest/reference/ram/update-resource-share.html)。以下示例重命名了指定的资源共享，并将其设置为仅允许来自其组织的主体。您必须使用包含资源共享的 AWS 区域所对应的服务端点。

  ```
  $ aws ram update-resource-share \
      --region us-east-1 \
      --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/7ab63972-b505-7e2a-420d-6f5d3EXAMPLE \
      --name "my-renamed-resource-share" \
      --no-allow-external-principals
  {
      "resourceShare": {
          "resourceShareArn": "arn:aws:ram:us-east-1:123456789012:resource-share/7ab63972-b505-7e2a-420d-6f5d3EXAMPLE",
          "name": "my-renamed-resource-share",
          "owningAccountId": "123456789012",
          "allowExternalPrincipals": false,
          "status": "ACTIVE",
          "creationTime": 1565295733.282,
          "lastUpdatedTime": 1565303080.023
      }
  }
  ```
+ 要将资源添加到资源共享，请使用命令 [https://docs.aws.amazon.com/cli/latest/reference/ram/associate-resource-share.html](https://docs.aws.amazon.com/cli/latest/reference/ram/associate-resource-share.html)。以下示例将子网添加到指定的资源共享。

  ```
  $ aws ram associate-resource-share \
      --region us-east-1 \
      --resource-arns arn:aws:ec2:us-east-1:123456789012:subnet/subnet-0250c25a1f4e15235 \
      --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/7ab63972-b505-7e2a-420d-6f5d3EXAMPLE
  {
      "resourceShareAssociations": [
          "resourceShareArn": "arn:aws:ram:us-east-1:123456789012:resource-share/7ab63972-b505-7e2a-420d-6f5d3EXAMPLE",
          "associatedEntity": "arn:aws:ec2:us-east-1:123456789012:subnet/subnet-0250c25a1f4e15235",
          "associationType": "RESOURCE",
          "status": "ASSOCIATING",
          "external": false
      ]
  }
  ```
+ 要为资源共享中的资源类型添加或替换托管权限，请使用命令 [https://docs.aws.amazon.com/cli/latest/reference/ram/list-permissions.html](https://docs.aws.amazon.com/cli/latest/reference/ram/list-permissions.html) 和 [https://docs.aws.amazon.com/cli/latest/reference/ram/associate-resource-share-permission.html](https://docs.aws.amazon.com/cli/latest/reference/ram/associate-resource-share-permission.html)。您只能为资源共享中的每种资源类型分配一个托管权限。如果您尝试向已具有托管权限的资源类型添加托管权限，则必须包含 `--replace` 选项，否则命令将失败并出现错误。

  以下示例命令列出了可用于 Amazon Elastic Compute Cloud（Amazon EC2）子网的托管权限的 ARN，然后使用其中一个 ARN 替换当前为指定资源共享中该资源类型分配的 AWS 托管权限。

  ```
  $ aws ram list-permissions \
      --resource-type ec2:Subnet
  {
      "permissions": [
          {
              "arn": "arn:aws:ram::aws:permission/AWSRAMDefaultPermissionSubnet",
              "version": "1",
              "defaultVersion": true,
              "name": "AWSRAMDefaultPermissionSubnet",
              "resourceType": "ec2:Subnet",
              "creationTime": "2020-02-27T11:38:26.727000-08:00",
              "lastUpdatedTime": "2020-02-27T11:38:26.727000-08:00"
          }
      ]
  }
  $ aws ram associate-resource-share-permission \
      --region us-east-1 \
      --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/f1d72a60-da19-4765-b4f9-e27b658b15b8 \
      --permission-arn arn:aws:ram::aws:permission/AWSRAMDefaultPermissionSubnet
  {
      "returnValue": true
  }
  ```
+ 要从资源共享中移除资源，请使用命令 [https://docs.aws.amazon.com/cli/latest/reference/ram/disassociate-resource-share.html](https://docs.aws.amazon.com/cli/latest/reference/ram/disassociate-resource-share.html)。以下示例从指定的资源共享中移除具有指定 ARN 的 Amazon EC2 子网。

  ```
  $ aws ram disassociate-resource-share \
      --region us-east-1 \
      --resource-arns arn:aws:ec2:us-east-1:123456789012:subnet/subnet-0250c25a1f4e15235 \
      --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/7ab63972-b505-7e2a-420d-6f5d3EXAMPLE
  {
      "resourceShareAssociations": [
          "resourceShareArn": "arn:aws:ram:us-east-1:123456789012:resource-share/7ab63972-b505-7e2a-420d-6f5d3EXAMPLE",
          "associatedEntity": "arn:aws:ec2:us-east-1:ubnet/subnet-0250c25a1f4e15235",
          "associationType": "RESOURCE",
          "status": "DISASSOCIATING",
          "external": false
      ]
  }
  ```
+ 要修改附加到资源共享的标签，请使用命令 [https://docs.aws.amazon.com/cli/latest/reference/ram/tag-resource.html](https://docs.aws.amazon.com/cli/latest/reference/ram/tag-resource.html) 和 [https://docs.aws.amazon.com/cli/latest/reference/ram/untag-resource.html](https://docs.aws.amazon.com/cli/latest/reference/ram/untag-resource.html)。以下示例将标签 `project=lima` 添加到指定的资源共享。

  ```
  $ aws ram tag-resource \
      --region us-east-1 \
      --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/f1d72a60-da19-4765-b4f9-e27b658b15b8 \
      --tags key=project,value=lima
  ```

  以下示例从指定的资源共享中移除键为 `project` 的标签。

  ```
  $ aws ram untag-resource \
      --region us-east-1 \
      --resource-share-arn arn:aws:ram:us-east-1:123456789012:resource-share/f1d72a60-da19-4765-b4f9-e27b658b15b8 \
      --tag-keys=project
  ```

  如果成功，标记命令不会产生任何输出。

------