まったく同じキーに新しいメタデータを使用してコピーを実行することにより、s3 ストレージ内の既存のすべてのファイルに Cache-Control ヘッダーを設定しようとしています。x-amz-metadata-directive: REPLACE
これは、ヘッダーを介して s3 API によってサポートされています。https://docs.developer.swisscom.com/service-offerings/dynamic.html#s3-apiにある s3 API の互換性に関するドキュメントでは、オブジェクト コピー メソッドは、サポート対象またはサポート対象外としてリストされていません。
コピー自体は(別のキーへの)正常に機能しますが、新しいメタデータを設定するオプションは、同じキーまたは別のキーへのコピーでは機能しないようです。これは ATMOS s3 互換 API でサポートされていないのでしょうか? また、すべてのコンテンツを読み取ってストレージに書き戻すことなくメタデータを更新する他の方法はありますか?
現在、Amazon Java SDK (v. 1.10.75.1) を使用して呼び出しを行っています。
アップデート:
いくつかのテストの後、私が抱えている問題はより具体的であるようです。コピーは機能し、Content-Disposition や Content-Type などの他のメタデータを正常に変更できます。Cache-Control だけが無視されます。
ここで要求されているように、呼び出しを行うために使用しているコードは次のとおりです。
BasicAWSCredentials awsCreds = new BasicAWSCredentials(accessKey, sharedsecret);
AmazonS3 amazonS3 = new AmazonS3Client(awsCreds);
amazonS3.setEndpoint(endPoint);
ObjectMetadata metadata = amazonS3.getObjectMetadata(bucketName, storageKey).clone();
metadata.setCacheControl("private, max-age=31536000");
CopyObjectRequest copyObjectRequest = new CopyObjectRequest(bucketName, storageKey, bucketName, storageKey).withNewObjectMetadata(metadata);
amazonS3.copyObject(copyObjectRequest);
API への PUT (コピー) 要求の Cache-Control ヘッダーが途中でドロップされている可能性がありますか?