需要帮助了解在 AWS-CLI 中使用上传存档时出现的"无效参数值异常:内容长度无效"错误



我正在使用Windows PS中AWS-CLI中的upload-archive命令将zip存档上传到Glacier保管库,并不断收到"InvalidParameterException:无效的内容长度"错误。不确定我缺少什么参数。

我的 aws-cli 命令:

aws glacier upload-archive --account-id - --vault-name sawsa.video.glacier --body saw-09-21-19.7z

返回以下错误:

调用上载存档操作时发生错误 (无效参数值异常(: 无效内容长度: 13769102233

我确保帐户密钥/密钥和区域都保存在 aws-cli 配置中。我可以毫无问题地列出/读取保管库的内容。我在命令中提供了完整的帐户 ID,但在此处使用"-"作为发布代码示例。

当您上传的对象大小大于 5 GB 时,需要进行分段上传。

如 S3 的 AWS 文档中所述:

根据您要上传的数据的大小,Amazon S3 提供以下选项:在单个操作

中上传对象- 通过单个 PUT 操作,您可以上传最大为 5 GB 的对象。

分段上传对象- 使用分段上传 API,您可以上传最大 5 TB 的大型对象。

例:

加载第一部分:

$ aws glacier initiate-multipart-upload --account-id - --part-size 1048576 --vault-name my-vault --archive-description "multipart upload test"


成功时,此命令会输出上传 ID。使用 aws glacier 上传分段分段上传存档的每个部分时,请使用上传 ID,如下所示:

假设返回的上传 ID19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ,则加载其余部分(根据需要重复多次以使用对象(:

aws glacier upload-multipart-part --body saw-09-21-19-part1.7z --range 'bytes 0-1048575/*' --account-id - --vault-name my-vault --upload-id 19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ

以下是有关如何使用 CLI 执行此操作的分步信息:
https://docs.aws.amazon.com/cli/latest/userguide/cli-services-glacier.html

有关更多信息,请参见此处:
https://docs.aws.amazon.com/AmazonS3/latest/dev/UploadingObjects.html
https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-multipart-part.html

根据 CLI 文档,看起来您必须提供 SHA256 树形哈希。 https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-archive.html(见第3段(

如果我没看错的话,看起来你的文件大约是 13GB。尽管上传存档应该适用于最大 40GB 的文件,您可能还想尝试使用上传多部分命令。https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-multipart-part.html

作为旁注,我还注意到冰川的相应 AWS Rest API 终端节点/命令似乎需要Content-Length作为标头参数,但我在 CLI 文档中没有看到它。 https://docs.aws.amazon.com/amazonglacier/latest/dev/api-archive-post.html

最新更新