目的
API連携をしてみたくて何作るかchatGPTと話していたら、
いつの間にか今日はLamdaとCloudWatch Eventsでnode.js 18を定期実行してみることになりました。
AWSとnode.jsはどっちも初めてなので勉強しながら備忘録!
今回やること
今回の目標は以下の2つ。
- Lamdaでnode.jsのコードを実行してみる
- CloudWatch Eventsで定期実行する
環境
- windows 10
- node.js 18
- リージョン 東京
いざ出陣
AWSアカウントの発行
ここからAWSアカウントを作成します。
英語ですが画面見ながら手順に進めると作成できました。
英語で住所書くときの順番が覚えられないのですが、chatGPTに
「自分の住所」を英語で書きたい。
Address、City、State, Province, or Region、Postal Codeに分けて書いて。
とか聞いて教えてもらいました。神。
LambdaでHello World!
これ見ながらやります。
Lambdaの設定項目は以下の通り
- オプション
- 一から作成
- 関数名
- HelloWorld
- ランタイム
- Node.js 18.x
- アーキテクチャ
- x86_64
export const handler = async(event) => {
// TODO implement
const response = {
statusCode: 200,
body: JSON.stringify('Hello World!'),
};
return response;
};
ルールを作成する前に、適当にテストイベントを設定して実行してみたら「Excution results」の「Response」に結果が表示されました。
CloudWatchで定期実行
ルールを作成 > スケジュールから実行スケジュールを設定します。
スケジュールを選ぶと、「Amazon EventBridge」に飛ばされます。
調べてみたら「Amazon EventBridge」は「CloudWatch Events発展版のサービス」みたいな感じらしいです。
詳しいことは後で。
実行時間を設定する「corn」は最近やったので何かは分かってました。
以下を入力して、日本時間で毎日00:10に設定します。
タイムゾーンは、OSのタイムゾーン設定で決まるようなので気にせず日本時間で入力しました。
corn(10 0 * * ? *)
ターゲットに先ほど作成したLmbda関数が表示されない場合、右上のリージョンが一致しているか確認してください。
僕は、それで困りました...
ルールを設定したら、cronで入力した時間に実行されるはずです。
CloudWatch > ログ > ロググループから、ロググループを選択して実行を確認できます。
「Hello World!」がどこに出るかは分からなかったですが...
多分、出ないんでしょう。終わり!
余談
そういえば、料金のこと考えていませんでした。
以下のサイトで無料枠を確認できます。
無料枠は以下の通りです。
1,000,000 件/月の無料リクエスト
1 か月あたり最大 320 万秒のコンピューティング時間
なんか大丈夫そうですね。
一応、ルールと関数は削除しときます。
次は本来の目的であるAPI連携のコード実行します!