前の記事で、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をやっていればそれなりに見覚えのありそうなエラーメッセージです。
次の記事では、新しいエラーを解決していきます。