Lambda function for S3 tagging with multiple tags

0

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

sid1987
已提問 5 年前檢視次數 1268 次
1 個回答
0

Got it, you just need to create a list of dictionaries and assign it to tag_set

sid1987
已回答 5 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南