2012-08-11 3 views
14

일반적으로 개인용이지만 제한 사항이있는 익명 업로드를 허용하는 버킷을 설치하는 방법을 정확히 이해하려고합니다. 구체적인 기준은 다음과 같습니다.S3 - 익명 업로드 - 키 접두어

  • 버킷은 대부분 비공개이므로 파일을 추가/제거/업데이트/나열하려면 키/비밀이 필요합니다.
  • "수신"이라고하는 "디렉토리"(즉, 키 접두어)가 있습니다. 익명 사용자가 콘텐츠를 업로드 할 수는 있지만 목록을 업로드 할 수는 없습니다.
  • 버킷의 모든 콘텐츠에 대해 만료일이 있습니다. 보너스로 "들어오는"디렉토리에 30 분의 만료 기간을 갖길 원합니다.하지만 가능하지 않은 경우 전체 버킷에 대한 만료일이 적용됩니다.
  • "수신"접두사가있는 파일의 크기는 개체 당 제한 될 수 있습니다.
  • "받는"접두사가있는 개체를 특정 콘텐츠 형식으로 제한 할 수도 있습니다. 내가 가진

질문은 다음과 같습니다

  1. 는 단순히 두 개의 버킷을 만들 좋을 것이다. 하나는 내 수신 파일 용이고 다른 하나는 개인 처리 및 저장 용입니까?
  2. 들어오는 디렉토리에 파일을 업로드하는 코드는 어떻게 생겼을까요? 이상적으로 나는 S3 라이브러리에 대한 의존성을 피하고 단지 HTTP 호출을 사용하고 싶습니다. 보너스 포인트는 루비에서 나에게 올바른 방향을 보여줄 수 있다면 요. :)

만료 기간은 S3 관리 콘솔을 통해 설정 가능하지만 최소 만료 날짜는 1 일로 제한됩니다. 그 필드에 10 진수를 넣을 수 있습니까? 퍼미션은 접두어 대신 전체 버킷에 적용되는 것처럼 보입니다. 이것은 내가 단지 2 개의 버킷이 필요하다고 생각하게하고있다. 하나의 버킷을 가지고 있다면 버팀목에 IAM 정책을 적용해야하지만 S3에 대한 나의 제한된 지식을 넘어서고 사람들이 할 수있는 권한에 구멍을 남기지 않기를 원합니다 내가 원하는 것 이상으로.

나는 HTTP 양식 게시를 통해 S3에 익명 업로드를하는 것에 관한 많은 문서를 발견했습니다. 코드에 적용 할 수는 있지만 응용 프로그램 코드 (HTTP 양식 포스트가 아님)가 더 쉬운 방법이기 때문에 궁금합니다.

+0

for 2, carrierwave 클립으로 s3 구성을 고려해 보셨습니까? – rb512

+0

제안 해 주셔서 감사합니다. 네, 일반적으로 모두가 인증 된 기준 (익명이 아닌)으로 운영된다고 생각하기는하지만 이전에 사용했습니다. 익명으로 할 수있는 애드온이있을 수 있지만 S3가 REST 인터페이스이기 때문에 정말 기대하고 있습니다. 제 3 자 라이브러리가없는 단순한 HTTP 요청이 트릭을 수행 할 수있는 익명 업로드를 허용하고 있습니다. 그러나 누군가가 올바른 방향으로 나를 가리킬 수 있다면 내가 좋아할 것이라고 기대했던 것보다 아마존 문서를 분석하려고 노력하는 것이 많은 일이었습니다. –

+0

잘 모르겠어요. 익명으로는 s3 자격 증명을 제공하지 않고 파일을 업로드 할 수 있기를 원하십니까? 나는 그것이 가능하다고 생각하지 않는다. – rb512

답변

12

설명하는 내용을 하나의 버킷에서 구현할 수 있습니다. 버킷 정책을 통해 특정 폴더에 대한 익명 액세스를 허용하거나 examples을 확인하거나 AWS Policy Generator을 사용하십시오. 귀하의 경우는 다음과 같이 보일 수 있습니다 :

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

을 익명으로 간단한 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 브라우저 기반 업로드 상세히 ​​here 설명을 .

+0

나는 이것을 모두 확인하지 않고 내가 원하는 것처럼 작동하는지 알아 보았지만, 현상금은 곧 끝나고, 괜찮 으면 점수를 얻지 않기를 바란다. 좋은 모습을 보였으 며 곧 테스트를 수행 할 것입니다. 감사! –

3

최근에 익명으로 업로드 한 내용을 S3에 대해 알아내는 데 약간의 시간을 보냈습니다.이 질문도 마찬가지입니다. 기본적으로 당신이 또는 적어도 아니에요 (당신이 그 인증 요청을 제외하고 관리를 위해 작동하지 않습니다 원하는 것을 달성 할 수

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

: 나는에 약간의 길이 나를 위해 일한 솔루션에 대해 쓴 해결책을 알고 있음).

이 질문은 오래된 질문이지만 다른 사람에게 도움이 될 수 있도록 여기에 문서화되어 있습니다.