BBH
-Biz Branding Hub-
投稿日 : 
2019/12/10
更新日 : 
2019/12/10

【AWS】Lambda再帰呼び出しのサンプル

再帰処理とは、関数内で同じ関数を呼び出すなどして、繰り返し処理を行うことを指します。
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にはそれ以外にも様々な情報を取得することができます。

Profile

管理人プロフィール

都内でITエンジニアをやってます。
変遷:中規模SES→独立系SIer→Webサービス内製開発
使用技術はその時々でバラバラですが、C#、AWSが長いです。
どちらかと言うとバックエンドより開発が多かったです。
顧客との折衝や要件定義、マネジメント(10名弱程度)の経験あり。
最近はJava+SpringBootがメイン。

Recommend