【发布时间】:2022-06-15 20:48:26
【问题描述】:
您好,我想将现有对象复制到 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"
)
我已登录请求。
发送请求:DefaultSdkHttpFullRequest(httpMethod=PUT, protocol=https, host=, port=443, encodedPath=, headers=[amz-sdk-invocation-id, User-Agent, x-amz-copy-source, x -amz-meta-directive、x-amz-meta-metadata-directive、x-amz-meta-MetadataDirective、x-amz-meta-x-amz-metadata-directive]、queryParameters=[])
但它不起作用。如何将现有对象复制到同一路径而不会出现此错误。
【问题讨论】:
-
为什么要复制到同一个路径?这有什么作用?
-
我有一个用例,我需要在周末跳过处理文件。但我的 S3 骆驼消费者,消费后自动删除文件。所以在周末我轮询并将文件复制到同一路径。如果我打开自动删除,那么我需要创建一个幂等消费者(这在我的场景中是多余的)
-
您的调度程序不知道星期几?
-
嗯,是的,其他选项是使用自定义调度程序。你知道如何在 Apache camel 中进行配置吗?
-
你真的改变了与复制的对象有关的任何事情吗?您需要更改 something 例如文件名?请将请求和当前代码添加到问题中。
标签: java amazon-web-services amazon-s3 apache-camel aws-sdk-java-2.0