AWS 버킷에서 파일을 다운로드하고 임시 폴더에 저장하려고합니다.Rails AWS S3 : 파일 다운로드 및 임시 폴더에 저장
아래의 코드는이 오류를 반환 OpenURI :: HTTPError (301 영구적으로 이동 (잘못된 위치 URI)) :
@filename 문자열로, 확장명을 포함한 버킷 내에서 파일 이름입니다. 여기
S3 = AWS::S3.new(
:access_key_id => ENV["AWS_ACCESS_KEY_ID"],
:secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"]
)
BUCKET = S3.buckets["name_of_bucket"]
File.open(Rails.root.join("tmp",@filename), "wb") do |file|
file.write open(BUCKET.objects[@filename].url_for(:read)).read
end
는 지금까지 발견 한 내용은 다음과 같습니다
puts BUCKET.objects['name_of_bucket']
puts BUCKET.objects['name_of_bucket'].url_for(:read)
첫 번째 버킷 호출이 올바른 개체, 두 번째 반환 반환이 :
https://ekohotstorage.s3-us-west-2.amazonaws.com/location_info
당신이로 이동 반환 된 URL입니다.
The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint.
이 (http://www.sitefinity.com/developer-network/forums/set-up-installation/amazon-s3---must-be-addressed-using-the-specified-endpoint)에는 "S3에 제한 사항이 있습니다. 따라서"US 표준 "이 아닌 버킷을 만들면 버킷 주소에 경로 스타일 구문을 사용할 수 없습니다."
그러나이 버킷을 확인한 결과 def입니다. 지역 미국 표준.
편집 :
나는 바보입니다. AWS 기본값이 미국 표준임을 읽었습니다. 하지만 서쪽은 표준이 아니에요, 동쪽 그래서 나는 그것이 미국 표준을 기본으로하지 않는다고 생각합니다.
S3 = AWS::S3.new(
:access_key_id => ENV["AWS_ACCESS_KEY_ID"],
:secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"],
:region => "us-east-1"
)
와 그 어리 석음을 수정 한 후 지금은이 오류가 발생 해요 :
OpenURI::HTTPError (404 Not Found)
그러나, 아래의 코드에서 생성 된 URL은 사운드 파일로 이어질 않습니다.
BUCKET.objects['name_of_bucket'].url_for(:read)
그래서 문제는
File.open(Rails.root.join("tmp",@filename), "wb") do |file|
file.write open(BUCKET.objects[@filename].url_for(:read)).read
end
생각으로 거짓말을해야 하는가?