LoginSignup
1
0

More than 1 year has passed since last update.

【Lambda Typescript】技術のトレンドを追うために簡単なアプリケーションをつくりました

Posted at

これはなに?

Qiitaのトレンドを取得するLambda関数を作成したのでそのメモを兼ねた記事です。
TypescriptでLambdaを書いています。

開発環境

バックバックエンド

TypeScript@4.9.5

  • @types/node
  • axios
  • nodemailer

クラウド

AWS

  • Lambda
  • Eventbrige

何がしたかったのか?

  • 朝通勤する時間など隙間時間で技術記事に触れる習慣を作りたいと思った。
  • TypeScriptをバックエンドで使って練習したい。
  • Lambdaを使った開発をやってみたかった。

作成した機能の概要

TypeScript側

Qiitaトレンドを取得できるAPI(リンク先の記事で紹介されているもの)からJSONを取得し、記事のタイトルとURLを取得する。メールで送信するために成形する。nodemailerを利用してgmailで送信する。

Lambda側

TypeScript側で作成した関数等をzip化してLambdaにデプロイ。
EventBridgeをトリガーにして、指定した時間にLambda関数を実行するように設定。

デプロイについて

#!/bin/sh
# distフォルダ
rm -rf ./dist
# TypeScriptビルド
tsc -p tsconfig.json
# package.jsonをdistにコピー
cp -f ./package.json ./yarn.lock ./dist
cd dist
# packageのインストール
yarn install --production
# uploadするためにzip化
# zip -r ./lambda.zip ./
powershell -c Compress-Archive -Path "./*" -DestinationPath lambda.zip

# zipデータをlambdaにアップロード
aws lambda update-function-code \
    --function-name qiitatrend \
    --zip-file fileb://lambda.zip

シェルで実行します。
aws-cliを事前にインストールし、aws configureコマンドでアクセスキーやデプロイ先のリージョンを指定しておく必要があります。

GitHubリポジトリ

https://github.com/ryosuke-horie/functions-for-self-learning-

改善点などがあればぜひコメントなどをお願いします。

この関数を作ったことでQiita記事を読む習慣は身についたのか?

後日記載します。

参考文献

lambdaにTypeScriptをデプロイする手順(zip) - Qiita

zip形式でのデプロイ方法について解説された記事。今回は最もシンプルな形で動くものを作ることが優先だったのこちらを参考にしました。

【AWS】Lambdaでtime out after 3.00 secondsが出たときの対処法 - Qiita

デプロイした後実行した際にtime out after 3.03 secondとあったため確認。lambdaの設定でタイムアウトする時間を変更可能

AWS Lambda 環境変数の使用 - AWS Lambda

メールアドレスなどコードに書いておきたくなかったので環境変数を利用する方法で実装。こちらもlambdaの設定>環境変数から確認可能

Netlify Functions を使って Qiita のトレンド API を非公式で作ってみた - Qiita

Qiitaトレンドを取得するためのAPIを公開されていたので利用させていただきました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0