2012-08-11 28 views
14

Tôi đang cố gắng hiểu chính xác cách thiết lập nhóm nói chung là riêng tư nhưng cho phép tải lên ẩn danh có hạn chế. Tiêu chí cụ thể là:S3 - Tải lên Chưa xác định - Tiền tố khóa

  • Nhóm chủ yếu là riêng tư và yêu cầu khoá/bí mật của tôi để thêm/xóa/cập nhật/liệt kê tệp.
  • Có một "thư mục" (ví dụ: tiền tố khóa) được gọi là "đến" cho phép người dùng ẩn danh tải nội dung lên nhưng không liệt kê.
  • Nhóm có thời hạn một ngày trên tất cả nội dung. Là tiền thưởng, tôi muốn thư mục "đến" có thời hạn 30 phút mặc dù nếu không thể hết hạn một ngày cho toàn bộ nhóm sẽ thực hiện.
  • Tệp có tiền tố "đến" sẽ bị giới hạn về kích thước cho mỗi đối tượng.
  • Tôi cũng có thể muốn giới hạn đối tượng với tiền tố "đến" chỉ cho một số loại nội dung nhất định.

Câu hỏi tôi có bao gồm:

  1. Nó sẽ được tốt hơn để chỉ cần tạo hai xô. Một cho các tệp đến của tôi và một cho xử lý và lưu trữ cá nhân của riêng tôi?
  2. Mã sẽ trông như thế nào để một tệp được tải lên thư mục đến. Lý tưởng nhất là tôi muốn tránh sự phụ thuộc vào một thư viện S3 và chỉ sử dụng các cuộc gọi HTTP. Điểm thưởng nếu bạn có thể chỉ cho tôi hướng đi đúng về điều này trong Ruby. :)

Thời gian hết hạn có thể được đặt qua Bàn điều khiển quản lý S3 nhưng chỉ giới hạn trong 1 ngày khi hết hạn nhỏ nhất. Tôi có thể đặt một số thập phân trong trường đó? Quyền dường như áp dụng cho toàn bộ nhóm thay vì chỉ là tiền tố. Điều này khiến tôi nghĩ rằng tôi chỉ cần hai cái xô. Nếu tôi tiếp tục với một cái xô, tôi nghĩ rằng tôi cần tạo ra một chính sách IAM và áp dụng nó vào thùng nhưng nó vượt quá kiến ​​thức hạn chế của S3 về S3 và tôi muốn đảm bảo rằng tôi không để lại một lỗ hổng trong các điều khoản cho phép mọi người làm nhiều hơn tôi muốn họ.

Tôi đã tìm thấy rất nhiều tài liệu về việc tải lên ẩn danh lên S3 thông qua bài đăng biểu mẫu HTTP. Tôi có thể thích nghi điều đó vào mã nhưng tôi tự hỏi vì tôi đang ở trong mã ứng dụng (và không phải là một hình thức đăng bài HTTP) là có một cách dễ dàng hơn?

+0

cho 2, bạn có xem xét định cấu hình s3 bằng kẹp giấy của carrierwave không? – rb512

+0

Cảm ơn bạn đã đề xuất. Có, tôi đã sử dụng chúng trước đây mặc dù tôi nghĩ rằng tất cả chúng đều hoạt động trên cơ sở được chứng thực (không ẩn danh). Có thể có một số tiện ích để ẩn danh nhưng tôi thực sự hy vọng vì S3 là giao diện REST và tôi cho phép tải lên ẩn danh một yêu cầu HTTP đơn giản mà không cần bất kỳ thư viện nào của bên thứ ba đều có thể thực hiện thủ thuật. Nhưng cố gắng phân tích tài liệu Amazon đã có nhiều việc vặt hơn tôi hy vọng nó sẽ rất thích nếu ai đó có thể chỉ cho tôi đi đúng hướng. –

+0

Không hoàn toàn hiểu được. Theo ẩn danh, bạn có nghĩa là bạn muốn có thể tải lên tệp mà không cung cấp thông tin đăng nhập s3 của mình không? Tôi không nghĩ điều đó là có thể. – rb512

Trả lời

12

Những gì bạn mô tả có thể được triển khai trong một nhóm. Bạn có thể cho phép truy cập ẩn danh vào thư mục cụ thể thông qua chính sách nhóm, hãy kiểm tra examples hoặc sử dụng AWS Policy Generator. Trong trường hợp của bạn nó có thể trông giống như thế này:

{ 
    "Version": "2008-10-17", 
    "Id": "Policy1346097257207", 
    "Statement": [ 
     { 
      "Sid": "Allow anonymous upload to /incoming", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "*" 
      }, 
      "Action": "s3:PutObject", 
      "Resource": "arn:aws:s3:::[your_bucket]/incoming/*" 
     } 
    ] 
} 

Nó cũng có thể tải lên các tập tin để xô bạn nặc danh sử dụng một hình thức html đơn giản:

<form action="http://[your_bucket].s3.amazonaws.com/" method="post" enctype="multipart/form-data"> 
    <input type="hidden" name="acl" value="public-read" /> 
    Name: <input type="text" name="key" value="incoming/[filename]" /><br/> 
    File: <input type="file" name="file" /> <br /> 
    <input type="submit" name="submit" value="Upload" /> 
</form>​ 

trình duyệt S3 cập nhật dựa được mô tả here chi tiết .

+0

Tôi đã không kiểm tra tất cả điều này để xem nếu nó hoạt động như tôi muốn nhưng tiền thưởng là kết thúc sớm và tôi không muốn bạn không nhận được điểm nếu bạn đã có nó tất cả các quyền. Có vẻ tốt và sẽ sớm thực hiện một số thử nghiệm. Cảm ơn! –

3

Gần đây, tôi đã dành một chút thời gian để tìm hiểu về các lượt tải lên ẩn danh lên S3 và cũng gặp phải câu hỏi này. Tôi đã viết về những giải pháp mà làm việc cho ME trong một số chiều dài tại địa chỉ:

https://gist.github.com/jareware/d7a817a08e9eae51a7ea

Về cơ bản bạn có thể đạt được những gì bạn muốn, ngoại trừ việc yêu cầu chứng thực cho việc quản lý sẽ không hoạt động (hoặc ít nhất là tôi không nhận thức được giải pháp).

Tôi biết đây là câu hỏi cũ hơn nhưng chỉ ghi lại ở đây trong trường hợp nó giúp người khác.

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