使用共享网格。 - AWS App Mesh

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

使用共享网格。

您可以使用该 AWS Resource Access Manager 服务跨 AWS 账户共享您的 App Mesh 网格。共享网格允许不同 AWS 账户创建的资源在同一个网格中相互通信。

AWS 账户可以是网格资源所有者、网格使用者,或者两者兼而有之。消费者可以在与其账户共享的网格中创建资源。所有者可以在账户拥有的任何网格中创建资源。网格所有者可以与以下类型的网格使用者共享网格。

  • 其组织内部或外部的特定 AWS 帐户 AWS Organizations

  • 其组织内部的组织单位 AWS Organizations

  • 它的整个组织都在 AWS Organizations

有关共享网格的详细介绍,请参阅跨账户网格演练。 end-to-end GitHub

授予共享网格的权限

跨账户共享网格时,共享网格的 IAM 委托人需要权限,网格本身需要资源级权限。

授予共享网格的权限

IAM 委托人需要一组最低权限才能共享网格。我们建议使用AWSAppMeshFullAccessAWSResourceAccessManagerFullAccess托管 IAM 策略来确保您的 IAM 委托人拥有共享和使用共享网格所需的权限。

如果您使用自定义 IAM 策略appmesh:PutMeshPolicy,则需要appmesh:GetMeshPolicy、和appmesh:DeleteMeshPolicy操作。这些是仅限许可的 IAM 操作。如果 IAM 委托人未获得这些权限,则在尝试使用该 AWS RAM 服务共享网格时会发生错误。

有关该 AWS Resource Access Manager 服务使用 IAM 的方式的更多信息,请参阅AWS Resource Access Manager 用户指南中的如何 AWS RAM 使用 IAM

为网格授予权限

共享网格具有以下权限。

  • 消费者可以列出和描述与账户共享的网格中的所有资源。

  • 所有者可以列出和描述账户拥有的任何网格中的所有资源。

  • 所有者和使用者可以修改账户创建的网格中的资源,但他们不能修改其他账户创建的资源。

  • 消费者可以删除该账户创建的网格中的任何资源。

  • 所有者可以删除网格中任何账户创建的任何资源。

  • 所有者的资源只能引用同一账户中的其他资源。例如,虚拟节点只能引用 AWS Cloud Map 或与虚拟节点所有者属于同一账户的 AWS Certificate Manager 证书。

  • 所有者和使用者可以将 Envoy 代理作为账户拥有的虚拟节点连接到 App Mesh。

  • 所有者可以创建虚拟网关和虚拟网关路由。

  • 所有者和消费者可以列出标签,也可以在账户创建的网格中标记/取消标记资源。他们无法在网格中列出不是由账户创建的标签和标记/取消标记资源。

共享网格使用基于策略的授权。使用固定的权限集与网格共享。选择将这些权限添加到资源策略中,也可以根据 IAM 用户/角色选择可选的 IAM 策略。这些策略中允许的权限的交集,减去任何被拒绝的显式权限,决定了主体对网格的访问权限。

共享网格时,该 AWS Resource Access Manager 服务会创建一个名AWSRAMDefaultPermissionAppMesh为的托管策略,并将其与提供以下权限的 App Mesh 关联起来。

  • appmesh:CreateVirtualNode

  • appmesh:CreateVirtualRouter

  • appmesh:CreateRoute

  • appmesh:CreateVirtualService

  • appmesh:UpdateVirtualNode

  • appmesh:UpdateVirtualRouter

  • appmesh:UpdateRoute

  • appmesh:UpdateVirtualService

  • appmesh:ListVirtualNodes

  • appmesh:ListVirtualRouters

  • appmesh:ListRoutes

  • appmesh:ListVirtualServices

  • appmesh:DescribeMesh

  • appmesh:DescribeVirtualNode

  • appmesh:DescribeVirtualRouter

  • appmesh:DescribeRoute

  • appmesh:DescribeVirtualService

  • appmesh:DeleteVirtualNode

  • appmesh:DeleteVirtualRouter

  • appmesh:DeleteRoute

  • appmesh:DeleteVirtualService

  • appmesh:TagResource

  • appmesh:UntagResource

共享网格的先决条件

