Otrzymuję wyjątek podczas próby przesłania pliku do Amazon S3 z mojej aplikacji Java Spring. Metoda jest bardzo prosta:AWS Java S3 Błąd przesyłania: "plik profilu nie może być pusty"
private void productionFileSaver(String keyName, File f) throws InterruptedException {
String bucketName = "{my-bucket-name}";
TransferManager tm = new TransferManager(new ProfileCredentialsProvider());
// TransferManager processes all transfers asynchronously,
// so this call will return immediately.
Upload upload = tm.upload(
bucketName, keyName, new File("/mypath/myfile.png"));
try {
// Or you can block and wait for the upload to finish
upload.waitForCompletion();
System.out.println("Upload complete.");
} catch (AmazonClientException amazonClientException) {
System.out.println("Unable to upload file, upload was aborted.");
amazonClientException.printStackTrace();
}
}
To jest w zasadzie to samo, że Amazon udostępnia here, a tym samym wyjątek z dokładnie tej samej wiadomości („plik profilu nie może być null”) pojawia się podczas próby this other wersję. Problem nie jest związany z plikiem nieistniejącym lub będącym zerowym (sprawdziłem już tysiące sposobów, że argument Plik został odebrany przez metodę TransferManager.upload
przed wywołaniem).
Nie mogę znaleźć żadnych informacji na temat mojego komunikatu o wyjątku "plik profilu nie może mieć wartości null". Pierwsze wiersze protokołu błędów są następujące:
com.amazonaws.AmazonClientException: Unable to complete transfer: profile file cannot be null
at com.amazonaws.services.s3.transfer.internal.AbstractTransfer.unwrapExecutionException(AbstractTransfer.java:281)
at com.amazonaws.services.s3.transfer.internal.AbstractTransfer.rethrowExecutionException(AbstractTransfer.java:265)
at com.amazonaws.services.s3.transfer.internal.AbstractTransfer.waitForCompletion(AbstractTransfer.java:103)
at com.fullteaching.backend.file.FileController.productionFileSaver(FileController.java:371)
at com.fullteaching.backend.file.FileController.handlePictureUpload(FileController.java:247)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
Moja polityka S3 umożliwia pobieranie i umieszczanie obiektów dla wszystkich rodzajów użytkowników.
Masz pojęcie o tym, co się dzieje?
Dzięki. To samo w 'Lambda', przekazywałem' ProfileCredentialsProvider' do konstruktora, który powoduje ten błąd. Używanie 'AmazonS3 s3Client = new AmazonS3Client();' działa. –
FYI - Miałem ten problem w pojemniku ECS w doku. To samo, co w przypadku Lambdy. Zajrzyj do kodu dla 'new ProfileCredentialsProvider (someProfile)) i zastąp go' DefaultAWSCredentialsProviderChain.getInstance() ' –
Zostawiłem odpowiedź z przykładami kodu tutaj: http://stackoverflow.com/questions/41796355/aws-error- pobieranie-object-from-s3-profile-file-can-null-by-null/44079772 # 44079772 –