удаление объектов в корзине с использованием тегов объектов - PullRequest
0 голосов
/ 07 октября 2019

Я должен в основном загрузить некоторые объекты в корзину s3. После того, как я закончил, мне пришлось сделать пометку их объектов, что я и сделал с помощью put_object_tagging ()Сейчас я пытаюсь отфильтровать объекты на основе этих тегов, чтобы я мог удалить объекты на основе тегов. Я полностью поражен.

while j!=10:
  if j%2==0:
  response1 = client.put_object_tagging(
      Bucket='shivam1052061',
      Key='%d.txt' % (j),
      Tagging={
          'TagSet': [
              {
                  'Key': 'notdivby2',
                  'Value': '2no'
              },
          ]
       }
    )
 j=j+1

Я написал некоторую логику для вышеуказанной проблемы, и она перечислена ниже. Но я не думаю, что это оптимизированная версия кода. Если кто-нибудь знает, как это оптимизировать, скажите.

    for key in bucket.objects.all():
var=key.key
response = client.get_object_tagging(
    Bucket='shivam1052061',
    Key=var,
)
tagK = response['TagSet'][0]['Key']
tagV = response['TagSet'][0]['Value']
print(tagK + " ")
print(tagV + " ")
if tagK == deltagK and tagV == deltagV:
  #  print("4-done" + " ")
    response3 = client.delete_object(
        Bucket='shivam1052061',
        Key=var
    )

1 Ответ

0 голосов
/ 08 октября 2019

Я думаю, что это будет работать,

import boto3

s3 = boto3.client('s3')

contents = s3.list_objects(Bucket='shivam1052061').get('Contents')
delkeys = []

for content in contents:
    try:
        response = s3.get_object_tagging(
            Bucket='shivam1052061',
            Key=content.get('Key')
        )
        for tag in response.get('TagSet'):
            if tag.get('Key') == 'notdivby2' and tag.get('Value') == '2no':
            delkeys.append(key)
    except:
        pass

print(delkeys)

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

...