如何在boto(Amazon S3)中为键添加标记?

时间:2013-04-05 06:19:34

标签: 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')

4 个答案:

答案 0 :(得分:7)

S3此后添加了object level tags。您可以使用get setboto3

这些比元数据更通用:

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

答案 1 :(得分:2)

S3"标签"只是在桶级,桶中的每个密钥都可以具有任意的元数据"与之相关联,它们本身就是键值对。请参阅boto documentation

k.set_metadata('key', 'value')
value = k.get_metadata('key') # prints 'value'

答案 2 :(得分:2)

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'
            },
        ]
    }
)

答案 3 :(得分:1)

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