是否可以使用标签将文件上传到AWS S3(不将标签添加到S3中的现有文件/对象)。我需要将文件与我的标签一起显示在S3中,即在一个API调用中。
我需要这个,因为我使用的Lambda函数(使用这些S3对象标签)是由S3 ObjectCreation触发的。
答案 0 :(得分:1)
您可以在Tagging
操作中通知put
属性。
下面是使用Boto3
的示例:
import boto3
client = boto3.client('s3')
client.put_object(
Bucket='bucket',
Key='key',
Body='bytes',
Tagging='Key1=Value1'
)
根据docs,必须将Tagging
属性编码为URL查询参数。 (例如,“ Key1 = Value1”)
Tagging —(字符串)对象的标签集。标签集必须是 编码为URL查询参数。 (例如,
"Key1=Value1"
)
编辑:过了一会儿我才注意到boto3
标签,所以我编辑了答案以匹配boto3的相应方式。
答案 1 :(得分:1)
如果您使用client.upload_file()
或具有ExtraArgs
参数的其他方法上传文件,则以不同的方式指定标记:
import boto3
client = boto3.client('s3')
client.upload_file(
Filename=path_to_your_file,
Bucket='bucket',
Key='key',
ExtraArgs={"Metadata": {"mykey": "myvalue"}}
)
S3 docs上有一个示例,但是您必须知道“元数据”与标签相对应。
s3.upload_file(
"tmp.txt", "bucket-name", "key-name",
ExtraArgs={"Metadata": {"mykey": "myvalue"}}
)
答案 2 :(得分:0)
Tagging
指令。如果您使用 upload_file()
import boto3
from urllib import parse
s3 = boto3.client("s3")
tags = {"key1": "value1", "key2": "value2"}
s3.upload_file(
"file_path",
"bucket",
"key",
ExtraArgs={"Tagging": parse.urlencode(tags)},
)