node.js と AWS Lambda を使って別の Lambda 関数を呼び出す
AWS Lambda 関数で別の Lambda 関数を呼び出す方法
AWS Lambda 関数は、イベント駆動型コンピューティングサービスであり、コードを実行するためのサーバーを管理することなく、コードを実行できます。
Lambda 関数は、他の Lambda 関数を呼び出すことができ、複雑なワークフローを作成したり、コードを再利用したりすることができます。
呼び出し方法
2つの方法で Lambda 関数を呼び出すことができます。
同期呼び出しでは、呼び出し元の Lambda 関数は、呼び出される Lambda 関数が完了するまで待機します。
これは、呼び出される Lambda 関数の結果が必要な場合に便利です。
以下の点を考慮する必要があります。
- 呼び出し元の Lambda 関数の処理時間に影響を与えても良いかどうか
同期呼び出しの例
const AWS = require('aws-sdk');
const lambda = new AWS.Lambda();
const params = {
FunctionName: 'my-other-lambda-function',
Payload: JSON.stringify({
// 呼び出される Lambda 関数に渡すデータ
}),
};
lambda.invoke(params, (err, data) => {
if (err) {
// エラー処理
} else {
// 呼び出される Lambda 関数の結果処理
}
});
const AWS = require('aws-sdk');
const lambda = new AWS.Lambda();
const params = {
FunctionName: 'my-other-lambda-function',
InvocationType: 'Event',
Payload: JSON.stringify({
// 呼び出される Lambda 関数に渡すデータ
}),
};
lambda.invokeAsync(params, (err) => {
if (err) {
// エラー処理
}
});
注意事項
- 呼び出す Lambda 関数と呼び出される Lambda 関数は、同じリージョンにある必要があります。
- 呼び出される Lambda 関数は、呼び出し元の Lambda 関数からのリクエストを受け付けるように設定する必要があります。
- Lambda 関数同士を呼び出すことで、複雑なワークフローを作成することができます。
- Lambda 関数を再利用することで、コードを効率的に利用することができます。
同期呼び出し
const AWS = require('aws-sdk');
const lambda = new AWS.Lambda();
const params = {
FunctionName: 'my-other-lambda-function',
Payload: JSON.stringify({
// 呼び出される Lambda 関数に渡すデータ
}),
};
lambda.invoke(params, (err, data) => {
if (err) {
// エラー処理
} else {
// 呼び出される Lambda 関数の結果処理
console.log(data);
}
});
非同期呼び出し
const AWS = require('aws-sdk');
const lambda = new AWS.Lambda();
const params = {
FunctionName: 'my-other-lambda-function',
InvocationType: 'Event',
Payload: JSON.stringify({
// 呼び出される Lambda 関数に渡すデータ
}),
};
lambda.invokeAsync(params, (err) => {
if (err) {
// エラー処理
} else {
// 呼び出し完了処理
}
});
このコードは、my-other-lambda-function
という名前の Lambda 関数を非同期的に呼び出し、呼び出し完了後に処理を行います。
注意
これらのコードはサンプルであり、実際の使用には適宜修正する必要があります。
AWS Lambda 関数で別の Lambda 関数を呼び出す方法
ステートマシン
AWS Step Functions を使用して、複数の Lambda 関数を呼び出すステートマシンを作成することができます。
これは、複雑なワークフローを管理する必要がある場合に便利です。
要件によって異なります。
- 呼び出す Lambda 関数の頻度
- ワークフローの複雑さ
- ステートマシンの状態遷移を定義することができます。
- エラー処理を簡単に行うことができます。
node.js amazon-web-services aws-lambda