Java 无法将文件上载到AWS S3存储桶
在过去的几个小时里,我一直在胡思乱想,不知道自己做错了什么 我设置了一个免费的Amazon S3帐户,创建了一个Bucket,并使用IAM工具创建了一个用户,并根据以下策略将其分配到一个组: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
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的权限。我认为这是一个许可问题。