2017-05-30 4 views
0

Wenn ich manuell eine Datei auf S3 hochladen, muss ich es verschlüsseln und es funktioniert gut, ich versuche, das gleiche mit dem SDK zu tun, ich benutze serverseitige Verschlüsselung. Ich sehe keine Fehler, aber ich sehe die Datei auch nicht.Schreiben in S3 mit SDK keine Fehler, aber keine Datei

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()); 

Antwort

0

Ich denke, Ihre URI ist falsch: AmazonS3URI uri = new AmazonS3URI("https://s3.amazonaws.com/xyz/abc"); Sie müssen den Bucket-Namen irgendwo liefern - und es sollte wohl die s3.amazonaws part vorangestellt werden.

besser, nur explizit die Bucket-Namen und Schlüssel angeben:

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

Ich glaube nicht, dass ein Problem, gedruckt ich den Inhalt uri.bucket und uri.key und sie für bucketname sind xyz und abc für Schlüssel. so das funktioniert gut – user373201

+0

Für den Schlüssel habe ich den Ordnernamen angegeben und nicht den Dateinamen zusammen mit ihm. Nach dem Hinzufügen dieses Stückes funktioniert es gut. – user373201

Verwandte Themen