Как добавить тег к ключу в boto (Amazon S3)?

Я пытаюсь пометить ключ, который я загрузил на S3. В том же ниже я просто создаю файл из строки. Когда у меня есть ключ, я не знаю, как пометить файл. Я пробовал Tag, а также TagSet.

from boto.s3.bucket import Bucket
from boto.s3.key import Key
from boto.s3.tagging import Tag, TagSet

k = Key(bucket)
k.key = 'foobar/somefilename'
k.set_contents_from_string('some data in file')

Tag(k, 'the_tag')

person statguy    schedule 05.04.2013    source источник


Ответы (4)


Насколько я вижу в документах, setTags-method доступен только на уровне корзины, а не на отдельных ключах. Поэтому вы не можете установить разные теги для загруженного файла, но вам придется сделать это для контейнера, содержащего файл.

person j0nes    schedule 05.04.2013
comment
Это правильно. S3 поддерживает теги только на уровне корзины, а не на отдельных объектах. Эти теги в основном используются для распределения и отслеживания затрат, как описано в docs.aws.amazon.com/awsaccountbilling/latest/about/ - person garnaat; 05.04.2013
comment
этот принятый ответ был правильным в то время, но теперь его нельзя принимать; поскольку поиск в Google по-прежнему приводит сюда как результат поиска номер 1, и теперь он неверен и вводит в заблуждение. - person Tommy; 24.05.2021

С тех пор S3 добавил теги уровня объекта. Вы можете получить и установите их с помощью boto3.

Они значительно более универсальны, чем метаданные:

  • Их можно добавлять и изменять без копирования объекта.
  • Их можно использовать в качестве фильтров в правилах управления жизненным циклом.
  • Их можно использовать для управления доступом к объектам.
person Hank    schedule 16.04.2018
comment
Я использую boto3 и также хочу пометить свои объекты. Я нашел это boto3.amazonaws .com/v1/documentation/api/latest/reference/ . Однако AWS говорит, что при выполнении этой операции необходимо использовать HTTP-заголовок Content-MD5. Дело в том, что я в замешательстве. Нужен ли ему MD5 объекта, который я помечаю? Моей просьбы? Если это по моей просьбе, как это сделать? мой запрос представлен в виде словаря Python, как я могу это MD5. Любая помощь или предложения здесь? - person Peter Jirak Eldritch; 01.06.2019
comment
@PeteJirak ContentMD5 не является обязательным полем. Вы можете оставить это, если хотите. В противном случае его использование более подробно объясняется здесь: docs.aws.amazon.com /AmazonS3/latest/API/RESTObjectPUT.html - person Hank; 03.06.2019

В то время как «теги» S3 находятся только на уровне корзины, каждый ключ в корзине может иметь произвольные связанные с ним «метаданные», которые сами являются парами ключ-значение. См. документацию boto:

k.set_metadata('key', 'value')
value = k.get_metadata('key') # prints 'value'
person Jimmy Schementi    schedule 12.08.2014
comment
это изменилось сейчас. И теги S3 теперь доступны на уровне объекта. - person kapad; 29.11.2019

person    schedule
comment
Это правильный ответ. Большое спасибо @valex - person saranya elumalai; 03.02.2021