2017-05-30 62 views
0

當我手動上傳文件到S3我必須對它進行加密並且它工作正常,我嘗試使用服務器端加密的SDK來執行相同的操作。我沒有看到任何錯誤,但我也沒有看到該文件。使用SDK寫入S3沒有錯誤,但沒有文件

AmazonS3Client s3Client = new AmazonS3Client(new DefaultAWSCredentialsProviderChain()); 
AmazonS3URI uri = new AmazonS3URI("https://s3.amazonaws.com/xyz/abc"); 
File file = new File("/home/ec2-user/abc"); 

PutObjectRequest putRequest = new PutObjectRequest(uri.getBucket(), uri.getKey(), file); 

ObjectMetadata objectMetadata = new ObjectMetadata(); 
objectMetadata.setServerSideEncryption(ObjectMetadata.AES_256_SERVER_SIDE_ENCRYPTION); 
putRequest.setMetadata(objectMetadata); 

PutObjectResult response = s3Client.putObject(putRequest); 
System.out.println("Uploaded object encryption status is " + response.getContentMd5()); 

回答

0

我覺得你的URI是不正確的:AmazonS3URI uri = new AmazonS3URI("https://s3.amazonaws.com/xyz/abc");您需要的地方提供鬥名字 - 這也許應該先於s3.amazonaws part

最好只指定水桶名和密鑰明確:

PutObjectRequest putRequest = new PutObjectRequest("my.bucket.name", "dir/dir/file.txt", file); 
+0

我不認爲這是一個問題,我印uri.bucket和uri.key的內容,他們正在爲XYZ和bucketname abc的關鍵。所以這工作正常 – user373201

+0

對於我指定的文件夾名稱的密鑰,並沒有提供文件名稱。添加該片後,它工作正常。 – user373201

相關問題