AWS Lambda では、ある Lambda 関数から別の Lambda 関数をプログラム内で呼び出すことができます。本記事では、エイリアスを明示的に指定して別の Lambda 関数を呼び出す方法を紹介します。
🧩 背景
Lambda 関数にはエイリアス(dev
、staging
、prod
など)を設定でき、環境ごとのバージョン管理やデプロイの切り替えが安全に行えます。
しかし、コード中で別の関数を呼び出すときにエイリアスを付けないと、最新版 $LATEST
に向いてしまうことがあります。これを防ぐため、ARN 形式で明示的にエイリアスを指定するのがベストプラクティスです。
✅ IAM 権限の設定
呼び出し元の Lambda には、対象の Lambda 関数に対する lambda:InvokeFunction 権限が必要です。
✅ 使用例
以下は、Node.js ランタイムで Lambda 関数を呼び出すサンプルです。
const AWS = require('aws-sdk');
const lambda = new AWS.Lambda();
exports.handler = async (event) => {
const params = {
// 呼び出す Lambda 関数の ARN。末尾に :エイリアス を付けることで明示的にバージョン指定できる
FunctionName: 'arn:aws:lambda:{リージョン}:{アカウントID}:function:{関数名}:{エイリアス}',
InvocationType: 'Event', // 非同期呼び出し
// 呼び出し先の Lambda に渡したいデータ。ここでは requests を渡している
Payload: JSON.stringify({ email_requests: event.requests })
};
try {
const result = await lambda.invoke(params).promise();
console.log('呼び出し成功:', result.StatusCode);
} catch (err) {
console.error('呼び出しエラー:', err);
}
};