【要約】【Lambda】NFC 名刺のアクセスカウンターを Lambda Function URL + DynamoDB で作る [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
筆者が、イベントで配布するNFC名刺のアクセス数を把握したいと考えた。しかし、Google Analytics等の外部サービスを導入するほどではない小規模な用途に対し、最適な計測手法を見出す必要があった。
- ・外部サービス導入に伴う設定や学習コストの回避。
- ・名刺に記載するURLにクエリパラメータを含めず、見た目を美しく保つ必要性。
- ・ブラウザのページ離脱時でも、ユーザー体験を損なわずに確実にデータを送信する仕組みの確保。
- ・低コストかつ、管理の手間が最小限である構成の実現。
// Approach
筆者が、管理コストと運用コストを最小化するために、AWSのサーバーレス機能を組み合わせた軽量な構成を採用した。
- ・Lambda Function URLの採用:API Gatewayを介さず、単一エンドポイントをシンプルに構築。
- ・DynamoDBのUpdateItem (ADD) 利用:アイテムの自動作成とアトミックなインクリメントを両立。
- ・CloudFront Functionsによるパス書き換え:
/nfc等のクリーンなURLを実現。 - ・
navigator.sendBeacon()の利用:ブラウザのバックグラウンド送信により、計測によるUX低下を防止。 - ・AWS CDKによるインフラのコード化:環境構築の再現性と管理性を向上。
// Result
筆者が、この構成を実装した結果、実質ほぼ0円という極めて低コストな運用を実現した。
- ・LambdaとCloudFront Functionsは無料枠内で運用可能。
- ・DynamoDBも数千リクエスト程度なら月額1円未満。
- ・集計用ダッシュボードも実装し、日付や経路別のカウントを容易に確認可能。
- ・NFC名刺の利用において、実用的な計測環境を迅速に構築できた。
Senior Engineer Insight
> 小規模用途として、非常に合理的かつ「筋が良い」構成だ。API Gatewayを避ける判断や、sendBeaconによるUX維持は実践的である。ただし、Function URLの公開性と、集計時の
scan操作は、規模拡大時に致命的なボトルネックとなる。商用展開を見据えるなら、認証層の追加と、GSIを用いたQueryへの移行が必須条件となる。