AWS26.使用CLI进行S3分段上传
作者:互联网
使用CLI进行S3分段上传
=== 使用分段上传上传和复制对象
- 分段上传允许您将单个对象作为一组分段上传。
- 每个部分都是对象数据的连续部分。
- 您可以按任意顺序独立上传这些对象部件。
- 如果任何部件的传输失败,您可以重新传输该部件,而不会影响其他部件。
- 上传对象的所有部分后,Amazon S3 会组装这些部分并创建对象。
- 注意: 当对象大小达到 100 MB 时,应考虑使用分段上传,而不是直接上传对象。
=== 何时使用分段上传
- 如果您要通过稳定的高带宽网络上传大型对象,请使用分段上传,通过并行上传对象部分来获得多线程性能,从而最大限度地利用可用带宽。
- 如果您通过参差不齐的网络上传,请使用分段上传,通过避免上传重新启动来提高对网络错误的弹性。
- 使用分段上传时,您需要重试仅上传在上传过程中中断的分段。您无需从头开始重新上传对象。
=== 分段上传过程
- 分段上传分为三个步骤:
- 分段上传启动:当您发送请求以启动分段上传时,Amazon S3 会返回带有上传 ID 的响应,该 ID 是分段上传的唯一标识符。每当上传分段、列出分段、完成上传或停止上传时,都必须包含此上传 ID。如果要提供描述正在上传的对象的任何元数据,则必须在请求中提供该元数据以启动分段上传。
- 分段上传:上传分段时,除了上传 ID 之外,您还必须指定分段编号。您可以选择 1 到 10,000 之间的任何部件号。部件号唯一标识部件及其在要上传的对象中的位置。
- 分段上传完成:当您完成分段上传时,Amazon S3 会根据分段编号按升序连接各部分,从而创建一个对象。如果在启动分段上传请求中提供了任何对象元数据,Amazon S3 会将该元数据与对象相关联。成功完成请求后,这些部件将不再存在**。
=== 架构图
== 实验步骤
=== 创建 IAM 角色
- 导航到
IAM
- 在左侧菜单中,单击
角色
。单击创建角色
该按钮以创建新的 IAM 角色。- 在创建角色部分,为角色选择可信实体类型:
- AWS 服务
- 使用案例:EC2
- 单击下一步
- 添加权限:现在,您可以看到策略列表。按名称S3fullaccess搜索权限,然后单击
AmazonS3FullAccess
。- 单击下一步
- 角色名称:输入 S3Role
- 您已成功按名称 S3Role 创建了一个 IAM 角色。
- 注意:您可以使用其他名称创建角色,然后将其附加到 EC2 实例
- 您已成功创建角色以访问 S3 存储桶。
=== 创建 S3 存储桶
- 请确保您位于美国东部(弗吉尼亚北部)us-east-1 区域。
- 顶部菜单导航到 S3
- 在 S3 页面上,单击
创建存储桶
并填写存储桶详细信息。- 桶名称:输入
mys3bucket-test-abcd
- 注意: S3 存储桶名称是全局唯一的,请选择一个可用的名称。
- AWS 区域:选择美国东部(弗吉尼亚北部)美国东部-1
- 对于对象所有权:选择ACL 已禁用(推荐)
- 将其他设置保留为默认值。
- 创建存储桶按钮
- S3 存储桶已创建。
=== 启动 EC2 实例
- 请确保您位于美国东部(弗吉尼亚北部)us-east-1 区域。
- 顶部菜单导航到 EC2
- 左侧面板,单击"实例",然后单击"启动新实例"。
==== (1)控制台启动实例
==== (2)选择系统镜像
==== (3)选择实例类型
==== (4)配置实例
- 向下滚动到 IAM 角色,然后选择我们在上述步骤中创建的角色。
- 向下滚动到高级详细信息
- 在用户数据部分下,输入以下脚本以将视频文件从 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)添加存储
==== (6)添加标签
==== (7) 配置安全组
- 添加 SSH:
. 选择类型: 选择 SSH
. 协议:TCP
. 端口范围:22
. 源:选择"任何位置"
- 点击下一步
审核和启动
==== (8) 审核启动
- 检查所有选定的设置,无误点击启动
- 选择现有密钥对,确认并单击启动实例
=== 在 EC2 中查看原始文件
- SSH 进入 EC2 实例
- SSH 进入 EC2 实例后,使用此命令查看新创建的目录 whizlabs
- sudo -s
- ls
- 将目录更改为 whizlabs
- cd whizlabs/
- 查看视频文件的属性详细信息。
- ls -ltr
- 注意:此文件的大小为 143 MB,因此我们将使用分段功能将此文件上传到 s3。
=== 拆分原始文件
- 将文件拆分为多个块
- 拆分命令将根据该选项将大文件拆分为多个部分(块)。
- 语法:split [options] [filename]
- 在这里,我们将 143 MB 的文件划分为 40MB 的块。
- split -b 40M video.mp4
- 查看分块文件
- ls -lh
- 注意:此处的"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
- 注意:将上面的示例中存储桶名称替换为您的存储桶名称。
注意:请复制 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。
- 注: 复制 ETag ID 和部件号以供日后使用。
- 对每个文件块**重复上述 CLI 命令 **[将 --part-number和 --body替换为上面的值]
- 按向上箭头键返回到上一个命令。无需再次输入上传 ID,只需更改part-number和body即可。
- 每次上传区块时,请不要忘记保存 Etag 值。
=== 创建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\""
}
]
}
- 保存文件后退出
=== 完成分段上传
- 现在,我们将在上一步中创建的 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。
=== 查看 S3 存储桶中的文件
- 请确保您位于美国东部(弗吉尼亚北部)us-east-1 区域。
- 顶部菜单导航到 S3
- 在 S3 控制面板上,单击存储桶名称 mys3bucket-test-abcd
- 在存储桶中,您可以看到创建的video.mp4对象。
标签:文件,CLI,S3,upload,AWS26,--,上传,分段 来源: https://www.cnblogs.com/ajajroom/p/16400101.html