本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
共享 AWS AppSync GraphQL API
AWS AppSync 与 AWS Resource Access Manager(AWS RAM)集成以启用资源共享。AWS RAM 是一项服务,让您可以与其他 AWS 账户或通过 AWS Organizations 共享 AWS AppSync GraphQL API 上的调用操作(查询、变更和订阅操作,以及将请求连接到实时 WebSocket 端点)。利用 AWS RAM,您可通过创建 资源共享来共享您拥有的资源。资源共享指定要共享的资源以及与之共享资源的使用者。使用者包括以下各项。
-
AWS Organizations 中其组织内部或外部的特定 AWS 账户
-
AWS Organizations 中其组织内部的组织单元
-
AWS Organizations 中的整个所织
有关 AWS RAM 的更多信息,请参阅 AWS Resource Access Manager 用户指南。
共享 AWS AppSync GraphQL API 的先决条件
共享 AWS AppSync GraphQL API 的先决条件如下。
-
要共享 AWS AppSync GraphQL API,您必须在自己的 AWS 账户中拥有该 API。这意味着 AWS AppSync GraphQL API 必须分配或预调配到您的账户。
-
要与您的组织或 AWS Organizations 内的组织单位共享 AWS AppSync GraphQL API,您必须允许与 AWS Organizations 共享。有关更多信息,请参阅《AWS Resource Access Manager 用户指南》中的允许在 AWS Organizations 内共享资源。
共享 AWS AppSync GraphQL API
要共享 AWS AppSync GraphQL API,先使用 AWS Resource Access Manager 创建资源共享。资源共享指定了要共享的资源、共享资源的使用者,以及主体可以执行的操作。当您与其他 AWS 账户共享自己拥有的 AWS AppSync GraphQL API 时,可以允许这些账户调用您的 AWS 账户中的该 AWS AppSync API。
如果您属于 AWS Organizations 中的某个组织,并启用了组织内共享,则组织中的使用者将自动获得对共享资源的访问权限。否则,使用者将会收到加入资源共享的邀请,并在接受邀请后为其授予共享资源的访问权限。
共享注意事项
-
您只能共享 AWS AppSync GraphQL API,不能共享其他 API 类型,例如事件 API。
-
您只能共享已在 API 上将
AWS_IAM配置为其中一种授权模式的 AWS AppSync GraphQL API。如果已从共享 AppSync GraphQL API 的授权模式列表中移除
AWS_IAM,那么即使可能仍存在资源共享,但实际上也无法使用。 -
您可以共享公有和私有 AWS AppSync GraphQL API。
-
私有 AWS AppSync GraphQL API 始终可以通过源 AWS 账户的 VPC 中的 VPC 端点进行访问,而且支持所有授权模式,而不仅仅是
AWS_IAM。 -
对于共享 AWS AppSync GraphQL API,权限仅针对 API 资源进行管理,不支持对字段、类型及字段资源的细粒度权限控制。当您共享 API 时,您就是共享 API ARN 及其所有类型和字段的 ARN。
使用 AWS RAM 控制台创建您拥有的资源共享
要使用 RAM 权限名称 AWSRAMPermissionAppSyncGraphQLApiInvokeAccess 来共享 AWS AppSync GraphQL API,请按照《AWS Resource Access Manager 用户指南》中的创建资源共享中所述的程序操作。
使用 AWS RAM 控制台创建并使用客户托管权限来共享私有 AWS AppSync GraphQL API
要共享私有 AWS AppSync GraphQL API,请使用《AWS Resource Access Manager 用户指南》中的创建和使用客户托管权限中描述的程序来创建客户托管权限。
例如,账户 A 的拥有者想要向账户 B 中的主体授予访问私有 AWS AppSync GraphQL API(PrivateApiA)的权限,用于通过 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。
要通过 VPCE-B 启用对 PrivateApiA 的跨账户访问,客户可以使用以下参数和上一个示例中的客户托管权限创建 AWS RAM 资源共享。
资源类型:
appsync:Apis资源:
arn:aws:appsync:us-west-2:A:apis/PrivateApiA权限:
private-api-A-access-via-vpce-b(客户托管权限)主体:
Account: B
使用 AWS CLI 创建您拥有的资源共享
要使用 AWS CLI 共享 AWS AppSync GraphQL API,请使用 create-resource-share 命令,并将 arn:aws:ram::aws:permission/AWSRAMPermissionAppSyncApiInvokeAccess 作为 --permission-arns 开关的值。
有关 AWS RAM 的可用命令的完整列表,请参阅 AWS RAM CLI 参考
停止共享 AWS AppSync GraphQL API
要停止共享您拥有的 AWS AppSync GraphQL API,您必须删除资源共享或更新与之共享了资源的主体。有关您要执行的操作,请参阅以下各节中的文档。
- 要使用 AWS RAM 控制台停止共享您拥有的资源
-
请参阅《AWS Resource Access Manager 用户指南》中的更新资源共享。
- 要使用 AWS CLI 停止共享您拥有的资源
-
使用 disassociate-resource-share
命令。 - 使用 AWS RAM 控制台删除您拥有的资源共享
-
请参阅《AWS Resource Access Manager 用户指南》中的删除资源共享。
- 使用 AWS CLI 删除您拥有的资源共享
-
使用 delete-resource-share
命令。
有关 AWS RAM 的可用命令的完整列表,请参阅 AWS RAM CLI 参考
跨账户事件
您可以选择记录 AWS CloudTrail 数据事件,来监控和审计跨账户 AWS AppSync GraphQL API DataPlane 活动。有关更多信息,请参阅《AWS CloudTrail 用户指南》中的记录数据事件。