Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.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 SDK在检查不存在的S3密钥时抛出403,但在检查现有密钥时返回true_Java_Amazon Web Services_Amazon S3_Aws Sdk - Fatal编程技术网

Java AWS SDK在检查不存在的S3密钥时抛出403,但在检查现有密钥时返回true

Java AWS SDK在检查不存在的S3密钥时抛出403,但在检查现有密钥时返回true,java,amazon-web-services,amazon-s3,aws-sdk,Java,Amazon Web Services,Amazon S3,Aws Sdk,我使用AWS SDK for Java版本1.11.66中的AmazonS3Client检查S3中是否存在密钥: s3client.doesObjectExist(bucketName, key); 如果我给它一个现有的键名,它会正确地返回true。对于不存在的密钥,我总是得到一个AmazonS3Exception通知我从API返回403 我必须更改什么才能使其返回false? 服务的IAM策略如下所示: { "Version": "2012-10-17", "Statement":

我使用AWS SDK for Java版本1.11.66中的
AmazonS3Client
检查S3中是否存在密钥:

s3client.doesObjectExist(bucketName, key);
如果我给它一个现有的键名,它会正确地返回
true
。对于不存在的密钥,我总是得到一个
AmazonS3Exception
通知我从API返回403

我必须更改什么才能使其返回
false

服务的IAM策略如下所示:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:*"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::MY_BUCKET/*"
    }
  ]
}

似乎您已将权限授予对象,而不是存储桶。您的策略应该允许列出存储桶。尝试在策略中指定bucket名称:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:*"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::MY_BUCKET"
    }
  ]
}

注意
MY_BUCKET
而不是
MY_BUCKET/*

我想这可以帮助你:具体地说,
“操作”:[“s3:ListBucket”]
。我实际上需要这两个,我的_BUCKET,我的_BUCKET/*