#はじめに
AWSのlambdaを使用して、スケジュール実行のプログラムを設置しました。
lambdaの基本的なことで意外とつまったので残しておきます。
AWSのアカウントは作成しているものとしています。
MAC OS X
python 3.6
対象
・lambdaを触ったことのない方
・とりあえず何か動かして見たい方
#lambdaとは
スクリプトを実行することが出来るサーバーレスのサービスです。
サーバレスと言ってもスクリプトの実行時にのみサーバを起動するイメージです。
呼び出しはAWSの空いているサーバから行われるため、実行するサーバーは都度違います。
(固定IPを割り当てたサブネットにlambdaを設置して実行することでIPを固定にすることは出来ます)
無料使用枠が月ごとに100万件の無料リクエストと1秒あたり40万GBのコンピューティング時間あるので、たいてい無料枠で動かせます。WebやIOTのバックエンドのAPIとしても使えるのでめちゃくちゃ便利なサービスですね。
#簡易的なスクリプト作成
pythonでLambdaのスクリプトを作成する場合、 lambda_function.py という名前で作成しなければいけません。
その中の lambda_handler という関数が呼ばれるようになっているので、lambda_handler関数も用意します。
# -*- coding:utf-8 -*-
# lambda実行時に呼ばれる関数。引数はevent,contextがデフォルトっぽいです。
# 引数なくてもいいっぽいですが、書いておきます。
def lambda_handler(event, context):
print('テスト実行')
このスクリプトをzip形式に圧縮します。
$ zip function.zip lambda_function.py
MACの場合はエクスプローラー上で圧縮すると.DS_Storeファイルが入ってlambda_function.pyを読み込めないのでコマンドで圧縮します。
#Lambda関数の作成
AWSのコンソール画面から「Lambda」→「関数の作成」を選択。
関数名を入れて、ランタイムは今回はPython 3.6にします。
入力できたら、「関数の作成」ボタンをクリックします。
これで関数ができたので、先ほどのスクリプトをアップロードします。
右下の「アクション」ボタンから「.zipファイルをアップロード」で先ほどのzipファイルをアップロードします。
#テストを実行
右上のテストをクリックして、イベント名を入力します。
下の配列は関数に渡すイベント引数ですが、今回は使用していないので、変更せずにそのまま作成します。
作成したテストを選択された状態でテストボタンをクリックしてください。
関数コードの下に実行結果が出てきてるので成功です。
#定期実行のイベント作成
デザインナーの「トリガーを追加」ボタンをクリック。
トリガー:EventBridge(CloudWatch Events)
ルール:新規ルール
ルールタイプ:スケジュール式
スケジュール式:cron(30 1 * * ? *)
※このスケジュール式は午前10時30分に実行されます。
式の時間はUTC時間なので、設定したい時間から9時間マイナスした時間で設定します。
cron(分 時 日 月 曜日 コマンド)
「追加」ボタンをクリックして、これで設定完了です。