我想要将 Amazon Elastic Block Store(Amazon EBS)快照复制到我的 Amazon Simple Storage Service(Amazon S3)桶。我还想根据存储在我的 S3 桶中的数据创建 Amazon EBS 卷。
简短描述
创建 EBS 快照时,它将自动存储在 AWS 管理的 Amazon S3 桶中。可在同一 AWS 区域内复制快照,也可以将快照从一个区域复制到另一个区域。但是,无法将快照复制到您管理的 S3 桶。
若要存储不经常访问的快照,请考虑使用 Amazon EBS 快照归档。但是,如果您仍然希望使用 Amazon S3 来存储快照,则可以使用以下解决方法。
解决方法
注意:如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请确保您使用的是最新的 AWS CLI 版本。
若要将快照的内容复制到 S3 桶,请从快照创建一个卷。将该卷装载到 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例。然后,使用 AWS CLI 或 S3 API 将数据复制到 S3 桶。
若要将 EBS 快照的内容复制到 Amazon S3 桶,请按照以下步骤进行操作:
- 从快照创建 EBS 卷。
- 在与您创建的卷相同的可用区中启动 EC2 Linux 实例。
- 将卷连接到实例。
- 连接到您的 Linux 实例。
- 在您的 Linux 实例上安装 AWS CLI。
- 授予 Amazon EC2 实例访问您的 Amazon S3 桶的权限。
运行以下命令将卷装载到您的实例:
$ sudo mount /dev/xvdf /mnt
注意:设备(在前面的示例中为 /dev/xvdf)可能使用不同的设备名称连接到实例。使用 lsblk 命令查看可用的磁盘设备及其装载点,以确定正确的设备名称。
- 安装 pv 包以监视 tar 存档创建过程中的进度:
Amazon Linux 和 Red Hat Enterprise Linux(RHEL)发行版
$ sudo yum install pv
注意:在安装适用于 Amazon Linux 和 RHEL 发行版的 pv 包之前,必须先打开 Extra Packages for Enterprise Linux(EPEL)存储库。请参阅如何为运行 CentOS、RHEL 或 Amazon Linux 的 Amazon EC2 实例打开 EPEL 存储库?
基于 Ubuntu 和 Debian 的发行版
$ sudo apt install pv
运行以下命令,将 EBS 卷数据复制到 S3 桶:
$ tar c /mnt | pv -s $(($(du -sk /mnt | awk '{print $1}') \\\* 1024)) | gzip | aws s3 cp - "s3://my-bucket/backup1.tar.gz"
注意:将 my-bucket 替换为 S3 桶名称,将 backup1 替换为文件名。
此命令从 /mnt 目录创建压缩文件,并将该文件上传到名为 my-bucket 的 S3 桶。
- 使用 Amazon S3 控制台确认压缩文件已上传到 S3 桶。
运行以下命令以卸载该卷:
$ sudo umount /mnt
- 将 EBS 卷与 Linux 实例分离。
- 删除卷并终止实例。