通过AWS CLI上传S3对象时添加多个标签的正确语法是什么
错误原因
报错是因为你传入的--tagging参数不符合S3接口规范:
- 多个标签需按照URL查询参数格式拼接,标签之间用
&分隔,不能使用逗号 - 你在分隔符后添加了多余空格,也不符合编码要求
正确语法
方案1:直接拼接标签键值对
多个标签用&分隔,整体放在双引号内,避免Shell将&识别为后台执行指令,标签间不要加多余空格:
aws s3api put-object --bucket mybucket --key something/obj.txt --body obj.txt --tagging "mykeyname1=myvalue1&mykeyname2=myvalue2"
如果标签的键或值包含特殊字符(空格、&、=、非ASCII字符等),需要先做URL编码,例如值为测试值 2要转写为%E6%B5%8B%E8%AF%95%E5%80%BC%202。
方案2:通过JSON结构传参(兼容性更强)
如果标签数量多或者包含特殊字符,推荐用JSON格式传参,无需手动做URL编码:
aws s3api put-object --bucket mybucket --key something/obj.txt --body obj.txt --tagging '{"TagSet": [{"Key": "mykeyname1", "Value": "myvalue1"}, {"Key": "mykeyname2", "Value": "myvalue2"}]}'
标签量很大的话也可以把配置存在本地JSON文件中调用,示例:
- 新建
tags.json文件,内容如下:
{ "TagSet": [ { "Key": "mykeyname1", "Value": "myvalue1" }, { "Key": "mykeyname2", "Value": "myvalue2" } ] }
- 执行命令:
aws s3api put-object --bucket mybucket --key something/obj.txt --body obj.txt --tagging file://tags.json
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

