AWS LambdaでUnable to import module ‘lambda function’: No module named ‘lambda_function’

前の記事で、Lambdaに自作プログラムをアップロードしたらエラーが出ました。この記事では、そのエラーを解決します

Q. Unable to import module ‘lambda function’: No module named ‘lambda_function’って出たんですが… A. ハンドラを設定しよう

エラーメッセージで検索しLambda(Python) を実行すると "Unable to import module '...': No module named ..." - クラウド初心者のメモを見つけます。中身を読んだところ、圧縮方法は正しそうです。しかし、「Lambda > Functions > ファンクション名 > Configuration > Handler とマッチしない。」という記述が気になります。たしかにmain関数もどのファイルから実行するとも書いていません。

lambdaのランタイム設定のハンドラに、「実行するPythonのファイル名.その中の関数名」という形式で書いてあげれば良さそうです。先ほどのPythonファイルを雑に関数に入れてみます。

import requests
url = "https://slack.com/api/chat.postMessage"
token = "xoxb-xxxxxxxxxxxxx-xxxxxxxxxxxxx-xxxxxxxxxx..."# tokenを入れてください

header={
    "Authorization": "Bearer {}".format(token)
}

data  = {
    "channel" : "C0123456789",# Conversation IDを入れてください
    "text" : "Hello World!"
    }

def post_message():
    requests.post(url, headers=header, data=data)

またこれをzipにしてアップロードします。lambdaのランタイム設定のハンドラに「post_slack_message.post_message」と書き、再度橙色のTestを押すと…

また失敗します。でもさっきとエラーメッセージが違うから、ちょっと進んだのかも知れません。ちょっと戻ったのかも知れません。(ちょっと進んでいます。)Pythonをやっていればそれなりに見覚えのありそうなエラーメッセージです。

次の記事では、新しいエラーを解決していきます。

© 2019- estie, inc.