dullwhaleのメモ帳

何度も同じことを調べなくてよいように...

シェルからPythonの単一ファイル中の関数を呼ぶ方法

🙅‍♂️

python -c "import lambda_function; lambda_handler(None, None)"

🙆‍♂️

python -c "import lambda_function; lambda_function.lambda_handler(None, None)"

検索して上位に出てくる方法では上手くいかない。

前提と詳細

ファイル名 lambda_function.pyの中に次のような関数が定義されているとする。 これはシンプルなAWS Lambda関数の実装を想定している。

def lambda_handler(event, context):
    return {
        'isBase64Encoded': False,
        'statusCode': 200,
        'headers': {},
        'body': '{"result":"ok"}',
    }

この関数をシェルから実行するためには次のようにする。

python -c "import lambda_function; lambda_function.lambda_handler(None, None)"

検索して上位に出てくる次の呼び出し方ではエラーになる。

# 注意!ダメな方法
$python -c "import lambda_function; lambda_handler(None, None)"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
NameError: name 'lambda_handler' is not defined