繁体   English   中英

AWS S3 Java 拒绝访问服务:Amazon S3; 状态码:403; 错误代码:拒绝访问;

[英]AWS S3 Java Access Denied Service: Amazon S3; Status Code: 403; Error Code: AccessDenied;

AWS S3 的新手,尝试将 AWS Java SDK 集成到 S3 存储。 授予我的用户的权限如下

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Read Access",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::9123...123:root"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::go_bucket/*"
        }
    ]
}

仍在Java代码中

Received error response: com.amazonaws.services.s3.model.AmazonS3Exception: Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: 6DRTT

Java 代码

        final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion("us-east-1").build();
        try {
            S3Object o = s3.getObject(bucket_name, key_name);
            S3ObjectInputStream s3is = o.getObjectContent();
            FileOutputStream fos = new FileOutputStream(new File(key_name));
            byte[] read_buf = new byte[1024];
            int read_len = 0;
            while ((read_len = s3is.read(read_buf)) > 0) {
                fos.write(read_buf, 0, read_len);
            }
            s3is.close();
            fos.close();
        }

但是,当我使用“Principal”时:“*”它正在工作

AWS SDK 未从 Windows 中的C:\Users\myuser\.aws\credentials读取凭证

截至目前,以下已解决问题

BasicAWSCredentials basicAWSCredentials = new BasicAWSCredentials("aws_access_key_id",
                "aws_secret_access_key");

        final AmazonS3 s3 = AmazonS3ClientBuilder.standard()
                .withCredentials(new AWSStaticCredentialsProvider(basicAWSCredentials))
                .withRegion("us-east-1")
                .build();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM