Получить список ведер S3 и добавить к ним теги - PullRequest
0 голосов
/ 09 мая 2020

В моем случае использования я пытаюсь получить все сегменты S3 в своей учетной записи, начиная с заданного имени и затем добавляя тег ко всем из них. Ниже мой код (будучи новичком в Python, я мог что-то пропустить). После того, как я создал список всех сегментов, я хотел бы прочитать его и добавить в них теги один за другим. В настоящее время я получаю сообщение об ошибке в строке

bucket_tagging = s3.BucketTagging (list [i])

Я думаю, мне не нравится, как я прохожу список. Любой вклад здесь будет очень признателен. Спасибо

import boto3
list = []
s3 = boto3.resource('s3')
for bucket in s3.buckets.all(): 
  if bucket.name.startswith("bucketPrefix"):
    list.append(bucket)

for i in range(len(list)):
  bucket_tagging = s3.BucketTagging(list[i])
  tags = bucket_tagging.tag_set
  tags.append({'Key':'segment', 'Value': 'name'})
  Set_Tag = bucket_tagging.put(Tagging={'TagSet':tags})

1 Ответ

1 голос
/ 09 мая 2020

Кажется, работает:

import boto3

s3_resource = boto3.resource('s3')

for bucket in s3_resource.buckets.all():
    if bucket.name.startswith("prefix"):

        # Extract current tags
        try:
            tag_set = bucket.Tagging().tag_set
        except:
            # No current tags
            tag_set = []

        # Append tag
        tag_to_add = {'Key':'segment', 'Value': 'name'}
        tag_set = [tag for tag in tag_set if tag['Key'] != tag_to_add['Key']]
        bucket.Tagging().put(Tagging={'TagSet':tag_set + [tag_to_add]})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...