サムネがコーヒーの記事は書きかけです。

AWS Lambda関数でpipを使いたい

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関数を展開できます。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です