🥷
伊賀鉄道の駅名くじ【AWS Lambda × API Gateway】
伊賀鉄道は、三重県伊賀市を走るローカル線だ。
2008年度に約204万人だった輸送人員は、2023年度には約111万人まで減少。営業収支も約1億2,400万円の赤字となっており、鉄道事業の継続が厳しい状況にある。
東急電鉄の中古車両が走る伊賀鉄道
少しでも伊賀鉄道に関心を持つきっかけになればと思い、駅名をランダムに表示する「伊賀鉄道駅名くじ」のWebページを作った。
使用技術はAWS LambdaとAPI Gateway。
Lambdaは、サーバーレスで動くコンピューティングサービス。ユーザーがサーバーを意識することなく、HTTPリクエストなどのイベントに応じて、事前に書いたプログラムを実行できる。たとえば、API Gateway経由のアクセスや、S3のオブジェクト更新などがトリガーになる。
今回は、API Gatewayからリクエストがあった際に、Lambdaで関数を実行し、ランダムに選んだ駅名をHTMLで返すという構成にした。
実装手順:
① ローカルでファイルを作る
② zipファイルを作る
③ AWS Lambdaで関数を作る
④ コードをアップロードする
⑤ API Gatewayで公開URLを作る
⑥ ブラウザでアクセスして確認
以下がそのJSファイルの内容。
exports.handler = async () => {
const stations = [
"伊賀上野", "新居", "西大手", "上野市",
"広小路", "茅町", "桑町", "四十九",
"猪田道", "市部", "依那古", "丸山",
"上林", "比土", "伊賀神戸"
]
const random = stations[Math.floor(Math.random() * stations.length)]
const html = `
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>伊賀鉄道駅名くじ</title>
<style>
body { font-family: sans-serif; text-align: center; padding-top: 100px; background: #f0f0f0; }
h1 { font-size: 2.5rem; color: #333; }
</style>
</head>
<body>
<h1>🚃 今日の駅:${random}</h1>
</body>
</html>
`
return {
statusCode: 200,
headers: {
'Content-Type': 'text/html; charset=utf-8'
},
body: html
}
}
AWS Lambda 関数の設定画面。API Gateway をトリガーに設定。
単機能のツールだが、LambdaとAPI Gatewayの動作確認やデプロイの練習としてちょうどよかった。
Discussion