跳至内容

如何在 Transit Gateway 中为另一个账户中的中转网关创建 Amazon VPC 连接?

3 分钟阅读
0

我想在 AWS Transit Gateway 中为另一个 AWS 账户中的中转网关创建 Amazon Virtual Private Cloud (Amazon VPC) 连接。

简短描述

要为另一个账户中的中转网关创建 VPC 连接,请使用 AWS Resource Access Manager (AWS RAM) 与拥有该 VPC 的账户共享中转网关。

在以下解决方法中,拥有中转网关的账户为源账户,拥有 VPC 的账户为目标账户。目标账户接受资源共享后,创建 VPC 连接,以便将您的 VPC 连接到源账户的共享中转网关。

您可以使用 AWS 管理控制台或 AWS 命令行界面 (AWS CLI) 完成以下步骤。

**注意:**如果您在运行 AWS CLI 命令时收到错误,请参阅排查 AWS CLI 错误。此外,请确保您使用的是最新版本的 AWS CLI

解决方法

**先决条件:**在为中转网关创建 VPC 连接之前,请验证目标账户中的 AWS Identity and Access Management (IAM) 用户或角色是否拥有创建服务相关角色的权限。在创建 VPC 连接期间,AWS 会自动创建 AWSServiceRoleForVPCTransitGateway 服务相关角色。此角色允许 Transit Gateway 在您的 VPC 子网中创建和管理弹性网络接口,并为连接配置必要的路由。

要验证您是否拥有所需的权限,请确认您的 IAM 策略包含以下声明:

