首页 > 解决方案 > 如果 source_list 中的项目存在于 target_list 中,则从 S3 存储桶中删除 s3 对象

问题描述

如果 source_list 中的项目存在于 target_list 中,我正在尝试从 S3 存储桶中删除一个 s3 对象。

源列表:

['ALH_LXN_RESPONSE_9.json',
'ALH_LXN_RESPONSE_10.json']

目标列表:

['ALH-LXN-RESPONSE.json',
 'ALH_LXN_RESPONSE_1.json',
  'ALH_LXN_RESPONSE_2.json',
 'ALH_LXN_RESPONSE_3.json',
 'ALH_LXN_RESPONSE_4.json',
 'ALH_LXN_RESPONSE_5.json',
 'ALH_LXN_RESPONSE_6.json',
 'ALH_LXN_RESPONSE_7.json',
 'ALH_LXN_RESPONSE_8.json',
 'ALH_LXN_RESPONSE_9.json',
 'ALH_LXN_RESPONSE_10.json']

在这种情况下,我需要删除“ALH_LXN_RESPONSE_9.json”、“ALH_LXN_RESPONSE_10.json”。

s3_resource = session.resource('s3')
my_bucket = s3_resource.Bucket("dw-duwr-84829492409")

标签: boto3

解决方案


试试这个示例代码

def delete_objects_from_S3():

    source_list = ['ALH_LXN_RESPONSE_9.json', 'ALH_LXN_RESPONSE_10.json']
    target_list = ['ALH-LXN-RESPONSE.json', 'ALH_LXN_RESPONSE_1.json', 'ALH_LXN_RESPONSE_2.json',
                   'ALH_LXN_RESPONSE_3.json', 'ALH_LXN_RESPONSE_9.json', 'ALH_LXN_RESPONSE_10.json']

    commonObjects = [e for e in source_list if e in '\n'.join(target_list)]

    s3 = boto3.resource('s3')

    for item in commonObjects:
        s3.Object('your_bucketName', item).delete()

推荐阅读