我正在尝试使用AWS Java API向S3存储桶添加一组新标记,但我收到的错误是这样的:
3p
这是我写的代码(com.amazonaws.services.s3.model.AmazonS3Exception: The XML you provided was not well-formed or did not validate against our published schema (Service: Amazon S3; Status Code: 400; Error Code: MalformedXML; Request ID: 5B3401CBDB133A88), S3 Extended Request ID: z1EDhMH5vN7o/9Tk93K5R1gWmmqUr49WjEz2rovD9HRCGJ54yHBfoTuUURvnpoizlCUK3Fy9qbY=
是newTags
):
Map<String, String>
我自己甚至没有使用XML,错误对于实际出错的情况无益。发生了什么事?
答案 0 :(得分:2)
Java API和REST API之间存在小的不匹配。看看PUT Bucket Tag request。它没有明确说明,但暗示您每List<TagSet> tags = amazonS3.getBucketTaggingConfiguration(bucketName).getAllTagSets();
tags.add(new TagSet(newTags));
s3Service.setBucketTaggingConfiguration(bucketName, new BucketTaggingConfiguration(tags));
个TagSet
集合只能有一个Tagging
。但是,BucketTaggingConfiguration允许使用TagSets列表。
不是添加新的TagSet,而是从配置中的第一个TagSet获取Map<String, String>
,将标记添加到该地图,然后从中创建新的TagSet。将BucketTaggingConfiguration视为仅允许TagSets的单项列表。
答案 1 :(得分:1)
好的终于弄明白了,但这里是我的代码,我是如何在S3存储桶上放置多个标签的。虽然代码暗示我可以添加多个tagSets,但如果我这样做,它似乎会失败并出现上述错误。我刚用mu
创建了一个TagSetint ip_addr = Some integer
printf("ip address = %g", ip_addr);