【问题标题】:Java AWS Amazon s3 GetObjectRequest (InvalidAccessKeyId)Java AWS Amazon s3 GetObjectRequest (InvalidAccessKeyId)
【发布时间】:2018-08-01 19:24:42
【问题描述】:

作为问题,我正在尝试获取 Amazon S3 存储库中的文件。我收到了来自亚马逊“InvalidAccessKeyId”的消息

您提供的 AWS 访问密钥 ID 不存在于我们的记录中。 (服务:Amazon S3;状态代码:403;错误代码:InvalidAccessKeyId; 请求编号:62781C914754D8ED; S3 扩展请求 ID: +fhv2t247XoEK99IZ6/f8lcWUz7IWlGybGfb2HRNrWpCG+EbeSupSREmcseyBcJQ3VybXizwVTg=)

评论说服务器没有给我listBucket权限,所以我把路径作为backet(我也试过把bucket和path放在key String bucketName="my_bucket"; 字符串键=“文件夹/文件夹1/example.xml”; ):

String accesKey= "my_access_key";
String secretKey= "my_secret_key";
String bucketName= "my_bucket/folder/folder1/";
String key= "example.xml";

BasicAWSCredentials creds = new BasicAWSCredentials(accesKey, secretKey); 
AmazonS3 s3 = AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(creds)).withRegion(Regions.EU_WEST_1).build();
s3.getObject(new GetObjectRequest(bucketName, key)

【问题讨论】:

  • 错误似乎很清楚。 “服务器没有给我 listBucket 权限”是什么意思?

标签: java amazon-web-services amazon-s3


【解决方案1】:

好像有多个问题
问题一:

bucketName : only a bucket name
keyName: will have dir structure/filename

问题 2:
secret/access key 问题 Refer how api looks for credentials

【讨论】:

    【解决方案2】:

    存储桶名称应该只是 my_bucket。关键是文件夹/folder1/example.xml

    也可以试试,

    AmazonS3Client aws3 = new AmazonS3Client(accesKey, secretKey, 
    RegionEndpoint.your_region_endpoint);
    
    string content = null;
            var response = aws3.GetObjectAsync(new GetObjectRequest
            {
                BucketName = bucketName,
                Key = key,
            }).Result;
            using (var s = new StreamReader(response.ResponseStream))
            {
                content = s.ReadToEnd();
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-26
      • 2020-06-17
      • 2015-12-19
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 2017-01-01
      • 1970-01-01
      相关资源
      最近更新 更多