如何将119个AWS EC2快照迁移至GCP?请求技术支持
批量迁移AWS EC2快照至GCP的可行方案
前提准备
- AWS账号需具备:EC2快照读取权限、S3桶读写权限(用于中转导出的镜像文件)
- GCP账号需具备:Cloud Storage管理员权限、Compute Engine磁盘创建权限
- 提前创建一个AWS S3中转桶和一个GCP Cloud Storage目标桶
手动批量迁移流程
1. 将EC2快照导出至AWS S3
- 登录AWS EC2控制台,批量选中目标快照,右键选择「导出到Amazon S3」
- 设置导出格式为VHD(GCP官方支持的磁盘镜像格式),指定中转S3桶及存储路径
- 等待所有快照导出完成(可在EC2控制台的「导出任务」页面查看进度)
2. 同步S3镜像文件至GCP Cloud Storage
- 登录GCP Cloud Storage控制台,使用「传输」功能,选择「Amazon S3」作为源,输入S3桶信息并配置权限
- 批量选择所有导出的VHD文件,启动传输任务
3. 导入Cloud Storage文件为GCP Compute磁盘
- 登录GCP Compute Engine控制台,进入「磁盘」页面,选择「创建磁盘」
- 来源选择「Cloud Storage文件」,选中对应的VHD文件,设置磁盘区域、类型后完成创建
- 批量操作可通过控制台的批量选择功能快速完成
自动化脚本方案(适合119个快照的大规模场景)
使用AWS CLI和GCP CLI编写脚本,实现全流程自动化:
1. 批量导出EC2快照到S3
# 替换为你的快照ID列表、S3桶名 SNAPSHOT_IDS=("snap-xxxxxx" "snap-yyyyyy" ...) S3_BUCKET="aws-snapshot-transfer-bucket" for snap_id in "${SNAPSHOT_IDS[@]}"; do aws ec2 export-snapshot \ --snapshot-id "$snap_id" \ --disk-image-format VHD \ --s3-export-location "S3Bucket=$S3_BUCKET,S3Prefix=snapshots/$snap_id/" done
2. 同步S3文件到GCP Cloud Storage
# 替换为你的GCP存储桶名 GS_BUCKET="gcp-snapshot-import-bucket" for snap_id in "${SNAPSHOT_IDS[@]}"; do gsutil cp "s3://$S3_BUCKET/snapshots/$snap_id/*.vhd" "gs://$GS_BUCKET/imports/$snap_id/" done
3. 批量创建GCP磁盘
# 替换为你的GCP区域 GCP_ZONE="us-central1-a" for snap_id in "${SNAPSHOT_IDS[@]}"; do gcloud compute disks create "migrated-disk-$snap_id" \ --zone "$GCP_ZONE" \ --source-uri "gs://$GS_BUCKET/imports/$snap_id/*.vhd" \ --type pd-standard done
常见失败原因排查
- 加密快照导出失败:需确保AWS KMS密钥允许
ec2.amazonaws.com服务角色访问,或先将快照复制为未加密版本再导出 - 跨云文件传输失败:检查S3桶是否开启了跨域访问,或给GCP服务账号授予S3读取权限;也可生成S3文件预签名URL,直接用
gsutil拉取 - GCP磁盘导入失败:确认镜像格式为VHD(禁止使用RAW格式),检查文件大小未超过对应磁盘类型的上限,确保GCP区域与存储桶区域一致
内容的提问来源于stack exchange,提问作者Gabriel Alves de Oliveira
相关产品推荐
相关产品推荐

