在过去的几个小时里,我一直在撕扯我的头发,我无法弄清楚我做错了什么。
我设置了一个免费的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控制台创建)。