将 aws 快照复制到 S3 存储桶

Posted

技术标签:

【中文标题】将 aws 快照复制到 S3 存储桶【英文标题】:Copying aws snapshot to S3 bucket 【发布时间】:2018-07-03 13:50:54 【问题描述】:

我想将 EBS 快照复制到我的 S3 存储桶中,但在尝试和研究后我找不到方法。 我将感谢您提供任何可以让我开始解决问题的信息。

【问题讨论】:

你不能。 EBS 快照存储在 S3 中,但实际的存储桶用户可访问。 【参考方案1】:

AWS 论坛里有答案,不过比较迂回:

    从快照创建一个临时 EBS 卷。 (快照:操作:创建卷)

    创建一个临时 EC2 Linux 实例,安装 aws cli

    将卷附加到实例并挂载。 (EBS 卷:操作:附加卷 - 必须是相同的可用区)

    从 lsblk 中找到挂载的快照卷的名称 - 例如 /dev/xvdj

    将卷内容复制到您的系统 - 例如 sudo bash -c "dd if=/dev/xvdj bs=8M | gzip > /home/ubuntu/volbk.gz"

    将您的 .gz 文件复制到 S3 - aws s3 cp ~/volbk.gz s3://my-bucket-name

    检查您的 s3 存储桶内容是否正常到达;卸载快照卷

    终止实例。

    删除快照 EBS 卷。

从这里开始,加上我的补充(11 月 2 日的回答): https://forums.aws.amazon.com/thread.jspa?messageID=151285

【讨论】:

这看起来很有用!一个问题:我将如何从存储在 S3 中的 .gz 文件重新创建一个实例? 超出原问题的范围!但是您可以通过使用 unzip 和 dd 解压缩到另一个临时 EBS 卷,然后将其用作映像来反转该过程。【参考方案2】:

copy-snapshot 命令是 AWS CLI 命令,用于复制 EBS 卷的快照并将其存储在 Amazon S3 中。您可以将快照复制到同一区域内或从一个区域复制到另一个区域。

此示例命令将任意 id 的快照从一个区域复制到另一个区域。

aws --region us-east-1 ec2 copy-snapshot --source-region us-west-2 --source-snapshot-id snap-066877671789bd71b --description "This is my copied snapshot."

更多信息请参考https://docs.aws.amazon.com/cli/latest/reference/ec2/copy-snapshot.html

【讨论】:

【参考方案3】:

使用 Amazon EBS,您可以创建卷的时间点快照,这些快照可以存储在 Amazon S3 中。创建快照并完成向 Amazon S3 的复制后,您可以将其从一个 AWS 区域复制到另一个区域,或在同一区域内。快照副本 ID 与原始快照的 ID 不同。 EBS 快照存储在 Amazon S3 中。但是,您不会在任何 S3 存储桶中找到您的快照。 AWS 使用 S3 基础设施来存储您的 EBS 快照,但是当它们驻留在 S3 中时您无法访问它们。 您可以使用 AWS EC2 控制台或命令行复制 AWS EBS Snapshot。

i) 使用 Console-复制 EBS 快照: 打开 EC2 控制台-> 在导航窗格中选择快照-> 从操作列表中选择副本-> 在复制快照对话框中提供必要的详细信息,例如目标区域、描述、加密等,然后选择副本。

ii) 使用命令行复制 EBS 快照: 在 AWS CLI 中运行以下命令:

aws --region <destination region> ec2 copy-snapshot --source -<source region> --source -snapshot-id <snap-0xyz9999999> --description

【讨论】:

以上是关于将 aws 快照复制到 S3 存储桶的主要内容,如果未能解决你的问题,请参考以下文章

将文件从 AWS s3 (SSE) 存储桶复制到谷歌云

使用 Node 将文件从一个 AWS S3 存储桶复制到另一个存储桶

AWS S3在两个存储桶之间复制文件和文件夹

如何使用angular js将aws s3文件复制到同一个存储桶中的特定文件夹

如何使用aws java sdk将文件从S3存储桶从一个区域复制到另一个区域?

S3 跨区域复制