使用 Former2 解决跨账户/区域 Amazon VPC 资源迁移 您所在的位置:网站首页 php迁移java 使用 Former2 解决跨账户/区域 Amazon VPC 资源迁移

使用 Former2 解决跨账户/区域 Amazon VPC 资源迁移

2023-05-31 01:22| 来源: 网络整理| 查看: 265

Amazon VPC 是一个让客户能够在自己定义的逻辑隔离的虚拟网络中启动 AWS 资源的服务。作为 AWS 的基础服务之一, Amazon VPC 是部署大多数 AWS 服务(例如 Amazon EC2,Amazon RDS 等)最重要的前提条件。常用的 Amazon VPC 资源包括 Subnet,Route Table,Internet Gateway,NAT Gateway 等。

在一些情况下,比如容灾,公司之间收购等,客户需要将在 AWS 的资源从一个账户/区域复制到另一个账户/区域。为了减少对其他服务的影响,在进行 Amazon VPC 资源复制的时候,客户通常希望保留原有的配置(例如子网的规划,路由规则等)。如果客户当初搭建 Amazon VPC 的时候没有使用类似 AWS CloudFormation 的工具,那么在复制的时候只能参考现有的 Amazon VPC 资源在新的账号/区域手动创建新的 Amazon VPC 资源。如果现有的 Amazon VPC 设计复杂,涉及到几十个子网和路由,手动创建资源不但费时费力,还容易出现错误,给接下来的上层业务搬迁带来不必要的挑战。

Former2 是一款免费的工具,可以通过扫描 AWS 账户资源自动生成相对应的 IaaS 模版,比如 AWS CloudFormation 和 Terraform。使用生成的模版,客户可以在新的账号/区域自动部署 Amazon VPC 资源并保留原有的配置。

本文将演示如何使用 Former2 对以下常用 Amazon VPC 资源进行跨区域的复制:

Amazon VPC Subnet Route Table Routes Internet Gateway NAT Gateway 1. 先决条件 安装浏览器插件

选择您常用的浏览器,安装 Former2 的浏览器插件。目前只支持 Firefox,Google Chrome 和 Microsoft Edge 这三种浏览器。

准备扫描用户凭据

Former2 需要使用 AWS IAM 用户的 Access Key ID 和 Secret Access Key 来获取权限对源账户里现有的资源进行扫描。为了安全起见,建议在原账号下创建一个新的 AWS IAM 用户,赋予 ReadOnlyAccess 权限,扫描后可删除该用户。

虽然工具提供可视化操作,但是使用者必须熟悉 CloudFormation 或者 Terraform,才能对错误进行诊断和修改。 2. 配置用户凭据

登录 former2.com 网站,在左边的菜单栏里选择 Setup->Credentials,然后将上文中新创建的原账号下的用户 Access Key ID/Secret Access Key 填入,并在右上角选择要扫描的区域。

如果客户出于安全考虑,无法将 Access Key ID 和 Secret Access Key 上传到 former2 的网站,可以考虑在本地自建 former2。源代码地址为 https://github.com/iann0036/former2。

3. 扫描规则

配置完扫描所用的用户凭据,点击左边菜单栏里的 Settings 进行扫描规则的配置。Default Output 可以选择输出的模版类型,例如 AWS CloudFormation 和 Terraform。建议开启 Skip Irrelevant Resources 忽略不必要资源,并关闭 Enable Related Resources。如果有使用默认的 Amazon VPC 资源,还需要开启 include Default Resources。

4. 扫描 Amazon VPC 资源

配置完扫描规则后,点击左边的菜单栏里的 Networking & Content Delivery,选择 VPC,点击右上角的 Scan Account 开始扫描。

5. 选择需要复制的资源 扫描完成后,在被发现的 Amazon VPC 资源里选中需要复制的 VPC,并点击 Add Selected。

添加后可以看到左上方的 Generate 旁边多了一个数字,这个数字代表被选中资源的数量。

按照上面的方式添加其他 Amazon VPC 资源。注意只添加在上一步所选 Amazon VPC 的相应资源,添加非所选 Amazon VPC 的资源会产生无效的关连资源,导致创建失败。 请勿添加 VPC CIDR Blocks,SubnetIPv6 CIDR Blocks 等含有 IPv6 地址的资源,因为此类资源在创建时会因为造成 IP 地址冲突而失败。 建议只添加图中被圈起来的资源,被绿色圈起来的资源可以直接添加,被黄色圈起来的资源需要在添加时或者添加后进行细微的调整。其他资源(例如 VPC Peering,Transit Gateway)更加适合手动迁移。

在选择 Elastic IPs 时请注意,只勾选有 AllocationID 的项,忽略没有 AllocationID 的项。

在选择 Routes 的时候, 注意不要勾选含有未迁移资源的路由规则,例如涉及到 Transit Gateway,VPN Gateway, VPC Peering 的路由。 6. 生成 CloudFormation 模版

资源添加完毕后,点击左上方的 Generate 生成 CloudFormation 的模版。

检查生成的 CloudFormation 模版里面的以下资源:

EC2Subnet:检查所有 EC2Subnet 资源是否含有 IPv6 地址段,并删除相应的 IPv6 配置。

7. 使用 CloudFormation 在目标账号/区域创建 Amazon VPC 资源 将 Former2 生成 CloudFormation下载到本地,默认文件名为 yaml。

在目标账号/区域使用 AWS CloudFormation 服务和上面的 yaml 文件创建新的 Amazon VPC 资源。

通过 AWS CloudFormation Events 查看资源创建的状态。

8. 常见错误诊断

在使用 Former2 生成 CloudFormation 模版的过程中通常不会遇到错误,绝大多数的报错都会出现在使用 AWS CloudFormation 服务和 Former2 生成的模版在目标账号/区域创建资源的时候。通常都是因为 Former2 生成模版所引用的资源在不存在或者无效。

在第 5 步,选择需要复制的资源的时候,勾选了非所选 VPC 的资源(例如:在 Subnet Route Table Association 里面选择了其他 VPC 的路由关联)。 在第 5 步中添加的资源引用了外网 IP(例如 VPN Gateway 等等)。 在第 5 步中添加的资源与未添加的资源有关联(例如 VPC Peering 或者 Transit Gateway 的路由)。 忘记在第 6 步中对 EC2Subnet 的资源进行修改。

请仔细查看 AWS CloudFormation 的事件信息,定位第一个创建失败的资源,并在 Former2 生成的模版中对该资源的定义进行修改或者删除。

9. 工具的局限性 误添加资源后,只能在 CloudFormation 模版里面进行删除。或者移除所有资源,重新添加。 本篇作者 谭继聪

亚马逊云科技解决方案架构师,负责基于 AWS 云计算方案架构的咨询和设计,并专注于数据库和数据分析技术方向。

曾鑫

AWS 解决方案架构师,负责基于 AWS 云平台的解决方案咨询和设计,对 AWS 安全产品的使用与整合有多年实践经验。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有