복사 객체는 this 요청에 쉽게 :aws s3의 객체를 개인용 버킷에서 공용 버킷으로 복사하지 않고 복사하는 방법은 무엇입니까? 같은 지역의 S3에서 버킷에서
AmazonS3 pS3client = new AmazonS3Client(new BasicAWSCredentials(/*supressed*/));
String key = "key";
pS3client.copyObject("sourceBucket", key, "destinationBucket", key);
그러나 sourceBucket
개인 액세스 버킷이며, 위의 요청이 실패 버킷의 개체에 액세스하는 사전 서명 URL을 필요로 할 때.
개인 액세스로 인해 파일에 대한 액세스가 거부되었습니다.
com.amazonaws.services.s3.model.AmazonS3Exception : 액세스 거부 (서비스 : 아마존 S3, 상태 코드 : 403 오류 코드 : AccessDenied, 요청 ID : <>), S3 확장 요청 ID : <> com.amazonaws.http.AmazonHttpClient $에서 com.amazonaws.http.AmazonHttpClient $ RequestExecutor.executeOneRequest (AmazonHttpClient.java:1249) 에서 com.amazonaws.http.AmazonHttpClient $ RequestExecutor.handleErrorResponse (AmazonHttpClient.java:1579) 에서 RequestExecutor.executeHelper (AmazonHttpClient.java:1030) com.amazonaws.http.AmazonHttpClient $ RequestExecutor.doExecute (AmazonHttpClient.java:742) at com.amazonaws.http.AmazonHttpClient $ RequestExecutor.executeWithTimer (AmazonHttpClient.java:716) at com.amazonaws.http.AmazonHttpClient $ RequestExecutor.execute (AmazonHttpClient.java:699) at com.amazonaws.http.AmazonHttpClient $ RequestExecutor.access $ 500 (AmazonHttpClient.java:667)) com.amazonaws.http.AmazonHttpClient $ RequestExecutionBuilderImpl.execute (AmazonHttpClient.java:649)
어떻게 S3 요청을 공공 destinationBucket
에 개인 물통에서 복사 할 copyObject 요청에 미리 서명 매개 변수를 제공하기에?
해결 방법은 명백한 해결책은 GeneratePresignedUrlRequest
을 사용하고 sourceBucket의 개체에 액세스하기 위해 미리 서명 된 URL을 얻고 임시 파일로 다운로드하고 putObject
을 사용하여 대상 버킷에 업로드하는 것입니다. 네트워크가 너무 많아서 더 좋은 대안이 무엇인지 궁금해하고 있었습니까?