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を初めて使ってみた。といっても使ったのは、アロー関数とプロミスくらい。それでもアロー関数とプロミスの相性が良くて、処理が透明になったと思う。