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

Ali*_*ani 5 amazon-s3 amazon-web-services

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

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

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

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

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

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

[...对象数据字节]

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

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;
Run Code Online (Sandbox Code Playgroud)

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

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

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

基本字符串:

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;
Run Code Online (Sandbox Code Playgroud)

进而:

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

添加标签是否需要额外的用户权限?

Ali*_*ani 4

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