首页 > 解决方案 > 如何列出 S3 存储桶中具有特定标签的文件?

问题描述

这是我的代码:

import json, boto3
def lambda_handler(event, context):
    client = boto3.client("s3", region_name='us-east-1')
    response = client.list_objects(Bucket='test-bucket')
    return response

上面的代码对我来说工作正常。但是我想列出存储桶中在文件(对象)上有特定标签的所有对象,比如说

department:finance

我为此写了以下政策:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "s3:List*",
            "Resource": "arn:aws:s3:::mynewbucket1122",
            "Condition": {
                "StringEquals": {
                    "s3:ExistingObjectTag/department": "finance"
                }
            }
        }
    ]
}

但是我遇到了错误,我怎样才能得到预期的结果。

标签: amazon-web-servicesamazon-s3amazon-iam

解决方案


存储桶策略即使正确,也不会按标签过滤您的对象。您仍然需要调用您的list_objects,获取对象的完整列表,并反复检查它们的标签以仅获取您感兴趣的那些。

换句话说,您必须在代码中进行过滤。


推荐阅读