java - 复制后 Amazon S3 Java SDK copyObject 权限被拒绝
问题描述
我们正在使用带有 JDK copyObject 方法的 Amazon S3 将对象从一个存储桶复制到另一个存储桶。复制是自动的。User1手动上传文件到源bucket,systemUser传输到目的bucket。User1 是源和目标存储桶所有者。
s3.copyObject(sourceBucket, objectKey, destinationBucket, objectKey);
复制有效,但复制后 User1 无法访问目标存储桶中复制的对象。拒绝访问。在目标存储桶中复制后复制的对象所有者是 systemUser。还尝试修改目标中复制对象的 acl。
s3.setObjectAcl(destinationBucket, objectKey, acl);
这也给出拒绝访问。
我们如何复制对象,以便 User1(复制到源存储桶并且是源存储桶和目标存储桶的所有者)可以访问目标存储桶中的文件?
解决方案
由于保留政策,我们无法在复制后编辑文件(和权限)。我们切换到 CopyObjectRequest,它具有在复制之前指定 ACL 并将其作为参数提供给复制操作的选项。
推荐阅读
- scala - 如何在 Scala Spark 项目中使用 PySpark UDF?
- php - 使用 PHP 从亚马逊 MWS API 获取订单数据
- vim - 用于方案的 Vim 8.0 扩展语法高亮
- ag-grid - 在没有企业许可证的情况下在 ag-grid 中实施 Master 详细信息
- c++ - 为什么 push_back 和 emplace_back 结合在一起时会有不同的行为
- css - 顶部菜单问题的间距
- c - Pairing even and odd numbers in an array
- ios - 图像未在方向更改时调整大小
- angular - 角度测试:FormControl valueChanges Observable
- mysql - 如何使用另一列作为乘数而不是行数 MySQL 从表中获取最高出现值