2017-01-11 6 views
0

同じバケット内のあるs3フォルダから別のs3フォルダにデータをコピーしようとしています。私はAmazonS3クラスからcopyObject関数を使用しています。エラーや例外は表示されず、結果も得られます。しかし、ファイルはコピーされません。何らかの障害が発生した場合は、少なくとも何らかのエラーを除きます。私が間違っていることは何ですか? 実際のエラーをどのように知ることができますか?Amazon S3コピーオブジェクトJava API

AmazonS3 s3client =新しいAmazonS3Client(新しいProfileCredentialsProvider()); CopyObjectRequest copyObjRequest = new CopyObjectRequest( sourceURI.getBucket()、sourceURI.getKey()、destinationURI.getBucket()、destinationURI.getKey());

CopyObjectResult copyResult = s3client.copyObject(copyObjRequest);

ソースと宛先URIに適切な値があります。資格のためですか?クレデンシャルがないために動作しない場合は、このコードからのエラーが予想されます。

+0

あなたのコードを見ることなく伝える方法はありません。ここで

は私のために正常に動作し、正しいコピーされたファイルに結果があなたに基づいていくつかのコードです。 – stdunbar

+0

私もコードで質問を更新しました。 – Passionate

+0

ターゲットファイルが存在しないとどのように判断していますか? – jarmod

答えて

1

私はあなたが間違ってコピーの宛先を指定したと思われます。

宛先は完全なバケットとキーです。たとえば、dogs/beagle.pngをsmalldogs/beagle.pngにコピーする場合は、宛先キーをsmalldogs /として指定するだけでは不十分です。それはコピーがNTFSやNFSのような通常のファイルシステム上でどのように動作するのかですが、オブジェクトストレージではどのように動作しますか。その結果、smalldogs /という名前のオブジェクトが作成され、それがフォルダのように見えますが、実際にはビーグルイメージのコピーです。

したがって、作成した間違ったオブジェクトを削除して、宛先を完全に正しく指定してください。

ここでの操作はコピーです。 '移動'したい場合は、後でソースを削除する必要があります。

String bkt = "my-bucket"; 
String src = "dogs/beagle.png"; 
String dst = "smalldogs/beagle.png"; 

AmazonS3Client s3 = new AmazonS3Client(); 
CopyObjectRequest req = new CopyObjectRequest(bkt, src, bkt, dst); 
CopyObjectResult res = s3.copyObject(req); 
+0

ソースバケット、ソースキー、送り先バケット、送り先キーを印刷しようとしています。ソースバケットと宛先バケットの値はバケットの名前です。私のソースキーはdogs/beagle.pngです。そして、私の目的地キーはsmalldogs /でした。そして私はsmalldogs/beagle.pngとして目的地キーを試しました。あまりにもデータをコピーしません。そしてエラーはありません。 – Passionate

+0

エラーがなければ、最初と同じようにオブジェクトをコピーしました。あなたが間違っているか、新しいオブジェクトがまだ完全に伝播しておらず、あなたのリストがそれを返さなかった(S3は最終的に書き込み後に一貫したリストを持つため)。 – jarmod

+0

2日待ってもファイルは表示されません。以前も一貫性の問題が疑われました。 ProfileCredentialsProviderを作成していて、その中に値が入っていないのは問題ですか? – Passionate