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