ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

AWS26.使用CLI进行S3分段上传

2022-06-22 13:03:27  阅读:233  来源: 互联网

标签:文件 CLI S3 upload AWS26 -- 上传 分段


使用CLI进行S3分段上传

=== 使用分段上传上传和复制对象

  • 分段上传允许您将单个对象作为一组分段上传
  • 每个部分都是对象数据的连续部分
  • 您可以按任意顺序独立上传这些对象部件
  • 如果任何部件的传输失败,您可以重新传输该部件,而不会影响其他部件
  • 上传对象的所有部分后,Amazon S3 会组装这些部分创建对象
  • 注意: 当对象大小达到 100 MB 时,应考虑使用分段上传,而不是直接上传对象

=== 何时使用分段上传

  • 如果您要通过稳定的高带宽网络上传大型对象,请使用分段上传,通过并行上传对象部分来获得多线程性能,从而最大限度地利用可用带宽
  • 如果您通过参差不齐的网络上传,请使用分段上传,通过避免上传重新启动提高对网络错误的弹性
  • 使用分段上传时,您需要重试仅上传在上传过程中中断的分段。您无需从头开始重新上传对象

=== 分段上传过程

  • 分段上传分为三个步骤
  • 分段上传启动:当您发送请求以启动分段上传时,Amazon S3 会返回带有上传 ID 的响应,该 ID 是分段上传的唯一标识符。每当上传分段、列出分段、完成上传或停止上传时,都必须包含此上传 ID。如果要提供描述正在上传的对象的任何元数据,则必须在请求中提供该元数据以启动分段上传
  • 分段上传:上传分段时,除了上传 ID 之外,您还必须指定分段编号。您可以选择 1 到 10,000 之间的任何部件号。部件号唯一标识部件及其在要上传的对象中的位置
  • 分段上传完成:当您完成分段上传时,Amazon S3 会根据分段编号升序连接各部分,从而创建一个对象。如果在启动分段上传请求中提供了任何对象元数据,Amazon S3 会将该元数据与对象相关联。成功完成请求后这些部件将不再存在**。

=== 架构图

image

== 实验步骤

=== 创建 IAM 角色

  • 导航到IAM
  • 左侧菜单中,单击角色 。单击创建角色该按钮以创建新的 IAM 角色
  • 在创建角色部分,为角色选择可信实体类型
  • AWS 服务
  • 使用案例:EC2

image

  • 单击下一步
  • 添加权限:现在,您可以看到策略列表。按名称S3fullaccess搜索权限,然后单击AmazonS3FullAccess
  • 单击下一步
  • 角色名称:输入 S3Role
  • 已成功按名称 S3Role 创建了一个 IAM 角色。
  • 注意:您可以使用其他名称创建角色,然后将其附加到 EC2 实例
  • 您已成功创建角色以访问 S3 存储桶

=== 创建 S3 存储桶

  • 请确保您位于美国东部(弗吉尼亚北部)us-east-1 区域。
  • 顶部菜单导航到 S3

image

  • 在 S3 页面上,单击创建存储桶填写存储桶详细信息
  • 桶名称:输入mys3bucket-test-abcd
  • 注意: S3 存储桶名称是全局唯一的,请选择一个可用的名称
  • AWS 区域:选择美国东部(弗吉尼亚北部)美国东部-1
  • 对于对象所有权:选择ACL 已禁用(推荐)
  • 其他设置保留为默认值。
  • 创建存储桶按钮
  • S3 存储桶已创建

image


=== 启动 EC2 实例

  • 请确保您位于美国东部(弗吉尼亚北部)us-east-1 区域。
  • 顶部菜单导航到 EC2
  • 左侧面板,单击"实例",然后单击"启动新实例"

==== (1)控制台启动实例

image

==== (2)选择系统镜像

image

==== (3)选择实例类型

image

==== (4)配置实例

  • 向下滚动到 IAM 角色,然后选择我们在上述步骤中创建的角色

image

  • 向下滚动到高级详细信息
  • 在用户数据部分下,输入以下脚本将视频文件从 S3 存储桶复制到 EC2 实例
  #!/bin/bash
  sudo su
  yum update -y
  mkdir /home/ec2-user/whizlabs/
  aws s3 cp s3://labtask69/video.mp4 /home/ec2-user/whizlabs/

==== (5)添加存储

image

==== (6)添加标签

image

==== (7) 配置安全组

  • 添加 SSH:

. 选择类型: 选择 SSH
. 协议:TCP
. 端口范围:22
. 源:选择"任何位置"

image

  • 点击下一步 审核和启动

==== (8) 审核启动

  • 检查所有选定的设置,无误点击启动
  • 选择现有密钥对,确认并单击启动实例

image


