Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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 S3 - Fatal编程技术网

使用Java拒绝AWS S3访问

使用Java拒绝AWS S3访问,java,amazon-s3,Java,Amazon S3,我试图在Amazon S3上上载文件,但它返回以下错误: com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 26B9B4844CEA580C), S3 Extended Request ID: S0Ds3cvubCSZTAd1ESUG5rMRifGLHRAHBviy

我试图在Amazon S3上上载文件,但它返回以下错误:

com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 26B9B4844CEA580C), S3 Extended Request ID: S0Ds3cvubCSZTAd1ESUG5rMRifGLHRAHBviyUHzDVI5W8FQxtRDMBNSrhVme6K86UryWxqORv30=
我已经在AWS上配置了IAM和bucket,并且使用了AWS提供给我的良好访问/机密。有什么问题吗?谢谢大家!

S3客户端代码:

上载文件代码:

IAM用户:

S3权限:
我也有同样的问题。我成功地禁用了第一个选项

阻止对通过新访问控制列表ACL授予的存储桶和对象的公共访问

如果您想获得有关默认固定ACL的更多信息,下面是一个

如果不想禁用这些策略中的任何一个,可以使用预签名URL


您可以看到示例

是否为Bucket分配了Bucket策略?不,我是AWS的新手,是否应该添加一些内容?不,但这是您应该为Bucket权限屏幕截图显示的内容。如果没有bucket策略,则看起来您没有为access key或secret key设置正确的值,或者您没有在代码中设置正确的bucket名称。管理对象访问的最佳做法是使用S3策略,而不是单个对象ACL,因为您可以一次管理对整个对象集的访问,而不是单独为每个对象配置ACL。此外,阻塞公共访问属性可能会阻止对的调用。
s3client = AmazonS3ClientBuilder
    .standard()
    .withRegion(Regions.CA_CENTRAL_1) // The first region to try your request against
    .withForceGlobalBucketAccessEnabled(true) // If a bucket is in a different region, try again in the correct region
    .withCredentials(AWSStaticCredentialsProvider(BasicAWSCredentials(accessKey, secretKey)))
    .build()
private fun uploadFileTos3bucket(fileName: String, file: File) {
    s3client.putObject(PutObjectRequest(bucketName, fileName, file)
        .withCannedAcl(CannedAccessControlList.PublicRead))
  }