13

我正在尝试标记已上传到 S3 的密钥。在下同我只是从一个字符串创建一个文件。一旦我有了它们的密钥,我就不确定如何标记文件。我试过 Tag 和 TagSet。

from boto.s3.bucket import Bucket
from boto.s3.key import Key
from boto.s3.tagging import Tag, TagSet

k = Key(bucket)
k.key = 'foobar/somefilename'
k.set_contents_from_string('some data in file')

Tag(k, 'the_tag')
4

4 回答 4

23

S3 此后添加了对象级标签。您可以使用boto3获取设置它们。

这些比元数据更通用:

  • 无需复制对象即可添加和修改它们。
  • 它们可以用作生命周期管理规则中的过滤器。
  • 它们可用于控制对对象的访问。
于 2018-04-16T20:31:26.760 回答
16
import boto3

s3_client = boto3.client(
    's3',
    region_name='region-name',
    aws_access_key_id='aws-access-key-id',
    aws_secret_access_key='aws-secret-access-key',
)

get_tags_response = s3_client.get_object_tagging(
    Bucket='your-bucket-name',
    Key='folder-if-any/file-name.extension',
)

put_tags_response = s3_client.put_object_tagging(
    Bucket='your-bucket-name',
    Key='folder-if-any/file-name.extension',    
    Tagging={
        'TagSet': [
            {
                'Key': 'tag-key',
                'Value': 'tag-value'
            },
        ]
    }
)
于 2020-05-04T10:23:51.523 回答
0

虽然 S3 “标签”仅在存储桶级别,但存储桶中的每个键都可以具有与之关联的任意“元数据”,它们本身就是键值对。请参阅boto 文档

k.set_metadata('key', 'value')
value = k.get_metadata('key') # prints 'value'
于 2014-08-12T23:31:58.370 回答
-2

据我在文档中看到的,setTags-method仅适用于存储桶级别,而不适用于单个键。因此,您不能为上传的文件设置不同的标签,但您必须在包含存储桶上执行此操作。

于 2013-04-05T07:41:04.433 回答