嘗試從我的Java Spring應用程序上傳文件到Amazon S3時出現異常。方法很簡單: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版本時完全相同的消息(「配置文件不能爲空」)相同的異常出現。 該問題與文件不存在或爲空無關(我已經用千種方法檢查了在調用它之前存在的TransferManager.upload
方法存在的File參數)。
我找不到有關我的異常消息「配置文件不能爲空」的任何信息。錯誤日誌的第一線如下:
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 =新的AmazonS3Client();'工作。 –
僅供參考 - 我在Docker ECS容器中遇到此問題。這與Lambda一樣。在你的代碼中查找'新的ProfileCredentialsProvider(someProfile))'並用'DefaultAWSCredentialsProviderChain.getInstance()'替換它' –
我在這裏留下了一個代碼示例的答案:http://stackoverflow.com/questions/41796355/aws-error-下載對象,從-S3-輪廓文件不能-是空/ 44079772#44079772 –