#python #python-3.x #amazon-web-services #amazon-s3 #boto3
Вопрос:
Попытка восстановить объект Amazon S3 из GLACIER с помощью приведенного ниже кода.
import boto3
s3 = boto3.resource('s3', verify=False)
bucket_name = r"my-source-bucket"
bucket = s3.Bucket(bucket_name)
key ="glacier_file2.txt"
try:
bucket.meta.client.restore_object(Bucket=bucket_name, Key=key, RestoreRequest={'Days': 1, 'GlacierJobParameters': {'Tier': 'Expedited'}})
except Exception as e:
print({"Problem Restoring": str(e)})
Код отправляется успешно, однако объект по-прежнему отображается как в GLACIER в консоли AWS, а также когда я запрашиваю его с помощью boto3 даже спустя несколько дней. Если я запущу следующий код, я увижу, что он все еще показывает ЛЕДНИК.
key = s3.Object(bucket_name,key)
print (key.storage_class)
print (key.restore)
>>>>GLACIER
>>>>ongoing-request="false", expiry-date="Sun, 19 Sep 2021 00:00:00 GMT"
Когда я пытаюсь сделать то же самое в консоли AWS, я вижу, что там написано, что это и в GLACIER, И восстановление завершено?
У кого-нибудь есть какое-нибудь представление? После восстановления я действительно могу загрузить файл, что говорит мне о том, что на самом деле он не в GLACIER, несмотря на то, что он находится в браузере, а также в boto3. Что-то не так с тем, как сообщается о классе хранилища после восстановления?
правка Я должен отметить, что я выполняю ускоренное восстановление, которое занимает всего несколько минут.
Ответ №1:
Проведя еще немного исследований, выясняется, что «восстановление» — это не то, чего можно было бы ожидать. Как только объект попадает в ЛЕДНИК, пути назад нет, кроме как «временно» восстановить его (как я сделал выше), а затем перезаписать. Например, я смог запустить эту команду после восстановления glacier_file2.txt
aws s3 cp s3://my-source-bucket/glacier_file2.txt s3://my-source-bucket/glacier_file2.txt --force-glacier-transfer --storage-class STANDARD
https://newbedev.com/how-do-i-restore-from-aws-glacier-back-to-s3-permanently
Это не сработало бы, если бы я не запустил временное восстановление ЛЕДНИКА.