2010-08-04 27 views
5

Tôi có một cấu trúc trên amazon như thế này -Làm thế nào để xác định quyền ở Amazon s3

(bucket name) MyImages 
    --- (key) general 
     ---- 1.jpg 
     ---- 2.jpg 

Tôi đã tạo ra chìa khóa (nói chung) bằng cách sử dụng công cụ S3 Firefox Organizer và thiết lập quyền đọc cho mọi người. Bây giờ, bởi một chương trình java khi tôi tải lên các hình ảnh bên trong phím này, tôi muốn thiết lập sự cho phép của mỗi đối tượng như là chìa khóa có. Nhưng nó không xảy ra và tôi phải viết một số dòng mã bổ sung để thiết lập quyền truy cập của từng đối tượng.

AccessControlList acl = s3.getBucketAcl("MyImages"); 
// give everyone read access 
acl.grantPermission(GroupGrantee.AllUsers, Permission.Read); 
s3.setObjectAcl("MyImages", "general/1.jpg", acl); 

Có cách nào để loại bỏ mã trên không. Tại sao các đối tượng không nhận được sự cho phép như là chìa khóa hoặc xô?

Trả lời

8

Mã sau hoạt động cho tôi. Thay thế file_to_save bằng đối tượng tập tin bạn đang ghi vào S3.

PutObjectRequest por = new PutObjectRequest("MyImages", "general/1.jpg", file_to_save); 

o.setCannedAcl(CannedAccessControlList.PublicRead); 
+0

Cảm ơn, nó làm việc cho tôi! –

2

Bạn cũng có thể thử sử dụng Chính sách nhóm để đặt tất cả các tệp trong một nhóm công khai.

Quyền có thể được áp dụng cho một tệp hiện có cũng như cho tất cả các tệp mới.

Dưới đây là một ví dụ về chính sách Bucket mà làm cho tất cả các tập tin trong một xô công bố công khai:

{ 
    "Version": "2008-10-17", 
    "Statement": [ 
    { 
     "Sid": "AllowPublicRead", 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": "*" 
     }, 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::your-bucket-name/*" 
    } 
    ] 
} 

Dưới đây là làm thế nào để áp dụng Bucket Chính sách sử dụng S3 Trình duyệt miễn phí:
http://s3browser.com/working-with-amazon-s3-bucket-policies.php

0

nếu bạn muốn để truy cập vào nhóm của bạn bằng phần mềm "trình duyệt" như trình duyệt s3browser, s3fox hoặc s3 cho chrome, bạn cần phải thêm quyền vào thư mục gốc của s3 của bạn như thế này.

{ 
      "Effect": "Allow", 
      "Action": "s3:ListAllMyBuckets", 
      "Resource": "arn:aws:s3:::*" 
    } 

cho

{ 
    "Version": "2008-10-17", 
    "Statement": [ 
    {  
     "Sid": "AllowPublicRead", 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": "*" 
     }, 
     "Action": "s3:GetObject", 
     "Resource": "arn:aws:s3:::your-bucket-name/*" 
    }, 
    { 
     "Effect": "Allow", 
     "Action": "s3:ListAllMyBuckets", 
     "Resource": "arn:aws:s3:::*" 
    } 
    ] 
} 
Các vấn đề liên quan