2012-08-11 13 views
14

Próbuję dokładnie zrozumieć, jak skonfigurować wiadro, które jest na ogół prywatne, ale umożliwia anonimowe przesyłanie z ograniczeniami. Konkretne kryteria to:S3 - Przesyłanie anonimowe - Kluczowy prefiks

  • Wiadro jest w większości prywatne i wymaga mojego klucza/hasła do dodania/usunięcia/aktualizacji/listy plików.
  • Istnieje "katalog" (tj. Prefiks klucza) nazywany "przychodzącym", który umożliwi anonimowym użytkownikom przesyłanie treści do, ale nie do listy.
  • Wiadro ma jeden dzień ważności dla wszystkich treści. Jako bonus chciałbym, aby katalog "przychodzący" miał 30-minutowe wygaśnięcie, chociaż jeśli nie jest to możliwe, to wygaśnie jeden dzień dla całego wiadra.
  • Pliki z prefiksem "przychodzącym" będą miały ograniczony rozmiar na obiekt.
  • Mogę również chcieć ograniczyć obiekty z prefiksem "przychodzącym" tylko do niektórych typów zawartości.

pytania mam to:

  1. byłoby lepiej po prostu utworzyć dwa wiadra. Jeden dla moich plików przychodzących i jeden dla mojego osobistego przetwarzania i przechowywania?
  2. Jak wyglądałby ten kod, aby plik mógł zostać załadowany do katalogu przychodzącego. Idealnie chciałbym uniknąć zależności od biblioteki S3 i po prostu używać wywołań HTTP. Dodatkowe punkty, jeśli możesz wskazać mi właściwy kierunek w Ruby. :)

Wydłużenie wydaje się możliwe do ustawienia za pośrednictwem konsoli zarządzania S3, ale jest ograniczone do 1 dnia jako najmniejsza data wygaśnięcia. Czy mogę umieścić w tym polu kropkę dziesiętną? Uprawnienia wydają się odnosić do całego zasobnika zamiast tylko przedrostka. To sprawia, że ​​myślę, że potrzebuję tylko dwóch wiader. Jeśli trzymam z jednym kubełkiem, to myślę, że muszę stworzyć zasadę IAM i zastosować ją do tego zasobu, ale jest to poza moją ograniczoną znajomością S3 i chcę się upewnić, że nie zostawiam dziury w uprawnieniach, które pozwalają ludziom robić bardziej niż tego chcę.

Znalazłem wiele dokumentacji na temat anonimowego przesyłania do S3 za pośrednictwem formularza formularza HTTP. Mogę to zaadaptować do kodu, ale zastanawiam się, skoro jestem w kodzie aplikacji (a nie w formularzu HTTP) jest łatwiejszy sposób?

+0

dla 2, czy rozważałeś konfigurację s3 z spinaczem z przewoźnika? – rb512

+0

Dzięki za sugestię. Tak, użyłem ich wcześniej, chociaż myślę, że generalnie wszystkie działają na podstawie uwierzytelnionej (nie anonimowej). Może być kilka dodatków do anonimizacji, ale mam nadzieję, że od kiedy S3 jest interfejsem REST i zezwalam na anonimowe przesyłanie, że proste żądanie HTTP bez biblioteki trzeciej strony może załatwić sprawę. Ale próba parsowania dokumentacji Amazona była bardziej uciążliwa, niż miałam nadzieję, że tak będzie, jeśli ktoś mógłby wskazać mi właściwy kierunek. –

+0

Nie całkiem to rozumiem. Czy oznacza to, że chcesz anonimowo przesyłać pliki bez podawania swoich danych uwierzytelniających s3? Nie sądzę, że to możliwe. – rb512

Odpowiedz

12

To, co opisujesz, można zaimplementować w ramach jednego segmentu. Możesz zezwolić anonimowy dostęp do określonego folderu za pomocą polityki zasobnika, sprawdź examples lub użyj AWS Policy Generator. W twoim przypadku może to wyglądać mniej więcej tak:

{ 
    "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/*" 
     } 
    ] 
} 

Możliwe jest również przesyłanie plików do wiadra anonimowo za pomocą prostego formularza HTML:

<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>​ 

S3 Przeglądarka przesłane oparte są opisane here w szczegółach .

+0

Nie sprawdziłem tego wszystkiego, aby sprawdzić, czy działa tak, jak chcę, ale nagroda wkrótce się kończy i nie chciałem, abyś nie dostał punktów, jeśli wszystko dobrze. Wygląda dobrze i wkrótce zrobi kilka testów. Dzięki! –

3

Ostatnio spędziłem trochę czasu na wymyślaniu anonimowych filmów na S3 i natknąłem się na to pytanie. Pisałem o rozwiązanie, które pracował dla mnie w pewnym długości w:

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

Zasadniczo można osiągnąć to, co chcesz, chyba że uwierzytelnionych wniosków do zarządzania nie będą działać (lub przynajmniej nie jestem świadomy rozwiązania).

Wiem, że jest to starsze pytanie, ale po prostu dokumentowanie go na wypadek, gdyby pomógł komuś innemu.

Powiązane problemy