再帰処理とは、関数内で同じ関数を呼び出すなどして、繰り返し処理を行うことを指します。
Lambdaで言えば、AというLambdaからAというLambdaを呼び出すような場合がそれにあたります。
こうすることで、条件を満たすまで無限に処理を行うことができます。
今回は、そんなLambda内で再帰処理を行うサンプルを紹介します。
Lambda再帰処理のサンプル
# ========== メイン処理 ========== def lambda_handler(event, context): print('Lambda再帰実行 LambdaName={0}, Param={1}'.format(context.function_name, param)) param ={ # Lambdaに渡すパラメータを設定 } exec_lambda(context.function_name, param) # ========== Lambda呼び出しメソッド ========== def exec_lambda(execLambdaName, payload): print('Lambdaを起動します。Lambda名={0}, 引数={1}'.format(execLambdaName, payload)) try: response = boto3.client('lambda').invoke( FunctionName=execLambdaName, InvocationType='RequestResponse', Payload=json.dumps(payload) ) except Exception as e: print('Lambdaの起動に失敗しました。Lambda名={0}, 引数={1}'.format(execLambdaName, payload)) print(e) return False print('Lambdaの起動に成功しました。Lambda名={0}, 引数={1}'.format(execLambdaName, payload)) return True
今回はLambda内で自分自身の情報を取得するために、contextオブジェクトのプロパティを使用しています。
contextにはそれ以外にも様々な情報を取得することができます。