Нужна помощь в понимании ошибки «InvalidParameterValueException: Invalid Content-Length» при использовании upload-archive в AWS-CLI - PullRequest
1 голос
/ 01 октября 2019

Я использую команду upload-archive в AWS-CLI в Windows PS, чтобы загрузить zip-архив в хранилище Glacier и постоянно получаю сообщение об ошибке «InvalidParameterException: Invalid Content-Length». Не уверен, какой параметр мне не хватает.

Моя команда aws-cli:

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

Возвращает следующую ошибку:

Произошла ошибка (InvalidParameterValueException)при вызове операции UploadArchive: недопустимый ContentLength: 13769102233

Я убедился, что ключи / секретный ключ и регион учетной записи все сохраняются в конфигурации aws-cli. Я могу перечислить / прочитать содержимое хранилища без каких-либо проблем. Я предоставляю полный идентификатор учетной записи в своей команде, но здесь я использую '-' для публикации примера кода.

Ответы [ 2 ]

0 голосов
/ 01 октября 2019

Многокомпонентная загрузка требуется, когда размер загружаемого объекта превышает 5 ГБ.

Как указано в документации AWS для S3:

В зависимости от размера загружаемых данных Amazon S3 предлагает следующие параметры:

Загрузка объектов за одну операцию - с помощью одной операции PUT можно загружать объекты размером до 5 ГБ.

Загрузка объектов по частям - Используя API многоэтапной загрузки, вы можете загружать большие объекты размером до 5 ТБ.

Пример:

Загрузить первую часть:

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


Эта команда выводит идентификатор загрузки в случае успеха. Используйте идентификатор загрузки при загрузке каждой части вашего архива с помощью aws glacier upload-multipart-part, как показано ниже:

Загрузите остаток, предполагая, что возвращенный идентификатор загрузки равен 19gaRezEXAMPLES6Ry5YYdqthHOC_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

Пошаговая информация о том, как это сделать с помощью интерфейса командной строки:
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

0 голосов
/ 01 октября 2019

Согласно документации CLI, похоже, что вы должны предоставить хеш дерева SHA256. https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-archive.html (см. Параграф 3)

Если я правильно читаю, похоже, ваш файл имеет размер около 13 ГБ. Несмотря на то, что upload-архив должен работать с файлами до 40 ГБ, вы также можете попробовать использовать команду upload-multi-part. 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

...