\

PythonとLambdaを使用して遅延実行を行う方法について説明します。特に、AWSのStepFunctionsのWaitステートを使用したLambdaの遅延実行について詳しく見ていきましょう。

StepFunctionsのWaitステートとは

StepFunctionsのWaitステートは、名前の通り、待機状態を作るステートです。実行がWaitステートの時、料金は一切かかりません。待機時間は、最大で約1年待機することができます。

Waitステートを使用したLambdaの遅延実行

以下に、待機時間をパラメータとして受け取り、待機後にLambdaを実行するステートマシンの例を示します。

{
    "StartAt": "Wait",
    "States": {
        "Wait": {
            "Type": "Wait",
            "SecondsPath": "$.wait_secs",
            "Next": "MainTask"
        },
        "MainTask": {
            "Type": "Task",
            "Resource": "arn:aws:lambda:ap-northeast-1:xxxxxxxxxxxxx:function:main_task",
            "End": true
        }
    }
}

この例では、入力パラメータのwait_secs秒を待機し、main_task関数を実行します。

ステートマシンの起動

ステートマシンを起動するには、ステートマシンのARNと初期入力値を与えて、startExecutionを実行します。

const AWS = require('aws-sdk');
const StepFunctions = new AWS.StepFunctions();
const input = {
    wait_secs: 60 * 20, // 20 minutes
    other_param: 'Hello World'
};
const params = {
    stateMachineArn: `arn:aws:states:ap-northeast-1:xxxxxxxxxxxxx:stateMachine:main_task_after_wait`,
    input: JSON.stringify(input)
};
await StepFunctions.startExecution(params).promise();

以上がPythonとLambdaを使用した遅延実行の一例です。このように、AWSのStepFunctionsを使用することで、一定時間後に処理を実行するということが非常にシンプルに、低コストで実現できます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です