私は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リクエストが間違っている場所を特定するのに役立つ情報があれば助かります。ここで
は、私の方法は、今のようになります:
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メソッドのために言及していますドキュメントです:http://docs.aws.amazon.com/sdkforruby/api/Aws/S3/Object.html#put-instance_method
ありがとう、ありがとう!イメージはbyteaデータ型として設定されます。アップロードするにはまだ読み込み/開く必要がありますか? – swellactually
また、なぜ何かがローカルにS3に投稿されるのは混乱していますが、配備されたアプリには何も表示されません。今私は文字列を渡してテストしていますが、ローカルに投稿するとS3バケットに文字列が表示されますが、ebで全く同じ投稿を実行すると何も表示されません。デプロイされたバージョンではなぜ動作しませんか? – swellactually
サーバにAWSの信用状またはS3に書き込めるポリシーがありますか? – DiegoSalazar