

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

# 共享 AWS AppSync GraphQL APIs
<a name="sharing-graphql-apis"></a>

AWS AppSync 与 AWS Resource Access Manager (AWS RAM) 集成以启用资源共享。 AWS RAM 是一项服务，可让您 AWS 账户 与其他人或通过共享 AWS AppSync G APIs raphQL上的调用操作（查询、突变和订阅操作以及将请求连接到您的实时 WebSocket 端点）。 AWS Organizations使用 AWS RAM，您可以通过创建资源共享来共享您拥有的资源。资源共享指定要共享的资源以及与之共享资源的使用者。使用者包括以下各项。
+ 具体在其组织 AWS 账户 内部或外部 AWS Organizations
+ 其组织内部的组织单位 AWS Organizations
+ 整个组织都在 AWS Organizations

有关的更多信息 AWS RAM，请参阅《[AWS Resource Access Manager 用户指南》](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html)。

**Topics**
+ [共享 AWS AppSync GraphQL 的先决条件 APIs](#prerequisites-sharing-apis)
+ [分享 AWS AppSync GraphQL APIs](#share_graphal_apis)
+ [停止共享 AWS AppSync GraphQL APIs](#stop-sharing-apis)
+ [跨账户事件](#cross-account-events)

## 共享 AWS AppSync GraphQL 的先决条件 APIs
<a name="prerequisites-sharing-apis"></a>

共享 AWS AppSync GraphQL 需要 APIs 满足以下先决条件。
+ 要共享 AWS AppSync GraphQL API，您必须在自己的账户中拥有该API。 AWS 账户这意味着必须在您的账户中分配或配置 AWS AppSync GraphQL API。
+ 要与您的组织或中的组织单位共享 AWS AppSync GraphQL API AWS Organizations，必须启用与共享。 AWS Organizations有关更多信息，请参阅《AWS Resource Access Manager 用户指南》**中的[允许在 AWS Organizations内共享资源](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html#getting-started-sharing-orgs)。

## 分享 AWS AppSync GraphQL APIs
<a name="share_graphal_apis"></a>

要共享 AWS AppSync GraphQL API，请先使用创建资源共享。 AWS Resource Access Manager资源共享指定了要共享的资源、共享资源的使用者，以及主体可以执行的操作。当您与其他人共享自己拥有的 AWS AppSync GraphQL API 时 AWS 账户，您可以允许这些账户在您的账户中调用该 AWS AppSync API。 AWS 账户

如果您是组织中的一员 AWS Organizations，并且启用了组织内部共享，则会自动授予组织中的消费者访问共享资源的权限。否则，使用者将会收到加入资源共享的邀请，并在接受邀请后为其授予共享资源的访问权限。

**共享注意事项**
+ 您只能共享 AWS AppSync GraphQL APIs，不能共享其他 API 类型，例如事件。 APIs
+ 您只能共享在 AWS AppSync API 上配置了`AWS_IAM`其中一种授权模式的 GraphQL APIs 。

  `AWS_IAM`如果从共享 AppSync GraphQL API 的授权模式列表中删除，尽管资源共享可能仍然存在，但它将失效。
+ 您可以共享公共的 GraphQL 和私有的 AWS AppSync GraphQL APIs。
+ Private AWS AppSync GraphQL 始终 APIs 可以通过源站中的 VPC 端点进行访问 AWS 账户，并且支持所有授权模式，而不仅仅是。 VPCs `AWS_IAM`
+ 对于共享 AWS AppSync GraphQL APIs，仅管理 API 资源的权限，不支持对字段和类型以及字段资源的细粒度权限。当您共享 API 时，您就是在共享 API ARN 及其所有类型和字段。 ARNs 

### 使用 AWS RAM 控制台创建您拥有的资源共享
<a name="create-resource-share-owned"></a>

要共享 AWS AppSync GraphQL API，请使用RAM权限名称使用*AWS Resource Access Manager 用户指南*中[创建资源共享](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing-create.html)中所述的过程。`AWSRAMPermissionAppSyncGraphQLApiInvokeAccess`

### 使用控制台创建并使用客户托管权限共享私有 AWS AppSync GraphQL API AWS RAM
<a name="create-resource-share-managed-permission"></a>

要共享私有 AWS AppSync GraphQL API，请使用*AWS Resource Access Manager 用户*指南中创建[和使用客户托管权限中描述的步骤创建客户托管权限](https://docs.aws.amazon.com/ram/latest/userguide/create-customer-managed-permissions.html)。

例如，账户 A 的拥有者想要向账户 B 中的委托人授予访问私有 AWS AppSync GraphQL API PrivateApi (A) 的权限，用于通过 VPCE-B（账户 B 拥有的 VPC 终端节点）进行的调用。在这种情况下，账户 A 的所有者需要按如下方式创建 AWS RAM 客户托管权限。

```
{
    "Effect": "Allow",
    "Action": ["appsync:GraphQL"],
    "Condition": {
        "StringEqualsIgnoreCase": {
            "aws:SourceVpce": [
                "VPCE-B"
            ]
        }
    }
}
```

假设这个新的客户托管 AWS RAM 权限被命名为`private-api-A-access-via-vpce-b`。

要启用跨账户访问`PrivateApiA`通过`VPCE-B`，客户可以使用以下参数和上一个示例中的客户管理权限创建 AWS RAM 资源共享。
+ **资源类型：**`appsync:Apis`
+ **资源：**`arn:aws:appsync:us-west-2:A:apis/PrivateApiA`
+ **权限：**`private-api-A-access-via-vpce-b `（客户托管权限）
+ **主体：**`Account: B`

### 使用创建您拥有的资源共享 AWS CLI
<a name="create-resource-share-owned-cli"></a>

要使用共享 AWS AppSync GraphQL API AWS CLI，请使用带的`create-resource-share`命令`arn:aws:ram::aws:permission/AWSRAMPermissionAppSyncApiInvokeAccess`作为开关的`--permission-arns`值。

有关可用命令的完整列表 AWS RAM，请参阅 [AWS RAM CLI 参考](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ram/index.html)。

## 停止共享 AWS AppSync GraphQL APIs
<a name="stop-sharing-apis"></a>

要停止共享您拥有 APIs 的 AWS AppSync GraphQL，必须删除资源共享或更新与之共享资源的委托人。有关您要执行的操作，请参阅以下各节中的文档。

**使用 AWS RAM 控制台停止共享您拥有的资源**  
请参阅《AWS Resource Access Manager 用户指南》**中的[更新资源共享](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing-update.html)。

**要停止共享您拥有的资源，请使用 AWS CLI**  
使用 [disassociate-resource-share](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ram/disassociate-resource-share.html) 命令。

**使用 AWS RAM 控制台删除您拥有的资源共享**  
请参阅《AWS Resource Access Manager 用户指南》**中的[删除资源共享](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing-delete.html)。

**要删除您拥有的资源共享，请使用 AWS CLI**  
使用 [delete-resource-share](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ram/delete-resource-share.html) 命令。

有关可用命令的完整列表 AWS RAM，请参阅 [AWS RAM CLI 参考](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ram/index.html)。

## 跨账户事件
<a name="cross-account-events"></a>

您可以选择记录 AWS CloudTrail 数据事件，以监控和审计跨账户 GraphQL API AWS AppSync 活动。 DataPlane 有关更多信息，请参阅《AWS CloudTrail 用户指南》**中的[记录数据事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html)。