2016-10-19 5 views
0

Ruby 용 aws-sdk v2를 사용하고 있으며 객체에서 사용할 수있는 메소드를 찾았습니다. 그래서 같은 버킷을 만들어 :aws-sdk for Ruby v2 : S3 버킷에 PUT 객체를 넣은 후에 성공 여부를 확인하십시오.

client = Aws::S3::Client.new(region: 'us-west-2') 
s3 = Aws::S3::Resource.new(client: client) 
S3_BUCKET = s3.bucket(ENV['AWS_BUCKET']) 

내 버킷에 객체를 기록 할 수있는 유일한 방법은 put. 그러나, 나는이 방법으로 사용할 수있는 'success_action_status을'보이지 않는 것으로 나타났습니다. 내 응용 프로그램을 Elastic Beanstalk에 배포했습니다. 로컬에서는 필자가이 버킷에 쓸 수는 있지만, EB 애플리케이션에 쓰려고 할 때 작동하지 않고 무슨 일이 벌어지는 지 알아 내려고 노력하고 있습니다. 내 PUT 요청이 잘못된 곳을 찾는 데 도움이되는 정보가 도움이 될 것입니다. 이미지 파일을 보내고 put을 것 같은 http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Object.html#put-instance_method

답변

0

그것은하지 않는 것 : 여기

def create 
    username = params[:user][:user_alias] 
    key = "uploads/#{username}" 
    obj = S3_BUCKET.object(key) 

    obj.put({ 
     acl: 'public-read', 
     body: params[:user][:image_uri], 
    }) 

    @user = User.new(user_params) 
    if @user.save 
     render json: @user, status: :created, location: @user 
    else 
     render json: @user.errors, status: :unprocessable_entity 
    end 
    end 

내가 PUT 방법에 대해 말하는 겁니다 문서가있다 :

여기 내 방법은 지금의 모습입니다 , 단지 uri.

obj.put({ 
    acl: 'public-read', 
    body: File.open(params[:user][:image_uri], ?r), 
}) 

그런 다음 당신이 성공을 확인할 수 있습니다

body: source_file, # file/IO object, or string data 

당신은 실제로 이미지를 업로드 읽거나 위해 이미지 파일을 열 수있을 것이다 : 워드 프로세서는 put 방법의 body 옵션에 대해 이런 말을 상태가 exists? 인 경우

+0

감사합니다. 이미지는 bytea 데이터 유형으로 설정됩니다. 업로드하려면 업로드/열기가 필요합니까? – swellactually

+0

또한, 나는 왜 뭔가가 로컬로 S3에 게시되지만 배포 된 응용 프로그램에는 아무 것도 나타나지 않는 것에 대해 혼란스러워합니다. 지금은 문자열을 전달하여 테스트 중이며 로컬에 게시 할 때 S3 버킷에 문자열이 표시되지만 eb에 똑같은 게시물을 수행하면 아무 것도 나타나지 않습니다. 배포 된 버전에서 작동하지 않는 이유는 무엇입니까? – swellactually

+0

서버에 AWS credits 또는 S3에 쓰도록하는 정책이 있습니까? – DiegoSalazar

관련 문제