AWS Lambda と API Gatewayを使って、URL短縮サービスをWEBサーバなしで作った

twitterにURLを貼るときによく使う、https://bitly.com/https://goo.gl/のようなURL短縮サービスを独自ドメインで使いたくて、既存サービスを使ったり、OSSを使って実現できないか検証した結果、実現出来そうだが、何かと手間がかかりそうだった。

ひとまず、自作する方向でインフラやアプリケーションの設計を始めたが、単純な機能だし、誰でも簡単に、例えばボタンひとつでURL短縮サービスが立ち上げられるような作りにして公開することにした。

できたのがこちら、「qutto(長いURLをキュッと(短く)する)」

デモページ(https://toyamarinyon.github.io/qutto)

URLを入力すると、7文字の文字列を返す。7文字の文字列を入力すると、もとのURLを返す。(短縮URLからもとのURLに戻ったことを確認するデモページはない)

動作を確認するためにデモページを作っているが、実態はAPI Gatewayをインタフェースとして、AWS Lambdaが短縮処理を実行し、DynamoDBがデータを永続化している。

これまでもS3を使って静的なサイトのホスティングしたり、SMSやSNSを使ってメール配信、プッシュ通知を実行することはできたが、任意の処理を実行するにはどうしてもEC2が必要だった。この常識をAWS Lambdaが覆した。AWS Lambdaについては、別途書こうと思うけれど、今回みたいなシンプル機能を簡単に稼働させられるので、これから重宝すると思う。

AWS Lambdaで実行している関数は、javascriptで書いたけれど、ライブラリを除けば以下のように100行に収まった。

javascriptは、最近話題のECMAScript6を初めて使ってみた。といっても使ったのは、アロー関数とプロミスくらい。それでもアロー関数とプロミスの相性が良くて、処理が透明になったと思う。

今年はこれで自作プロダクトが3つになった。(Gardener,Qri,Qutto)年内にあとひとつは形にしたいな。