Задать вопрос

Ошибка при изменении класса хранилища объекта. Почему?

Текущий класс объектов: Glacier Flexible Retrieval (formerly Glacier)
Необходимо изменить на стандарт

Через WWW
ОШИБКА:
Automatically canceled
After 10,000 failed edits, the S3 console automatically cancels the edit storage class action for the remaining objects. For more information, see the Error column in the Failed to edit table below.

Ну гуд, больше 10т (может быть отдельный вопрос возможно ли снять ограничения)

CLI:
aws s3 cp s3://awsexamplebucket/dir1/ s3://awsexamplebucket/dir1/ --storage-class STANDARD --recursive --force-glacier-transfer
ОШИБКА:
copy failed: s3://****** to s3://******* An error occurred (InvalidObjectState) when calling the CopyObject operation: Operation is not valid for the source object's storage class

UPLOAD
Похоже проблема в кирилице

aws s3api restore-object --bucket f1 --key Сбер/Сбер.zip --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Standard"}}'
Результат:
An error occurred (NoSuchKey) when calling the RestoreObject operation: The specified key does not exist.

а соответсвенно
aws s3api restore-object --bucket f1 --key Sberb/Sber.zip --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Standard"}}'
работает
  • Вопрос задан
  • 87 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 2
@vitaly_il1
DevOps Consulting
Нельзя перевести объект из Glacier Flexible Retrieval в S3 Standart. Нужно скопировать в новый S3 standard bucket.
https://docs.aws.amazon.com/AmazonS3/latest/usergu...:
aws s3api restore-object .....

UPDATE: сорри, вроде можно - см. https://aws.amazon.com/premiumsupport/knowledge-ce..., как раз как вы пробовали.

Я бы сделал одно из трех - или попросил помощью у AWS support, или скопировал в другой bucket, или попробовал вашу команду для меньшего кол-во объектов. Если последнее работает, то просто запустить в цикле.
Ответ написан
@Looka Автор вопроса
Отвечу частично сам.
Восстановление работает командой:
$ aws s3api restore-object --bucket awsexamplebucket --key dir1/example.obj --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Standard"}}'

Но что меня ввело в заблуждение, точнее я не понимал как работает механизм восстановления.
Не создается новый обьект стандартного класса, и не меняется класс обьекта.! Обьект просто становится доступным для извлечения. К сожалению этого не видно в веб интерфейсе.

Понять статус объекта можно так:
$aws s3api head-object --bucket looka1 --key 1Cv77_Bin.zip
{ "AcceptRanges": "bytes",
"Restore": "ongoing-request=\"true\"",
"LastModified": "2019-11-01T10:50:19+00:00",
"ContentLength": 10771150,
"ETag": "\"f4fc5cdcfeccf75b3a432c1ae6c540f9\"",
"VersionId": "CefbquFTCKrUa0xf5TEKv.2UdWCXNuNs",
"ContentType": "application/zip",
"Metadata": {},
"StorageClass": "DEEP_ARCHIVE"
}

Обратить внимание:
"Restore": "ongoing-request=\"true\""
true - идет восстановление, falsh - восстановлен, есть доступ.

Соответсвенно тоже самое делает в веб интерфейсе пункт Initial restore
Но пункт доступен только для файлов, если в списке есть папка Dir\ то интерфейс не нает выбрать опцию восстановления, только изменить класс, который не работает для этого класса.

А для  CLI решения для рекурсивного вызова не нашел, только. скрипты, а усложняется еще наличием кирилицы и пробелов в именах. В этом смысле вопрос остается. БУду признателен за подсказку и помощь.

А кирилица не причем
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы