Hi Guys,
I am trying put multiple tags on objects when they are copied on a particular folder, it works perfectly fine with single tags or multiple tags if I specify them explicitly, how to do it using a loop.
Below works perfectly fine.
response = s3.put_object_tagging(
Bucket='mybucket',
Key='Test/Test_test_xyz.csv',
Tagging={
'TagSet': [
{
'Key': 'key1',
'Value': 'value1'
},
{
'Key': 'key2',
'Value': 'value2'
},
]
}
)
However I want to achieve it using a loop, Below is what I am trying, any help would be greatly appreciated.
import boto3
s3 = boto3.client("s3")
all_objects = s3.list_objects(Bucket = 'Test')
tag={'TEST':{'test': {'key1': 'value1' , 'key2': 'value2'}}}
j=1
for i in all_objects['Contents']:
x=i['Key']
try:
y=(x.split('.')[0])
if y:
z=(y.split('/')[-1])
if z:
p=(z.split('')[0])
q=(z.split('')[1])
if p == 'Test':
for s, t in tag[p][q].items():
# Put S3 object tagging
response = s3.put_object_tagging(
Bucket='Test',
Key=x,
Tagging={
'TagSet': [
{
'Key': s,
'Value': t
},
]
}
)
except IndexError:
pass
Thanks
Sid