サラリーマンエンジニアブログ

大企業で働くなんちゃってITエンジニアのブログです。

boto3でAWS Lambda関数を呼び出す(invokeする)

boto3
やぁどうもフナミズです

boto3でAWS Lambda関数を呼び出す(invokeする)

本日はBoto3からAWS Lambdaの関数を呼び出してみたいと思います。

前提条件

  • python3.6以上がインストールされていること (フォーマットつき文字列リテラルを使用しているので)
  • boto3がインストールされていること

python3のインストール方法 (EC2 Amazon Linux2)

sudo yum install python3 # ver python3.7

boto3のインストール方法 (EC2 Amazon Linux2)

sudo yum install pip3
pip3 install boto3

Lambda Invoke コード

import boto3
import json

lambda_client = boto3.client('lambda')

# 関数名
function_name = 'test_function'

# Lambdaのeventに代入される値
event_dict = {
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
  }

invoke_lambda_function(function_name, event_dict)

# Lambda Invoke関数
def invoke_lambda_function(function_name, event_dict):
	response = lambda_client.invoke(
            FunctionName=function_name,
            InvocationType='RequestResponse',
            LogType='Tail',
            Payload=json.dumps(event_dict)
        )

用途

私はこのBoto3 Lambda Invoke 結構使うんですよね。
何に使うかというと、

s3にある複数のcsvファイルを全てjsonにしたい時とかにLambda関数でcsvからjsonにする処理を書いて、
csvファイルのs3のパスをevent_dictに代入して、このInvoke関数を使ってLambdaに投げまくって、一気にcsv to jsonにするとか。
まぁ複数ファイルをちょっとした処理で一気にETLしたい時に便利ですね。

まとめ

今回はBoto3を使ってLambdaをinvokeさせる関数を書きました。
面白いので、よかったら使ってみてください。