hamayuzinの日記

ITベンチャーに新卒入社し、エンジニアとかデータサイエンティスト、とかやってます。あの時 あれやってたな的な備忘録にできれば。

【aws/api gateway/lambda/s3】 api gateway ⇔ lambda ⇔ s3 で、動的に画像のresize 全体像編

目次

  1. 全体像編 いまここ
  2. lambdaでのresize編
  3. api gateway 編 
  4. railsから叩いてみる編
  5. S3で404redirect 番外編 いまここ

前略

はい完全にこちらを参考にした。

tech.speee.jp

こちらの方のgithubはこちら GitHub - pataiji/cloudmagick: Serverless dynamic image resizing application

もろもろの事情で、今回は version0.1.0を参考に 下記図の要領で行っていく

全体図

f:id:hamayuzin:20171028212742j:plain

【前提】 * resize対象となる画像は S3にあらかじめ保存してある *resizeはimage magicで行う

【詳細】 * 毎回lambdaを起動させるとお金がかかるので、resizeした画像をS3に、決まったパターンで保存しails等のアプリケーション側から、都度、S3に「resize」した画像がないか確認する。 * S3アップロード時に作成にしなかったのは、最初は「300,500,700」の3パターンだけでも、あとから「やっぱ200追加」とかなると困るので * 無かった場合のみ、api gatewayのエンドポイントを叩いて resizeを実行する。

【resizeのパラメーター】 imagemagicを使うので 下記が使用可能になるイメージ 実際のurl風に書くと * endpoin_url/300/s3_info * endpoin_url/300x300/s3_info * endpoin_url/crop200x200+370+370/s3_info

reizeするための api URLの例は endpoin_url/crop200x200+370+370/bucket_name/image/1/hogehoge.png

【resizeしたあとの保存】 元画像: bucket_name/image/1/hogehoge.png resize画像: bucket_name/image/1/300/hogehoge.png resize画像: bucket_name/image/1/300x300/hogehoge.png

実際のlambdaの中身とかはこちら