Не удается полностью удалить объект в Amazon S3

#amazon-web-services #amazon-s3

Вопрос:

Как полностью удалить объект с помощью консоли Amazon S3? «Полностью удалить» означает, что объект полностью исчез и не виден при включении «Показывать версии». Я не могу удалить сами объекты «Показать версии», так как при их выборе кнопка становится серой. Я также пытался удалить их через интерфейс командной строки, но мне не повезло.

Комментарии:

1. Что происходит, когда вы пытаетесь удалить файл с помощью awscli? Какое сообщение об ошибке вы видите?

2. Анон трус ниже объяснил, как управлять версиями в корзинах S3. Чтобы полностью удалить объект, вам необходимо переключить представления с версиями, используя «показать версии», затем вы можете удалить его, введя «окончательно удалить» в качестве ключевого слова для подтверждения. Подробнее об этом здесь docs.aws.amazon.com/AmazonS3/latest/userguide/…

Ответ №1:

Если у вас включено управление версиями, удаление объекта просто добавляет другую версию объекта, так называемый «маркер удаления». Если вы хотите удалить все версии, включая маркер удаления, вам нужно будет перечислить и удалить все версии объекта. Например, с помощью Python SDK вы можете перечислять и удалять их одной строкой после некоторой настройки:

 import boto3
s3 = boto3.resource("s3")
bucket = s3.Bucket("-example-bucket-")
key = "example_object.txt"
object = bucket.object_versions.filter(Prefix=key)
versions = len(list(object.all()))
object.delete()
print(f"Delted {versions} versions for '{key}'")
 

Ответ №2:

Похоже, что у вашего пользователя IAM, обращающегося к корзине, нет разрешения s3:DeleteObjectVersion. Как только вы добавите это разрешение в свою политику, вы также сможете удалять версии.

Комментарии:

1. Я только что попытался добавить DeleteObjectVersion в качестве политики (я прикрепил его к своему пользователю IAM), но, к сожалению, это не решило проблему. Я вошел в систему как пользователь root, если это вообще поможет.

2. @Alexcamostyle В долгосрочной перспективе вы бы в идеале не использовали пользователя root , но это, по крайней мере, подтверждает, что у вас есть разрешение (у пользователя root есть все разрешения).