Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法将文件上载到AWS S3存储桶_Java_Amazon Web Services_Amazon S3 - Fatal编程技术网

Java 无法将文件上载到AWS S3存储桶

Java 无法将文件上载到AWS S3存储桶,java,amazon-web-services,amazon-s3,Java,Amazon Web Services,Amazon S3,在过去的几个小时里,我一直在胡思乱想,不知道自己做错了什么 我设置了一个免费的Amazon S3帐户,创建了一个Bucket,并使用IAM工具创建了一个用户,并根据以下策略将其分配到一个组: AmazonS3FullAccess and AWSConnector 我尝试运行一个Java示例,如下所示: public static void main(String[] args) throws IOException { AmazonS3 s3client = new AmazonS3

在过去的几个小时里,我一直在胡思乱想,不知道自己做错了什么

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

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控制台上创建的第一个bucket,并尝试通过编程方式重新创建它,但现在它显示请求的bucket名称不可用


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

检查使用AWS控制台和编程方式创建的存储桶的权限。我认为这是一个权限问题。检查使用AWS控制台和编程方式创建的bucket的权限。我认为这是一个许可问题。