使用x-amz-tagging请求标头进行AWS对象标记

时间:2017-03-28 17:17:43

标签: amazon-web-services amazon-s3

我正在使用Put Object端点将文件内容上传到s3并尝试使用x-amz-tagging请求标头。

请参阅此处的文档:http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html

如上面链接中的示例6所示:

  

示例6:上传对象并指定标签

     

在此上传对象请求中,您指定可选的x-amz-taggging   标题以向对象添加标记。

     

复制PUT / example-object HTTP / 1.1主机:   example-bucket.s3.amazonaws.com接受: /
  授权:授权字符串日期:星期四,2016年9月22日21:58:13   GMT x-amz-tagging:tag1 = value1& tag2 = value2

     

[......对象数据的字节]

我生成一个基本字符串,就像生成授权字符串一样:

String baseString = "PUT\n\ntext/plain\n" 
    + currentDate + "\n" 
    + "x-amz-tagging:tag1=value1&tag2=value2" + "\n" 
    + "/" + LOG_BUCKET_NAME + THE_REST_OF_THE_URL;

然后像我这样构建我的请求:

request.setRawHeader("Date", currentDate);
request.setRawHeader("Authorization", authorizationString);
request.setRawHeader("x-amz-tagging", "tag1=value&tag2=value2);

我每次都会收到一个禁止错误,但添加元数据的效果非常好:

基本字符串:

String baseString = "PUT\n\ntext/plain\n" 
    + currentDate + "\n" 
    + "x-amz-meta-reviewedby:my_email@domain.com" + "\n" 
    + "/" + LOG_BUCKET_NAME + THE_REST_OF_THE_URL;

然后:

request.setRawHeader("Date", currentDate);
request.setRawHeader("Authorization", authorizationString);
request.setRawHeader("X-Amz-Meta-ReviewedBy", "my_email@domain.com");

添加标签可能需要额外的用户权限吗?

1 个答案:

答案 0 :(得分:1)

实际上这是一个权限问题。该修复涉及为对象标记启用用户权限。