AWS Java S3 Uploading error: "profile file cannot be null" : <p>I get an exception when trying to upload a file to Amazon S3 from my Java Spring application. The method is pretty simple:</p>

<pre><code>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();
        }
    }
</code></pre>

<p>It is basically the same that amazon provides <a href="http://docs.aws.amazon.com/AmazonS3/latest/dev/HLuploadFileJava.html" rel="noreferrer">here</a>, and the same exception with the exactly same message ("profile file cannot be null") appears when trying <a href="http://docs.aws.amazon.com/AmazonS3/latest/dev/UploadObjSingleOpJava.html" rel="noreferrer">this other</a> version.
The problem is not related to the file not existing or being null (I have already checked in a thousand ways that the File argument recieved by <code>TransferManager.upload</code> method exists before calling it).</p>

<p>I cannot find any info about my exception message "<strong>profile file cannot be null</strong>". The first lines of the error log are the following:</p>

<pre><code>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)
</code></pre>

<p>My S3 policy allows getting and puttings objects for all kind of users.</p>

<p>Any idea about what's happening?</p>
