首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在将对象上载到S3桶时添加标记

如何在将对象上载到S3桶时添加标记
EN

Stack Overflow用户
提问于 2020-03-30 19:16:49
回答 1查看 2.3K关注 0票数 0

我一直在使用Amazon的一些示例代码来获得一个脚本,以便将一个对象上传到aws的php版本3中的桶中。我可以让对象上传到桶中,但是在这个PutObject方法调用期间,我尝试向这个新对象添加一个标记。我研究了一些我发现的例子,但是没有什么对我有用。到目前为止,以下是我的php代码:

代码语言:javascript
复制
$cmd = $s3Client->getCommand('PutObject', [
    'Bucket' => $config['s3BucketName'],
    'Key' => 'file_upload_direct.mp4',
    'Tagging' => 'status=notProcessed',
]);

标记属性不会被应用,并且在发送表单时不会出现任何错误。我见过一些向上传添加标签的方法,但这些方法对我都没有用。我试图避免使用PutObjectTagging方法,因为如果我能够在PutObject方法中定义标记,这似乎是额外的工作。我不确定问题是否试图在PutObject中使用getCommand方法,但据我所知,您应该能够将正常参数作为这样的数组传递。有没有人能让这件事起作用,或者我应该尝试用一种不同的方式来完成这件事?

EN

回答 1

Stack Overflow用户

发布于 2021-01-13 19:27:16

迟来总比不去好,对吧?

这里的问题是AWS文档在强调重要细节方面很差,比如:

注意:在使用预签名URL时,并不支持所有操作参数.在发送请求时,某些参数(如SSECustomerKey、ACL )过期、ContentLength或标记必须作为标头提供。

您可以在API文档中找到这些,很容易被忽略。

这意味着准备数据以创建一个签名,该签名如下所示:

代码语言:javascript
复制
$cmd = $s3Client->getCommand('PutObject', [
  'Bucket' => $config['s3BucketName'],
  'Key' => 'file_upload_direct.mp4',
  'Tagging' => 'status=notProcessed',
]);

然后,当您从

代码语言:javascript
复制
$s3Client->createPresignedRequest($cmd, '+5 minutes');

你把它放到那个网址上,你还必须发送Header X-Amz-Tagging: status=notProcessed

要记住的另一件重要的事情是,如果您是来自前端的PUTting,则您的桶必须有正确的CORS策略,并允许像x-amz-tagging这样的头。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60937896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档