您好,我想将现有对象复制到AWS S3中的同一路径,但遇到以下异常
此复制请求是非法的,因为它试图将对象复制到自身,而不更改对象的元数据、存储类、网站重定向位置或加密属性
我正在使用Apache camel S3,我如何解决这个问题。搜索后,我发现有一个请求头,我们可以用它来替换现有的文件,但它不工作
// multiple other attempts also present, I am not sure which header will work
exchange.`in`.headers[AWS2S3Constants.METADATA] = mutableMapOf(
"x-amz-metadata-directive" to "REPLACE",
"x-amz-meta-directive" to "REPLACE",
"metadata-directive" to "REPLACE",
"MetadataDirective" to "REPLACE"
)
我已登录请求。
发送请求:默认SdkHttpFullRequest(httpMethod=PUT,协议=https,主机=,端口=443,编码路径=,头=[amz-sdk-调用ID,用户代理,x-amz-拷贝源,x-amz-元数据指令,x-amz-元数据指令,x-amz-元数据指令,x-amz-元数据指令],查询参数=[])
但是它不工作。我怎么能复制一个现有的对象到相同的路径而不得到这个错误。
3条答案
按热度按时间kognpnkq1#
我最终通过在文件名后添加时间戳来更改文件名。现在我不再收到错误。
但我认为,应该有一些方法通过API复制现有对象,因为我可以通过aws-cli做同样的事情
fykwrbwg2#
您是否查看过Apache Camel AWS2 S3组件中的copyObject操作?https://camel.apache.org/components/3.17.x/aws2-s3-component.html#_s3_producer_operation_examples
有一个与使“复制对象”操作正常工作所需的标头相关的示例。
0g0grzrc3#