前提・実現したいこと
lambdaが呼び出されたら、受け取った名前の画像をs3から取得して、リサイズし、名前を変更してs3にアップロードしようとしています。
lambdaの実装はruby2.5で行なっています。
lambdaはAPI Gatewayがあるのでそれを通じて呼び出されます。
画像の取得、リサイズは以下のリンクを参考にmini_magickでできているのですが、そのデータをS3にアップロードする方法がわかっていない状況です。
画像の取得にはs3clientのget_objectメソッドを使っているのでput_objectメソッドなどを使えば良いのでしょうか。
よろしくお願いいたします。
参考:
https://qiita.com/kiitan/items/4bdc530c66d6cdfbd294
発生している問題・エラーメッセージ
mini_magickでリサイズしたデータををS3に画像としてアップロードする方法がわかっていない状況です。
ソースコードのimage.resize("#{width}x#{height}")でリサイズしたあとにimageをどうやってs3にアップロードすれば良いでしょうか。
該当のソースコード
def resize_image(event:, context:) s3_client = Aws::S3::Client.new( :region => ENV['REGION'], :access_key_id => ENV['ACCESS_KEY'], :secret_access_key => ENV['SECRET_ACCESS_KEY'] ) image_file = s3_client.get_object(:bucket => ENV['BUKET'], :key => event['pathParameters']['filename']).body.read image = MiniMagick::Image.read(image_file) image.format('jpeg') unless image.details['Mime type'] === "image/jpeg" width = 200 height = (width/image.width.to_f * image.height).round.to_i image.resize("#{width}x#{height}") { statusCode: 200, headers: { 'Content-Type': 'image/jpeg' }, body: Base64.encode64(image.to_blob), isBase64Encoded: true, } end
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。