我正在尝试标记我上传到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')
答案 0 :(得分:7)
S3此后添加了object level tags。您可以使用get set和boto3。
这些比元数据更通用:
答案 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仅适用于存储桶级别,而不适用于单个密钥。因此,您无法为上传的文件设置不同的标签,但您必须在包含的存储桶上执行此操作。