なぜ
lambda はアクセスの際にロード、展開された後に実行される(Cold Start)ため初回実行が遅くなります。これを回避したい場合の策です。
Cronで行っても良いのですが、そのためにサーバを立てたくないので、定期実行もlambdaで行います。
他にもlambdaの自動実行がしたい場合は同様の手順で可能です。
前提
今回lambdaの関数はPythonで作成し、APIGatewayをrequestで叩くものとします。
手順
- lambdaアップロード用zipの準備
- 作業用フォルダにモジュールの配置
- ソース作成
- zip
- アップロード
- テスト
- 定期実行の設定
- cloudwatch eventの追加
- 設定
lambdaアップロード用zipの準備
作業用フォルダに移動
$ cd path/to/work
モジュールを配置(インストール)
$ pip install requests -t ./
ソースの作成
lambda_function.py
import requests
def lambda_handler(event, context):
#
r = requests.get("https://absc1234ef.execute-api.ap-northeast-1.amazonaws.com/api/apiname")
return r.text
モジュールをlambdaに登録する必要があるのでローカルに準備しzipで固める。
$ zip -r upload.zip *
アップロード
テスト
テストボタンを押して、想定したレスポンスが帰ってくればOK。
定期実行の設定
cloudwatch eventの追加
トリガーにCloudWatch Eventsを追加します