今まで ローカルからLambda関数を実行する場合、Api Gateway を設定しHttpリクエストを実行してLambda関数を実行していました。
Api Gatewayの設定はそう難しくありませんが、Api Gateway を設定しないと作成したLambda関数をローカルから実行できないのもどうなのかと思っていました。
しかし、Api Gatewayを使用しなくても AWS CLI を使用してLambda関数が実行できるようです。
前提
予めAWSへLambda関数を作成しておいて下さい。
Lambda関数の作成については説明しません。
なお、AWS CLI を使う為、AWS CLIを使用できる状態にしておいて下さい。
AWS CLI の設定については説明しません。
開発言語はnode.jsを使用します。
Lambda関数
以下のようなLambda関数を作成しました。
関数名を test_func としています。
const aws = require("aws-sdk");
exports.handler = async (event, context) => {
context.succeed({
statusCode: 200,
body : event,
});
};
コマンド
以下は AWS CLI を使用したLambda関数を実行するコマンドの例です。
aws lambda invoke --function-name test_func --payload $(echo '{ "name": "あああ" }' | base64) outputfile.txt
outputfile.txt へ実行結果が記載されます。
ペイロードにBase64を使用しないと以下のようなエラーとなります。
string argument should contain only ASCII characters
実行結果
成功するとステータスコード200が返却されます。
{
"StatusCode": 200,
"ExecutedVersion": "$LATEST"
}
また、返却された内容(body)はoutputfile.txtへ出力されます。
内容は以下の通りす。
{"statusCode":200,"body":{"name":"あああ"}}
最後に
特にありません。