Java SpringアプリケーションからAmazon S3にファイルをアップロードしようとすると例外が発生します。この方法は非常に簡単です:AWS Java S3アップロードエラー:「プロファイルファイルをnullにできません」
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();
}
}
それはAmazonがhereを提供し、this otherバージョンをしようとしたときとまったく同じメッセージ(「プロファイルファイルをnullにすることはできません」)と同じ例外が表示されることを基本的に同じです。 この問題は、存在しないか、またはnullであるファイルに関連していません(呼び出す前にFileメソッドのTransferManager.upload
メソッドが既に存在することを何千もチェックしています)。
私の例外メッセージ "のプロファイルファイルはnullでない可能性があります"に関する情報は見つかりませんでした。エラーログの最初の行は次のとおりです。
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)
My S3ポリシーでは、すべての種類のユーザーのオブジェクトを取得して配置できます。
何が起こっているか考えてみませんか?
ありがとうございました。 'Lambda'と同じことですが、' ProfileCredentialsProvider'をコンストラクタに渡して、そのエラーを引き起こしていました。 'AmazonS3 s3Client = new AmazonS3Client();を使うと動作します。 –
FYI - 私はドッカーECSコンテナでこの問題を抱えていました。ラムダと同じことです。コードで 'new ProfileCredentialsProvider(someProfile)'を探して、 'DefaultAWSCredentialsProviderChain.getInstance()'に置き換えてください。 –
ここでコード例を使って答えを出しました:http://stackoverflow.com/questions/41796355/aws-error-オブジェクトをs3-profile-file-from-null-nullにすることはできません/ 44079772#44079772 –