AWS lambda関数をPythonで実行したい時、pipが使えないので外部モジュールを使いたい時は下記の方法を試す必要があります。
はじめに、workdirを作成します。
mkdir lambda-deployment
cd lambda-deploymentこの中でpipを実行します。
今回はAPIのヘルスチェックによく使うrequestsモジュールをインストールしてみます。
pip install requests -t .pipで任意のパッケージをインストールした後は、同じディレクトリ内にlambda関数を作成します。
今回は、ヘルスチェックを行った後結果をslackに送信する関数を作成します。
import json
import requests
from datetime import datetime
import os
import pytz
HEALTH_CHECK_URL = os.environ.get("HEALTH_CHECK_URL")
WEBHOOK_URL = os.environ.get("WEBHOOK_URL")
jst = pytz.timezone("Asia/Tokyo")
def lambda_handler(event, context):
health_check_url = HEALTH_CHECK_URL
webhook_url = WEBHOOK_URL
now = datetime.now(jst)
try:
response = requests.get(health_check_url)
if response.status_code == 200:
message = {
"text": f"Webhook test(Lambda)" + now.strftime("%Y-%m-%d %H:%M:%S")
}
requests.post(webhook_url, data=json.dumps(message))
return {"statusCode": 200, "body": json.dumps("Check completed successfully")}
except Exception as e:
error_message = {"text": f"Error accessing {health_check_url}: {str(e)}"}
requests.post(webhook_url, data=json.dumps(error_message))
return {"statusCode": 500, "body": json.dumps(f"Error occurred: {str(e)}")}
最後に、同じディレクトリで、すべてのファイルをzipに格納します。
zip -r lambda_function.zip .これで出来上がったファイルをAWSのLambdaコンソール上でアップロードすれば,、外部モジュールを含んだLambda関数を展開できます。

