[英]How to put object tags on existing tagged object
我目前正在使用 NodeJS 和 AWS S3 SDK 开发 Lambda 函数。
在本地使用无服务器离线工作时,我可以轻松地将 object TagSet 替换为putObjectTagging
function,但在生产环境中,我确实遇到此错误:
不能提供具有相同键的多个标签
在阅读putObjectTagging
和 AWS 标签文档时,我没有找到针对此错误的任何解决方案,因为我确实假设putObjectTagging
替换了现有 object 的所有标签。
在我的代码中,我获取现有的 TagSet 并更新值,然后将它们放入:
let tags = await S3.getObjectTagging(bucketParam).promise();
// process on tags and set in paramsPutObjectTagging
await S3.putObjectTagging(paramsPutObjectTagging).promise();
提前谢谢你, 问候。
s3:PutObjectTagging
调用将用调用中提供的 TagSet 替换TagSet
上的任何现有TagSet
。 虽然调用请求体中的TagSet
属性是一个数组,但是数组中每一项的Key
属性必须是不同的, TagSet
中不能有重复的Key
。
要向 object 添加新标签,同时保留现有标签,您需要使用s3:GetObjectTagging
检索现有TagSet
,然后 append 将新标签添加到TagSet
数组,然后如上所述使用s3:PutObjectTagging
。 执行此操作时,您需要检查从s3:GetObjectTagging
检索到的TagSet
中是否还没有与您尝试添加的新标签具有相同Key
的标签 - 这可能就是您收到该错误的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.