ほぼ無料に近い構成で自分用URL短縮サービスを作ってみた
忘れないうちに大変だったところを記録しておく
URL短縮サービス、つくってみた
URL短縮サービスというと、今はもうサービス終了してしまったらしい(訂正:サービス終了したのはGoogleの短縮サービスでbitlyはまだ残ってました)が、bit.lyなんかが有名だったと思う。
ことTwitterの場合、今ではURL短縮の恩恵というのはほぼない。というのもどんなに長いURLでも消費字数が一定となったからだ。
しかし、Twitterのように《よしなに》やってくれない媒体のうえでURLをやりとりする場合は、やはり長ったらしいままだと扱いが面倒なこともある。
たとえば、チャットで長いURLを打つと改行の処置に困ったりする。まさに、欲しいときはそこそこ欲しいレベルの存在だったりする。
とはいえ、冒頭で書いたとおり、URL短縮サービス自体が終了してしまうとそのリンクが死んでしまったり面倒なので、自分の責任でコントロールできるものを作ろうと考えた。
あと、より根源的な理由として「題材はどうあれ自分で開発したものがある」を実現したいというのがある。
先に実物をば
作ったのはこのサイトだ。
テスト製作として、Webからの一般アクセスだとリンクの有効期限は1日となっている。
Twitterアカウントでログインすると無期限のリンクが作成できるようになる。 いずれ全公開するつもりなのでAPIを直で叩けばログインしなくても無期限のリンクが作れたりはする。
GitHubのコードを読めば、どんなパラメータを指定すればいいかは解読できるので、ここではあえて説明はし ない。
一応、ログインしなくてもログインしている状態になるデモページも作ってはあったりするが、知人への紹介用に留めようと思う。
維持費はできるだけ抑える
自分でサービスを作る場合の鉄則は、とにかく維持費を無料にすることである、というのを以前どこかで読んだことがある。
探してみたらこの記事だった。
でもサイト運営は開設してからが勝負だ。数ヶ月経ってもあまり反響が無いとする。 そこで「いやいやもうちょっと後半年ぐらいはメンテして」と考えた際に「月に数千円✕数ヶ月分」とすると高額になってくる。 **万円か、、、だったらやめよかな、となりがち。
実際そうだと思うので(とくに短縮URLなど寿命が命だ)、できるだけ無料に寄せた構成にした。
ドメイン関連以外はほぼゼロ円に近い運用ができる。
ドメインにかかる金額だが、独自ドメインの維持費が年間で約3000円ほどと、Route 53のHostedZoneが毎月0.5ドルだけかかる。
すでに持っているドメインのサブドメインを切り出すこともでき、その場合はドメイン関連のコストもなくすことができる。しかし、URL短縮の矜持として極短のドメインは必須事項だと考えて甘んじて受け入れることにした。
なーに、ドメインは他でも使えるのでURL短縮だけに消費されるわけではないのだよ!問題はないさ!(なお、他の使い道は思い付いていない)
実際の構成
- フロントエンド:Azure Static Web Apps
- バックエンドAPI:Azure Functions(Azure SWAマネージドなFunctions)
- ストレージ:Amazon S3
- CDN:Amazon CloudFront
- DNS:Amazon Route 53
- 証明書管理:AWS Certification Manager
構成としては、静的サイト+バックエンドAPIというよくあるやつ。
Azure Blob StorageではなくS3を使う理由
バックエンドAPIは、ランダムな短縮エイリアスを生成し、そのエイリアス名のblobをS3へ保存する。S3はblobオブジェクト単位のリダイレクト機能を持っている