要共享网格,您必须满足以下先决条件。

  • 您必须在自己的 AWS 账户中拥有网格。无法共享已与您共享的网格。

  • 要与您的组织或 AWS Organizations内的组织单位共享 AWS Organizations,您必须允许与 共享。有关更多信息,请参阅AWS RAM 《用户指南》中的允许与 AWS Organizations 共享。

  • 您的服务必须部署在跨账户共享连接的 Amazon VPC 中,其中包括您要相互通信的网格资源。共享网络连接的一种方法是将您要在网格中使用的所有服务部署到共享子网。有关更多信息和限制,请参阅共享子网

  • 服务必须可通过 DNS 发现或 AWS Cloud Map。有关服务发现的更多信息,请参阅虚拟节点

网格共享与 AWS Resource Access Manager (AWS RAM) 集成。 AWS RAM 是一项服务,可让您与任何 AWS 账户或通过任何账户共享 AWS 资源 AWS Organizations。使用 AWS RAM,您可以通过创建资源共享来共享您拥有的资源。资源共享指定要共享的资源以及与之共享资源的使用者。消费者可以是个人 AWS 帐户、组织单位或整个组织 AWS Organizations。

有关的更多信息 AWS RAM,请参阅《AWS RAM 用户指南》

共享网格

共享网格可以让不同账户创建的网格资源在同一个网格中相互通信。您只能共享自己拥有的网格。要共享网格,您必须将它添加到资源共享。资源共享是一种 AWS RAM 允许您跨 AWS 账户共享资源的资源。资源共享指定要共享的资源以及与您共享这些资源的使用者。在使用 Amazon Linux 控制台共享网格时,必须将它添加到现有资源共享。要将网格添加到新的资源共享,使用AWS RAM 控制台创建资源共享。

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

您可以使用 AWS RAM 控制台或共享您拥有的网格 AWS CLI。

使用 AWS RAM 控制台共享您拥有的网格

有关说明,请参阅AWS RAM 《用户指南》中的创建资源共享。选择资源类型时,选择网格,然后选择要共享的网格。如果未列出任何网格,请先创建网格。有关更多信息,请参阅 创建服务网格

要共享您拥有的网格,请使用 AWS CLI

使用 create-resource-share 命令。对于 --resource-arns 选项,请指定要共享网格的 ARN。

将已共享的网格取消共享

取消共享网格时,App Mesh 会禁止网格的前使用者进一步访问网格。但是,App Mesh 不会删除使用者创建的资源。取消共享网格后,只有网格所有者才能访问和删除资源。App Mesh 可防止在网格中拥有资源的账户在取消共享网格后接收配置信息。App Mesh 还可以防止任何其他在网格中拥有资源的账户从非共享网格中接收配置信息。只有网格的所有者才能取消共享。

要取消共享您拥有的已共享网格,必须从资源共享中将其删除。您可以使用 AWS RAM 控制台或 AWS CLI.

使用控制台取消共享您拥有的共享网格 AWS RAM

请参阅AWS RAM 《用户指南》中的更新资源共享

要取消共享您拥有的共享网格,请使用 AWS CLI

使用 disassociate-resource-share 命令。

标识共享的网格

所有者和使用者可以使用 Amazon Linux 控制台识别共享网格和网格资源 AWS CLI

使用 Amazon Linx 控制台识别共享网格
  1. 打开 App Mesh 控制台,网址为 https://console.aws.amazon.com/appmesh/

  2. 在左侧导航栏中,选择网格网格所有者列中列出了每个网格的网格所有者的账户 ID。

  3. 从左侧导航栏中,选择虚拟服务虚拟路由器虚拟节点。您可以看到网格所有者的账户 ID 和每个资源的资源所有者

要使用识别共享网格 AWS CLI

使用 aws appmesh list resource 命令,例如 aws appmesh list-meshes。该命令返回您拥有的网格以及与您共享的网格。该meshOwner属性显示的 AWS 账户 IDmeshOwnerresourceOwner属性显示资源所有者的 AWS 账户 ID。对任何网格资源运行的任何命令都会返回这些属性。

您附加到共享网格的用户定义标签仅适用于您的 AWS 账户。它们不适用于与之共享网格的其他账户。另一个账户中的网格 aws appmesh list-tags-for-resource 命令被拒绝访问。

计费和计量

共享网格不会产生额外费用。

实例配额

网格的所有配额也适用于共享网格,无论谁在网格中创建了资源。只有网格所有者才能申请增加配额。有关更多信息,请参阅 App Mesh 服务限额。该 AWS Resource Access Manager 服务也有配额。有关更多信息,请参阅服务限额