Я получаю исключение при попытке загрузить файл в Amazon S3 из приложения Java Spring. Метод довольно прост:AWS Java S3 Ошибка загрузки: «файл профиля не может быть пустым»
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();
}
}
Это в основном те же, что Амазонка обеспечивает here и то же исключение с точно таким же сообщением («Файл профиля не может быть пустым») появляется при попытке this other версии. Проблема не связана с файлом, который не существует или является нулевым (я уже проверил тысячу способов, что аргумент File, полученный методом TransferManager.upload
, существует до его вызова).
Я не могу найти информацию о моем сообщении об исключении "файл профиля не может быть". Первые строки журнала ошибок являются следующими:
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)
Моей S3 политики позволяет получать и puttings объектов для всех типов пользователей.
Любая идея о том, что происходит?
Спасибо. То же самое в 'Lambda', я передавал' ProfileCredentialsProvider' в конструктор, который вызывает эту ошибку. Использование 'AmazonS3 s3Client = new AmazonS3Client();' работает. –
FYI - У меня была эта проблема в контейнере ECS докера. Это то же самое, что и с Лямбдой. Посмотрите в свой код для 'new ProfileCredentialsProvider (someProfile))' и замените его на 'DefaultAWSCredentialsProviderChain.getInstance()' –
Я оставил ответ с примерами кода здесь: http://stackoverflow.com/questions/41796355/aws-error- загрузки объектно-из-s3-Профиль-файл, не может-быть-нуль/44079772 # 44079772 –