[RUBY-ON-RAILS] 어떻게 S3에 데이터를 저장하고 레일 API / 아이폰 OS 클라이언트와의 보안 방법으로 사용자 액세스를 허용하려면?
RUBY-ON-RAILS어떻게 S3에 데이터를 저장하고 레일 API / 아이폰 OS 클라이언트와의 보안 방법으로 사용자 액세스를 허용하려면?
나는 레일 및 API를 작성하는 새로운입니다. 나는 S3 스토리지 솔루션에 약간의 도움이 필요합니다. 여기에 내 문제입니다.
나는 사용자가 iOS의 페이스 북 API로 로그인 아이폰 OS 응용 프로그램을위한 API를 쓰고 있어요. 서버는 아이폰 OS 사용자와 문제를 임시 세션 토큰에 대한 토큰 페이스 북 문제에 대해 사용자의 유효성을 검사합니다. 이 시점에서 사용자는 S3에 저장된 다운로드 콘텐츠를 필요로한다. 이 콘텐츠는 사용자와 그의 친구들의 부분 집합에 속한다. 이 사용자는 사람들이 같은 무리에 액세스 할 수 있습니다 S3에 더 많은 콘텐츠를 추가 할 수 있습니다. 나는 페이스 북 그룹에 파일을 첨부와 비슷한 것 같다 ...
사용자가 ... S3와 상호 작용하는 서버에 두거나 임시 S3 토큰을 발행하기 위해 서버를 얻을 수 (하지 않도록 여기 가능성의) 사용자가 S3에 직접 컨텐츠 URL을 최대 칠 수 있습니다 2 가지 방법이 있습니다. 나는 이야기하고 질문을 찾아 접근하지만, 정말 (2 년 전) 일자 : 아이폰 응용 프로그램 및 S3에서 업로드 사진에 대한 건축과 디자인 질문
질문 : 그럼
여러 질문에 대한 사과와 나는 문제에 어떤 통찰력을 주셔서 감사합니다. 감사 :)
해결법
-
==============================
1.AWS-SDK 보석을 사용하여 url_for 호출하여 어떤 S3 객체에 대한 임시 서명 URL을 얻을 수 있습니다 :
AWS-SDK 보석을 사용하여 url_for 호출하여 어떤 S3 객체에 대한 임시 서명 URL을 얻을 수 있습니다 :
s3 = AWS::S3.new( :access_key_id => 1234, :secret_access_key => abcd ) object = s3.buckets['bucket'].objects['path/to/object'] object.url_for(:get, { :expires => 20.minutes.from_now, :secure => true }).to_s
이 S3에서 해당 개체에 대해 당신에게 서명, 임시로 사용의 URL을 제공 할 것입니다. 그것은 (이 예에서는) 경기 시작 후 20 분 만료, 그것은 하나의 개체 만 좋다.
당신이 객체는 클라이언트의 요구가 많이있는 경우에, 당신은 서명 URL을 많이 발행해야합니다.
참고이 각 개체를 다운로드하기 위해 서버 요구 사항을 의미하지 않습니다, 그것은 단지 S3에 액세스 특정 객체 및 권한 부여 특정 클라이언트를 인증 할 필요가있다.
아마존에서 API 문서 : https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html#RESTAuthenticationQueryStringAuth
-
==============================
2.위의 답변은 새로운 AWS-SDK-자원 버전 2보다는 기존 AWS-SDK-V1 보석을 사용합니다.
위의 답변은 새로운 AWS-SDK-자원 버전 2보다는 기존 AWS-SDK-V1 보석을 사용합니다.
새로운 방법은 :
aws_resource = Aws::S3::Resource::new aws_resource.bucket('your_bucket').object('your_object_key').presigned_url(:get, expires_in: 1*20.minutes)
어디 your_object_key는 파일의 경로입니다. 당신이 최대를 볼 필요가있는 경우, 당신은 같은 것을 사용합니다 :
s3 = Aws::S3::Client::new keys = [] s3.list_objects(bucket: 'your_bucket', prefix: 'your_path').contents.each { |e| keys << e.key }
이 정보는 최대 파고 놀랄만큼 어려웠다, 나는 거의 그냥 포기하고 오래된 보석을 사용했다.
http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Object.html#presigned_url-instance_method
from https://stackoverflow.com/questions/10811017/how-to-store-data-in-s3-and-allow-user-access-in-a-secure-way-with-rails-api-i by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 저장하지 않고 update_attributes 레일? (0) | 2020.02.21 |
---|---|
[RUBY-ON-RAILS] 루트 디렉토리 경로를 레일? (0) | 2020.02.21 |
[RUBY-ON-RAILS] 3.1 및 이미지 자산 레일 (0) | 2020.02.21 |
[RUBY-ON-RAILS] STI는 레일에 서브 클래스에 대한 모범 사례 경로를 처리하는 (0) | 2020.02.21 |
[RUBY-ON-RAILS] 하나의 마이그레이션 파일을 실행 (0) | 2020.02.21 |