2015-07-15 15 views
8

tất cả.Lỗi kẹp giấy Rails `AWS :: S3 :: Lỗi :: BadRequest` trên` tồn tại? `Và` xóa`

Tôi đã có tất cả mọi thứ làm việc tốt: hình ảnh được tải lên và có thể được truy cập thông qua Web với kẹp giấy và S3, trừ khi tôi đăng nhập vào rails c và gõ một cái gì đó như thế này:

> User.first.avatar.exists? 
[AWS S3 400 0.093287 0 retries] head_object(:bucket_name=>"mozg-staging-static",:key=>"users/avatars/000/000/001/original/289736.jpg") AWS::S3::Errors::BadRequest AWS::S3::Errors::BadRequest 

=> false 

Điều tương tự cũng là với phương pháp clear. Không tìm thấy giải pháp nào.

tôi có chính sách cho phép này:

{ 
      "Sid": "Stmt1436958517000", 
      "Effect": "Allow", 
      "Action": [ 
       "s3:AbortMultipartUpload", 
       "s3:DeleteObject", 
       "s3:DeleteObjectVersion", 
       "s3:GetBucketAcl", 
       "s3:GetBucketCORS", 
       "s3:GetObject", 
       "s3:GetObjectAcl", 
       "s3:GetObjectVersion", 
       "s3:GetObjectVersionAcl", 
       "s3:ListBucket", 
       "s3:ListBucketMultipartUploads", 
       "s3:ListBucketVersions", 
       "s3:ListMultipartUploadParts", 
       "s3:ListObjects", 
       "s3:PutObject", 
       "s3:PutObjectAcl", 
       "s3:PutObjectVersionAcl", 
       "s3:RestoreObject" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::mozg-staging-static", 
       "arn:aws:s3:::mozg-staging-static/*" 
      ] 
     } 

Cảm ơn bạn đã hỗ trợ.

+0

Phiên bản kẹp giấy nào? Phiên bản aws-sdk nào? Do 'exist?' Và 'clear' làm việc khi chạy một máy chủ mặc dù chúng không hoạt động trong giao diện điều khiển? (tức là thêm dòng bạn đã chạy trong bảng điều khiển vào bộ điều khiển ở đâu đó - nó có ghi lại cùng một lỗi không?) –

Trả lời

0

Đây có thể là một vấn đề với chính sách của bạn, bạn có thể thử:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": [ 
      "s3:ListBucket" 
     ], 
     "Resource": ["arn:aws:s3:::mozg-staging-static"] 
    }, 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "s3:PutObject", 
     "s3:GetObject", 
     "s3:DeleteObject" 
     ], 
     "Resource": ["arn:aws:s3:::mozg-staging-static/*"] 
    } 
    ] 
} 

Hành động ListBucket cần phải được đặt ở mức xô, trong khi PutObject, GetObjectDeleteObject cần phải được thiết lập chống lại các đối tượng trong cái xô. Tôi đã bỏ qua những hành động khác để giữ câu trả lời ngắn gọn. Tất nhiên, bạn sẽ cần phải thêm chúng trở lại nếu chúng được yêu cầu. Bạn có thể tìm danh sách các hành động và liệu chúng có phải là các hành động xô hoặc đối tượng ở đây hay không: http://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html

Các vấn đề liên quan