=== 在 EC2 中查看原始文件

  • SSH 进入 EC2 实例
  • SSH 进入 EC2 实例后,使用此命令查看新创建的目录 whizlabs
  • sudo -s
  • ls

image

  • 目录更改为 whizlabs
  • cd whizlabs/
  • 查看视频文件的属性详细信息
  • ls -ltr

image

  • 注意:此文件的大小为 143 MB,因此我们将使用分段功能将此文件上传到 s3

=== 拆分原始文件

  • 将文件拆分为多个块
  • 拆分命令根据该选项将大文件拆分为多个部分(块)。
  • 语法:split [options] [filename]
  • 在这里,我们将 143 MB 的文件划分为 40MB 的块
  • split -b 40M video.mp4
  • 查看分块文件
  • ls -lh

image

  • 注意:此处的"xaa"和"xad"是按字母顺序重命名的分块文件
  • 每个文件的大小为 40MB,但最后一个文件除外。区块数取决于原始文件的大小和用于对区块进行分区的字节值

=== 创建分段上传

  • 语法:aws s3api create-multipart-upload --bucket [Bucket name] --key [original file name]
  • 示例:aws s3api create-multipart-upload --bucket mys3bucket-test-abcd --key video.mp4
  • 注意:将上面的示例中存储桶名称替换为您的存储桶名称

image

注意:请复制 UploadId 并将其保存以供日后使用。


=== 上传文件块

  • 接下来,我们需要使用分段号逐个上传每个文件区块。部件号是根据文件的字母顺序分配的。
  • 语法: aws s3api upload-part --bucket [bucketname] --key [filename] --part-number [number] --body [chunk file name] --upload-id [id]
  • 示例: aws s3api upload-part --bucket mys3bucket-test-abcd --key video.mp4 --part-number 1 --body xaa --upload-id hey69rtKLfEkJpKWqJ35_M8MReFgyAncD4Q0OjIwYaJPqnSkgxAGySClidSLEaOXJ49LbM8RYySAoVhksVsW.Y1v80uZ3fK1yARrluSbACa85uqMSPLYON2n5L34k7OhytUdjdtvsqIbMoKpP17cTA--
  • 注意:请将上传 ID 替换为您的上传 ID

image

  • 注: 复制 ETag ID 和部件号以供日后使用。
  • 对每个文件块**重复上述 CLI 命令 **[将 --part-number和 --body替换为上面的值]
  • 向上箭头键返回到上一个命令。无需再次输入上传 ID,只需更改part-number和body即可
  • 每次上传区块时,请不要忘记保存 Etag 值

image


=== 创建Multipart JSON 文件

  • 创建一个包含所有part-number及其 Etag 值的文件。
  • 创建名为 list.json 的文件
  • nano list.json
  • 复制下面的 JSON 脚本并将其粘贴到 list.json 文件中。
  • 注意:根据上传每个区块后收到的ETag替换 ETag ID
{
  "Parts": [
    {
      "PartNumber": 1,
      "ETag": "\"70418ed5e552ea21deb8785359e69e28\""
    },
    {
      "PartNumber": 2,
      "ETag": "\"e0c16ead703bfcd1b36b339d9ae1901d\""
    },
    {
      "PartNumber": 3,
      "ETag": "\"56734bc19b453aab5144de4454945609\""
    },
    {
      "PartNumber": 4,
      "ETag": "\"7786233d68592caf07e93521cbd0a80e\""
    }
  ]
}

image

  • 保存文件后退出

=== 完成分段上传

  • 现在,我们将在上一步中创建的 JSON 文件的帮助下将所有文件块连接在一起
  • 语法:aws s3api complete-multipart-upload --multipart-upload [json file link] --bucket [upload bucket name] --key [original file name] --upload-id [upload id]
  • 示例:aws s3api complete-multipart-upload --multipart-upload file://list.json --bucket mys3bucket-test-abcd --key video.mp4 --upload-id hey69rtKLfEkJpKWqJ35_M8MReFgyAncD4Q0OjIwYaJPqnSkgxAGySClidSLEaOXJ49LbM8RYySAoVhksVsW.Y1v80uZ3fK1yARrluSbACa85uqMSPLYON2n5L34k7OhytUdjdtvsqIbMoKpP17cTA--
  • 注意
  • 将上面的示例替换为您的存储桶名称
  • Upload-Id 值替换为您的Upload ID

image


=== 查看 S3 存储桶中的文件

  • 请确保您位于美国东部(弗吉尼亚北部)us-east-1 区域。
  • 顶部菜单导航到 S3
  • 在 S3 控制面板上,单击存储桶名称 mys3bucket-test-abcd
  • 在存储桶中,您可以看到创建的video.mp4对象

image


标签:文件,CLI,S3,upload,AWS26,--,上传,分段
来源: https://www.cnblogs.com/ajajroom/p/16400101.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有