🥷

伊賀鉄道の駅名くじ【AWS Lambda × API Gateway】

に公開

伊賀鉄道は、三重県伊賀市を走るローカル線だ。

2008年度に約204万人だった輸送人員は、2023年度には約111万人まで減少。営業収支も約1億2,400万円の赤字となっており、鉄道事業の継続が厳しい状況にある。

参考:鉄道旅客運賃の上限変更認可申請について|伊賀鉄道


東急電鉄の中古車両が走る伊賀鉄道

少しでも伊賀鉄道に関心を持つきっかけになればと思い、駅名をランダムに表示する「伊賀鉄道駅名くじ」のWebページを作った。


伊賀鉄道駅名くじ

使用技術はAWS LambdaAPI 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