2012-06-19 3 views
3

S3를 사용하여 Rails 모델에 연결된 이미지를 호스팅하기 시작했습니다. 이미지는 사용자가 업로드하지 않으므로 aws_sdk gem을 사용하여 이미지를 S3 버킷에 저장합니다.웹 응용 프로그램의 공용 이미지 호스팅을위한 S3 권한

지금까지 이미지 저장에 성공했지만 그 허가에 대해 혼란 스럽습니다. 어쩌면 내가 틀렸지 만 S3 권한에 대해 말하는 대부분의 문서가 구식 인 것 같아서 그들이 말하는 내용을 찾을 수 없습니다.

내가하고 싶은 것은 꽤 기본입니다. 이미지를 호스팅하고 이미지 자체를 공개하기 때문에 누구나 볼 수 있습니다. 그러나 아무도 내 양동이에 액세스하지 않고 그 곳에서 호스팅되는 모든 것을 볼 수 있기를 바랍니다. 기본적으로 S3의 이미지를 호스팅하는 일반 웹 앱입니다. 어떻게 그리고 어디에서 권한 설정을 변경할 수 있습니까? 현재 액세스 권한은 오직 나에게만 부여되며 브라우저에 URL을 입력하면 이미지를 볼 수 없습니다.

답변

2

내 자신의 질문에 대답 : 저는 여기에 github에서 잡고 수정 된 단편이다 그것 "공개"모든 것이 작동하는 기대로 뭔가를 설정만큼 간단하지 보인다. 기본적으로 정책을 작성하고 양동이를 공용으로 볼 수있게하려면 해당 양동이에 정책을 적용해야합니다.

다음은 정책 구축 할 수있는 페이지의 : 대답에 대한 http://awspolicygen.s3.amazonaws.com/policygen.html

+0

나는 또한 동일한 문제에 직면하고있다. http://stackoverflow.com/questions/19496026/permissions-of-files-on-s3 정책을 설정하는 방법에 대해 자세히 설명해 주실 수 있습니까? –

1

S3Objects 쓰기 방법에 더 구체적인 문서를 살펴보십시오. Class: AWS::S3::S3Object을 사용하면 업로드 된 파일에 대한 여러 옵션을 설정할 수 있습니다.

S3 버킷에 업로드 할 때 기본값은 :private이며 공개 액세스 권한이 부여되지 않기 때문에 적절한 :acl 권한을 설정했습니다.

# get an instance of the S3 interface using the default configuration 
s3 = AWS::S3.new 

# create a bucket 
b = s3.buckets.create('example') 

# upload a file 
basename = File.basename('image.png') 
o = b.objects[basename] 
o.write(:file => file_name, :acl => :public_read) 

# grab public url 
image_public_url = o.public_url 

... 
+0

감사합니다,하지만 내 질문은 권한에 대해이었다. 나는 이미 모든 코드를 가지고 있지만 권한 문제로 인해 실행되지 않고 있습니다. – Vlad

관련 문제