如何在Boto(Amazon S3)的键中添加标签?

sta*_*guy 6 python amazon-s3 boto boto3

我正在尝试标记已上传到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')
Run Code Online (Sandbox Code Playgroud)

Han*_*ank 10

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

它们比元数据具有更多的用途:

  • 可以在不复制对象的情况下添加和修改它们。
  • 它们可以用作生命周期管理规则中的过滤器。
  • 它们可用于控制对对象的访问。


val*_*lex 10

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'
            },
        ]
    }
)
Run Code Online (Sandbox Code Playgroud)


j0n*_*nes -3

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

  • 这个被接受的答案当时是正确的,但现在应该不被接受;在谷歌搜索中,这仍然是排名第一的搜索结果,但现在它是错误的且具有误导性。 (2认同)