如何将 Route 53 私有托管区与其他 AWS 账户上的 VPC 关联?

2 分钟阅读
0

我想要将我的 Amazon Route 53 私有托管区与属于其他 AWS 账户的虚拟私有云 (VPC) 相关联。

解决方法

在以下解决方法中,使用其中一个选项运行相关命令:

  • **选项 1:**AWS 命令行界面(AWS CLI)。该解决方法使用两个示例 Amazon Elastic Compute Cloud(Amazon EC2)实例,一个用于账户 A,另一个用于账户 B。如果您没有两个 Amazon EC2 实例或无权启动新的 EC2 实例,请在您的本地计算机上使用 AWS CLI。使用来自两个账户的正确 AWS Identity and Access Management(IAM)凭证。有关更多信息,请参阅使用 IAM Identity Center 激活的命名配置文件
    **注意:**如果您在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI
  • 选项 2:AWS CloudShell(无需安装 AWS CLI)。

**注意:**您还可以使用 AWS SDK 或 Route 53 API 完成此过程。

  1. 使用账户 A 连接到 EC2 实例。

  2. 如果使用 AWS CLI,则运行以下命令来更新 AWS CLI 版本。配置 AWS CLI 使用 AWS Identity and Access Management(IAM)用户(有 Route 53 访问权限)的凭证。

pip3 install awscli --upgrade --user
  1. 在使用账户 A 的 EC2 实例中,运行以下命令列出可用的托管区。记下要与账户 B 关联的账户 A 的托管区 ID。
aws route53 list-hosted-zones
  1. 在使用账户 A 的 EC2 实例中运行以下命令。命令输出列出了可以与您的私有托管区关联的其他账户的 VPC。命令输出列出的是您提交一个或多个CreateVPCAssociationAuthorization请求时所使用的账户。
aws route53 list-vpc-association-authorizations --hosted-zone-id <hosted-zone-id>

**注意:**如果账户 B 中的 VPC 未出现在 VPC 关联授权列表中,则继续执行第 5 步。如果它确实出现在列表中,则继续执行第 6 步。

  1. 在使用账户 A 的 EC2 实例中运行以下命令。此命令授权账户 A 中的私有托管区与账户 B 中的 VPC 之间的关联。在以下命令中,使用您在上一步中获得的托管区 ID。在账户 B 中使用该 VPC 的 AWS 区域和 ID。

注意: 如果以下情况之一属实,则在命令中使用**--region**:

  • 您正在从其他区域的 EC2 实例运行命令。
  • 用户的凭证与 us-east-1 以外的区域相关联。
aws route53 create-vpc-association-authorization --hosted-zone-id <hosted-zone-id> --vpc VPCRegion=<region>,VPCId=<vpc-id> --region us-east-1
  1. 使用账户 B 连接到 EC2 实例。

  2. 在使用账户 B 的 EC2 实例中,运行以下命令。此命令在账户 A 中的私有托管区与账户 B 中的 VPC 之间创建关联。使用第 3 步中的托管区 ID。在账户 B 中使用该 VPC 的区域和 ID。

注意: 使用拥有 AssociateVPCWithHostedZoneDescribeVpcs API 权限的 IAM 用户或角色在账户 B 中运行以下命令。

aws route53 associate-vpc-with-hosted-zone --hosted-zone-id <hosted-zone-id> --vpc VPCRegion=<region>,VPCId=<vpc-id> --region us-east-1

注意:示例输出可能显示PENDING状态。发生这种情况是因为 VPC 无法使用私有托管区执行 DNS 解析。私有托管区与 VPC 关联并传播更改可能需要几分钟的时间。

  1. 最佳做法是在创建关联后删除关联授权。此步骤可防止您稍后重新创建相同的关联。要删除授权,请重新使用账户 A 连接到 EC2 实例。然后,运行以下命令:
aws route53 delete-vpc-association-authorization --hosted-zone-id <hosted-zone-id>  --vpc VPCRegion=<region>,VPCId=<vpc-id> --region us-east-1
  1. 完成以下步骤确认 VPC 与私有托管区的关联:

打开 Route 53 控制台

选择私有托管区的域名。

验证账户 B 托管区详细信息的 VPC ID。

来自账户 B 的 VPC 中的 EC2 实例现在可以解析账户 A 中私有托管区中的记录。

相关信息

使用私有托管区

AWS 官方
AWS 官方已更新 1 年前