{
  "Effect": "Allow",
  "Action": "iam:CreateServiceLinkedRole",
  "Resource": "arn:aws:iam::*:role/aws-service-role/transitgateway.amazonaws.com/AWSServiceRoleForTransitGateway*"

如果 IAM 用户或角色没有权限创建服务相关角色,您会收到“Access Denied”错误。

与目标账户共享中转网关

AWS RAM 控制台

完成以下步骤:

  1. 在源账户中,打开 AWS RAM 控制台
  2. 在 AWS 区域下拉列表中,选择中转网关所在的区域。
  3. 选择 Create a resource share(创建资源共享)。
  4. 输入以下信息:
    对于 Name(名称),请提供资源共享的名称。
    对于 Select resource type(选择资源类型),请选择 Transit gateway(中转网关),然后选择您的中转网关 ID。
  5. 选择 Next(下一步)。
  6. 选择与中转网关关联的托管权限
  7. 选择 Next(下一步)。
  8. 选择 Grant access to principals(向主体授予访问权限),然后输入以下信息:
    对于 Principals(主体),输入目标账户的账户 ID 或 AWS Organizations 中的账户的组织 ID。
    如果该账户不在组织中,请选择 Allow sharing with anyone(允许与任何人共享)。
    如果该账户在组织中,请选择 Allow sharing only within your organization(仅允许在组织内共享)。
    注意:要使用组织 ID 作为主体类型,请启用可信访问。要在创建资源共享后更新主体,请选择资源共享,然后选择修改
  9. 选择 Create resource share(创建资源共享)。

AWS CLI

**注意:**在以下命令中,将示例参数替换为以下值:

  • 对于 TGWSHARE,请提供资源共享的名称。
  • 对于 222222222222,请将其替换为目标账户的账户 ID。
  • 对于 resource-arns,请提供源账户的中转网关的 Amazon 资源名称 (ARN)。
  • 对于主体组织,请提供该组织的 ARN。
  • 对于 resource-share-arn,请提供要修改的现有资源共享的 ARN。

要使用非组织账户创建资源共享,请运行以下 create-resource-share 命令:

aws ram create-resource-share \
    --name TGWSHARE \
    --resource-arns arn:aws:ec2:region:123456789012:transit-gateway/tgw-1234567890abcdef0 \
    --principals 222222222222 \
    --allow-external-principals

要创建资源共享以仅允许访问组织账户,请运行以下 create-resource-share 命令:

aws ram create-resource-share \
    --name TGWSHARE \
    --resource-arns arn:aws:ec2:region:123456789012:transit-gateway/tgw-1234567890abcdef0 \
    --principals organizations::123456789012:organization/o-exampleorgid \
    --no-allow-external-principals

要修改现有的资源共享,请运行以下 update-resource-share 命令:

aws ram update-resource-share \
    --allow-external-principals \
    --resource-share-arn arn:aws:ram:us-west-2:123456789012:resource-share/7ab63972-b505-7e2a-420d-6f5d3EXAMPLE

有关更多信息,请参阅 Creating a resource share in AWS RAM(在 AWS RAM 中创建资源共享)。

接受目标账户中的中转网关共享

AWS RAM 控制台

有关说明,请参阅 Accept an AWS Transit Gateway resource share using the AWS Resource Access Manager console(使用 AWS Resource Access Manager 控制台接受 AWS Transit Gateway 资源共享)。

使用 Amazon VPC 控制台验证共享中转网关是否会出现在目标账户中。

AWS CLI

完成以下步骤:

  1. 运行以下 get-resource-share-invitations 命令列出待处理的资源共享邀请:

    aws ram get-resource-share-invitations
  2. 复制输出中的 resourceShareInvitationArn

  3. 运行以下 accept-resource-share-invitation 命令来接受邀请:

    aws ram accept-resource-share-invitation \
        --resource-share-invitation-arn arn:aws:ram:us-west-2:111111111111:resource-share-invitation/1e3477be-4a95-46b4-bbe0-c4001EXAMPLE

    **注意:**请将 resource-share-invitation-arn 替换为邀请的 ARN。

运行以下 describe-transit-gateways 命令,以验证共享中转网关是否出现在目标账户中:

aws ec2 describe-transit-gateways

在目标账户中创建 VPC 连接

Amazon VPC 控制台

有关说明,请参阅 Create a VPC attachment in AWS Transit Gateway(在 AWS Transit Gateway 中创建 VPC 连接)。

AWS CLI

运行以下 create-transit-gateway-vpc-attachment

aws ec2 create-transit-gateway-vpc-attachment \
    --transit-gateway-id SHARED-TRANSIT-GATEWAY-ID \
    --vpc-id DESTINATION-VPC-ID \
    --subnet-ids SUBNET-A SUBNET-B \
    --options DnsSupport=enable,Ipv6Support=disable

**注意:**请将 SHARED-TRANSIT-GATEWAY-ID 替换为共享中转网关的 ID,将 DESTINATION-VPC-ID 替换为目标 VPC 的 ID。请将 SUBNET-ASUBNET-B 替换为子网 ID。仅为每个可用区指定一个子网。为了提高可用性,最佳做法是在两个可用区中指定子网。中转网关使用每个指定子网的一个 IP 地址。

创建 VPC 连接后,检查状态。如果您启用了 Auto accept shared attachments(自动接受共享连接),中转网关会自动接受该连接。如果您在创建中转网关期间未启用 Auto accept shared attachments(自动接受共享连接),则状态显示 Pending acceptance(待接受)。要接受来自源账户的 VPC 连接,请参阅以下章节接受源账户中的 VPC 连接

接受源账户中的 VPC 连接

Amazon VPC 控制台

在源账户中,接受共享连接

AWS CLI

或者,运行以下 describe-transit-gateway-attachments AWS CLI 命令来列出 pendingAcceptance 连接:

aws ec2 describe-transit-gateway-attachments \
    --filters Name=state,Values=pendingAcceptance

然后,运行以下 accept-transit-gateway-vpc-attachment 命令来接受 VPC 连接:

aws ec2 accept-transit-gateway-vpc-attachment \
    --transit-gateway-attachment-ids TGW-ATTACH-1122

**注意:**请使用命令输出中的中转网关连接 ID。然后,将 TGW-ATTACH-1122 替换为 VPC 连接的 ID。

相关信息

Amazon VPC attachments in AWS Transit Gateway(AWS Transit Gateway 中的 Amazon VPC 连接)

How AWS RAM works with IAM(AWS RAM 如何与 IAM 配合使用)

Transit gateways in AWS Transit Gateway(AWS Transit Gateway 中的中转网关)

What is AWS Transit Gateway for Amazon VPC?(AWS Transit Gateway for Amazon VPC 是什么?)

AWS 官方已更新 5 个月前