无法将文件上传到AWS S3 Bucket

时间:2016-02-10 20:48:38

标签: java amazon-web-services amazon-s3

在过去的几个小时里,我一直在撕扯我的头发,我无法弄清楚我做错了什么。

我设置了一个免费的Amazon S3帐户,创建了一个Bucket并使用IAM工具创建了一个User并将他分配到一个具有以下策略的组:

AmazonS3FullAccess and AWSConnector

我正在尝试运行Java示例,如下所示:

 public static void main(String[] args) throws IOException {
    AmazonS3 s3client = new AmazonS3Client(
            new PropertiesFileCredentialsProvider("credentials.properties"));
    try {
        File file = new File("myfile");
        s3client.putObject(new PutObjectRequest("bucket", "key", file));

    } catch (AmazonServiceException ase) {
        ...
    } catch (AmazonClientException ace) {
        ...
    }
}

该文件是一个空文本文件。

当我运行此代码时,我得到了这个堆栈跟踪:

java.net.ProtocolException: Server rejected operation
    at sun.net.www.protocol.http.HttpURLConnection.expect100Continue(HttpURLConnection.java:1217) ~[na:1.8.0_31]
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream0(HttpURLConnection.java:1296) ~[na:1.8.0_31]
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1257) ~[na:1.8.0_31]
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250) ~[na:1.8.0_31]
    at com.amazonaws.http.UrlHttpClient.writeContentToConnection(UrlHttpClient.java:128) ~[aws-android-sdk-core-2.2.11.jar:na]
    at com.amazonaws.http.UrlHttpClient.execute(UrlHttpClient.java:65) ~[aws-android-sdk-core-2.2.11.jar:na]
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:353) [aws-android-sdk-core-2.2.11.jar:na]
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:196) [aws-android-sdk-core-2.2.11.jar:na]
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4212) [aws-android-sdk-s3-2.2.11.jar:na]
    at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1619) [aws-android-sdk-s3-2.2.11.jar:na]

有关可能发生的事情的任何想法?

更新

如果我以编程方式创建一个新Bucket,我可以成功上传文件。 我删除了我在managemente控制台上创建的第一个存储桶,并尝试以编程方式重新创建它,但现在它说请求的存储桶名称不可用。

我不知道为什么我不能使用手动创建的存储桶(使用managemente控制台创建)。

0 个答案:

没有答案