LoginSignup
6
18

More than 3 years have passed since last update.

AWS Lambdaでpythonプログラムの定期実行

Last updated at Posted at 2020-11-15

はじめに

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関数も用意します。

lambda_function.py
# -*- coding:utf-8 -*-

# lambda実行時に呼ばれる関数。引数はevent,contextがデフォルトっぽいです。
# 引数なくてもいいっぽいですが、書いておきます。
def lambda_handler(event, context):
    print('テスト実行')

このスクリプトをzip形式に圧縮します。

bash
$ zip function.zip lambda_function.py

MACの場合はエクスプローラー上で圧縮すると.DS_Storeファイルが入ってlambda_function.pyを読み込めないのでコマンドで圧縮します。

Lambda関数の作成

AWSのコンソール画面から「Lambda」→「関数の作成」を選択。
関数名を入れて、ランタイムは今回はPython 3.6にします。

スクリーンショット 2020-11-15 23.18.48.png

入力できたら、「関数の作成」ボタンをクリックします。
これで関数ができたので、先ほどのスクリプトをアップロードします。
右下の「アクション」ボタンから「.zipファイルをアップロード」で先ほどのzipファイルをアップロードします。

スクリーンショット 2020-11-15 23.22.16.png

スクリーンショット 2020-11-16 0.26.26.png

テストを実行

右上のテストをクリックして、イベント名を入力します。
下の配列は関数に渡すイベント引数ですが、今回は使用していないので、変更せずにそのまま作成します。

スクリーンショット 2020-11-16 0.30.29.png

作成したテストを選択された状態でテストボタンをクリックしてください。

スクリーンショット 2020-11-16 0.33.35.png

関数コードの下に実行結果が出てきてるので成功です。

スクリーンショット 2020-11-16 0.34.34.png

定期実行のイベント作成

デザインナーの「トリガーを追加」ボタンをクリック。

トリガー:EventBridge(CloudWatch Events)
ルール:新規ルール
ルールタイプ:スケジュール式
スケジュール式:cron(30 1 * * ? *)
※このスケジュール式は午前10時30分に実行されます。
 式の時間はUTC時間なので、設定したい時間から9時間マイナスした時間で設定します。
 cron(分 時 日 月 曜日 コマンド)

スクリーンショット 2020-11-16 0.46.30.png

「追加」ボタンをクリックして、これで設定完了です。

6
18
1

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
6
18