vendredi 7 août 2015

Amazon S3: GetObject Request throwing an exception "Access denied" 403

I've just started to work with Amazon S3 in my ASP.NET project. I can upload images, delete them, and show on browser. But when I was trying to get image-object from code-behind by a simple GetObjectRequest to load it to a simple stream, I've got an exeption "Access denied: The remote server returned an error: (403) Forbidden.". And it's very strange 'cause i can delete an object but have no access to get it?

Here is my Get Request code:

using (var client = new AmazonS3Client(Amazon.RegionEndpoint.EUWest1))
{
    GetObjectRequest request = new GetObjectRequest
    {
       BucketName = bucketName,
       Key = keyName
    };
    GetObjectResponse response = client.GetObject(request);
    return response.ResponseStream;
}

Which doesn't work. And this DELETE request works correct

DeleteObjectRequest deleteObjectRequest = new DeleteObjectRequest
{
   BucketName = bucketName,
   Key = keyName
};
client.DeleteObject(deleteObjectRequest);

I think that it could be a problem with my bucket policy, but i don't understand what exactly

{
  "Version": "2008-10-17",
  "Id": "Policy1437483839592",
  "Statement": [
    {
      "Sid": "Stmt1437483828676",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::ama.dyndns.tv/*",
      "Condition": {
        "StringLike": {
          "aws:Referer": [
            "MyIP",
            "MyTeammateIP"
          ]
        }
      }
    },
    {
      "Sid": "Givenotaccessifrefererisnomysites",
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::ama.dyndns.tv/*",
      "Condition": {
        "StringNotLike": {
          "aws:Referer": [
            "MyIP",
            "MyTeammateIP"
          ]
        }
      }
    }
  ]
}




Aucun commentaire:

Enregistrer un commentaire