如何使用预签名 URL 和 s3 aws-sdk-ruby v3 中的标签上传 object
How to upload an object using presigned URL along with tags in s3 aws-sdk-ruby v3
我正在尝试使用预签名 URL 上传 object。但我想上传 object 和标签。正确的做法是什么?
方法一:
我尝试了以下 ruby 代码:
signer = Aws::S3::Presigner.new
signer.presigned_url(:put_object, bucket: bucket_name, key: url, tagging: 'taggingName=tagValue')
但这只是上传object,并没有添加标签。
方法二:
我尝试将 'x-amz-tagging' header 列入白名单,并尝试从客户端上传文件以及 header。
Ruby代码:
signer = Aws::S3::Presigner.new
url = signer.presigned_url(:put_object, bucket: bucket_name, key: public_url, whitelist_headers: ['x-amz-tagging'])
客户端代码:
return $http({
method: 'PUT',
url: presigned_url,
ignoreLoadingBar: true,
data: file,
headers: {
'Content-Type': file.type,
'x-amz-tagging': 'taggingName=tagValue'
}
})
但这在上传时抛出一个错误,提示“x-amz-tagging”未签名。
我正在使用 aws-sdk-ruby v3 (Ror)
The tag-set for the object. The tag-set must be encoded as URL Query parameters. (For example, "Key1=Value1")
错误似乎是在说同样的话
"x-amz-tagging" is not signed.
所以在创建URL的时候需要提供什么样的标签对应的值。
PUT /example-object HTTP/1.1
Host: example-bucket.s3.<Region>.amazonaws.com
Accept: */*
Authorization:authorization string
Date: Thu, 22 Sep 2016 21:58:13 GMT
x-amz-tagging: tag1=value1&tag2=value2
[... bytes of object data]
同一文档页面上的示例 6。
无论您在创建已签名的 url 时提供了什么标签,您都可以从 url 中提取相同的标签并将它们传递给 x-amz-tagging
类似
const tag = signS3URL.tag;
...
const options = {
url: signedUrl,
path: fileUrl,
method: "PUT",
headers: { "Content-Type": file.mimeType, "X-Amz-Tagging": tag }
};
虽然我对 JS 不太好。
最后但并非最不重要的一点是检查您的 cloudtrail 日志是否存在标记对象的错误。
我正在尝试使用预签名 URL 上传 object。但我想上传 object 和标签。正确的做法是什么?
方法一:
我尝试了以下 ruby 代码:
signer = Aws::S3::Presigner.new
signer.presigned_url(:put_object, bucket: bucket_name, key: url, tagging: 'taggingName=tagValue')
但这只是上传object,并没有添加标签。
方法二:
我尝试将 'x-amz-tagging' header 列入白名单,并尝试从客户端上传文件以及 header。
Ruby代码:
signer = Aws::S3::Presigner.new
url = signer.presigned_url(:put_object, bucket: bucket_name, key: public_url, whitelist_headers: ['x-amz-tagging'])
客户端代码:
return $http({
method: 'PUT',
url: presigned_url,
ignoreLoadingBar: true,
data: file,
headers: {
'Content-Type': file.type,
'x-amz-tagging': 'taggingName=tagValue'
}
})
但这在上传时抛出一个错误,提示“x-amz-tagging”未签名。
我正在使用 aws-sdk-ruby v3 (Ror)
The tag-set for the object. The tag-set must be encoded as URL Query parameters. (For example, "Key1=Value1")
错误似乎是在说同样的话
"x-amz-tagging" is not signed.
所以在创建URL的时候需要提供什么样的标签对应的值。
PUT /example-object HTTP/1.1
Host: example-bucket.s3.<Region>.amazonaws.com
Accept: */*
Authorization:authorization string
Date: Thu, 22 Sep 2016 21:58:13 GMT
x-amz-tagging: tag1=value1&tag2=value2
[... bytes of object data]
同一文档页面上的示例 6。
无论您在创建已签名的 url 时提供了什么标签,您都可以从 url 中提取相同的标签并将它们传递给 x-amz-tagging
类似
const tag = signS3URL.tag;
...
const options = {
url: signedUrl,
path: fileUrl,
method: "PUT",
headers: { "Content-Type": file.mimeType, "X-Amz-Tagging": tag }
};
虽然我对 JS 不太好。
最后但并非最不重要的一点是检查您的 cloudtrail 日志是否存在标记对象的错误。