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 年前1262 查看次数
1 回答
0

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

sid1987
已回答 5 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则