我正在 s3 中上传文件,编写以下代码:
String filePath=KeyProvider.localFolerPath + KeyProvider.suffix +KeyProvider.FileNameToUpload;
// upload file to folder and set it to public
String fileName = folderName + KeyProvider.suffix +KeyProvider.remoteFileName ;
s3client.putObject(
new PutObjectRequest(bucketName, fileName, new File(filePath))
.withCannedAcl(CannedAccessControlList.PublicReadWrite));`
它抛出类似的错误
com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied
请建议我在单独的常量文件中提供存储桶名称 key 和 secret 时出现的错误在哪里。
谢谢..
最佳答案
你检查过亚马逊的文件吗?
而且,要小心。您需要为 s3 客户端设置 access_key 和 access_secret 字符串。
示例
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.AmazonServiceException;
// "credentialsProvider" will be created by some classes for example "AWSStaticCredentialsProvider"
//
// BasicAWSCredentials cred = new BasicAWSCredentials("xxxxx", "yyyyy");
// AWSStaticCredentialsProvider credentialsProvider = new AWSStaticCredentialsProvider(cred);
AmazonS3 s3 = AmazonS3ClientBuilder.standard().withCredentials(credentialsProvider).build();
try {
s3.putObject(bucket_name, key_name, file_path);
} catch (AmazonServiceException e) {
System.err.println(e.getErrorMessage());
System.exit(1);
}
编辑
S3 策略可以根据凭据或 IP 地址处理拒绝/允许访问。您配置了这样的策略吗?
关于java - 在AWS的S3中上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46921173/