[解決済み] Nodejs - AWS.Lambda関数を別のLambda関数から呼び出す
質問
以下のような関数があり、自分のコードからLambda関数を呼び出すのに使用しています。
しかし、これをLambda関数内で使おうとすると、以下のエラーが発生します。
AWS lambda undefined 0.27s 3 retries] invoke({ FunctionName: 'my-function-name',
InvocationType: 'RequestResponse',
LogType: 'Tail',
Payload: <Buffer > })
Lambda関数の中からLambda関数を呼び出すには?
私の関数です。
'use strict';
var AWS = require("aws-sdk");
var lambda = new AWS.Lambda({
apiVersion: '2015-03-31',
endpoint: 'https://lambda.' + process.env.DYNAMODB_REGION + '.amazonaws.com',
logger: console
});
var lambdaHandler = {};
// @var payload - type:string
// @var functionName - type:string
lambdaHandler.invokeFunction = function (payload, functionName, callback) {
var params = {
FunctionName: functionName, /* required */
InvocationType: "RequestResponse",
LogType: "Tail",
Payload: new Buffer(payload, 'utf8')
};
var lambdaRequestObj = lambda.invoke(params);
lambdaRequestObj.on('success', function(response) {
console.log(response.data);
});
lambdaRequestObj.on('error', function(response) {
console.log(response.error.message);
});
lambdaRequestObj.on('complete', function(response) {
console.log('Complete');
});
lambdaRequestObj.send();
callback();
};
module.exports = lambdaHandler;
どのように解決するのですか?
Lambda Functionを別のLambda Functionの中から呼び出すのは、非常に簡単です。
aws-sdk
を使えば簡単です。
私は何かから始めることをお勧めします 簡単なもの から始めることをお勧めします。
これはラムダ内呼び出しの"Hello World"です。
Lambda_A
を呼び出す
Lambda_B
を呼び出します。
Payload
を含む、単一のパラメータ
name:'Alex'
.
Lambda_B
はペイロードで応答します。
"Hello Alex"
.
<イグ
最初に作成する
Lambda_B
これは
name
プロパティ
の上に
event
パラメータ
でリクエストに応答し
"Hello "+event.name
:
ラムダ_B
exports.handler = function(event, context) {
console.log('Lambda B Received event:', JSON.stringify(event, null, 2));
context.succeed('Hello ' + event.name);
};
を与えることを確認します。
Lambda_B
と
Lambda_A
は同じ役割を果たします。
例: という名前のロールを作成します。
lambdaexecute
というロールを作成し、そこに
AWSLambdaRole
,
AWSLambdaExecute
と
AWSLambdaBasicExecutionRole
(
すべて必須
):
ラムダ_A
var AWS = require('aws-sdk');
AWS.config.region = 'eu-west-1';
var lambda = new AWS.Lambda();
exports.handler = function(event, context) {
var params = {
FunctionName: 'Lambda_B', // the lambda function we are going to invoke
InvocationType: 'RequestResponse',
LogType: 'Tail',
Payload: '{ "name" : "Alex" }'
};
lambda.invoke(params, function(err, data) {
if (err) {
context.fail(err);
} else {
context.succeed('Lambda_B said '+ data.Payload);
}
})
};
これらのLambda関数を両方とも保存したら、Testを実行します。
Lambda_A
:
<イグ
を用意したら 基本的な intra-lambdda invocationが動作するようになれば、より精巧なLambda関数を呼び出すためにそれを簡単に拡張することができます。
<ブロッククオート
あなたがしなければならない主なことは
を覚えておくことです。
というのは
を設定し、適切な
ARN Role
を設定します。
.
関連
-
[解決済み】エラー TRK0005: 位置特定に失敗しました。"CL.exe"
-
[解決済み】"npm update -g" の後に "Cannot find module 'npmlog'" というエラーが発生する。
-
[解決済み】passport.js passport.initialize() ミドルウェアが使用されていません。
-
[解決済み】Passport.js - エラー: ユーザーのセッションへのシリアライズに失敗しました。
-
[解決済み] ノードのバージョンを管理するためのnまたはnvm - 各バージョンのグローバルモジュールを保持することは良いアイデアですか?
-
[解決済み] nodejsのコードでpackage.jsonからバージョンを取得する方法はありますか?
-
[解決済み] Amazon API GatewayからAWS Lambdaにクエリストリングやルートパラメータを渡す方法
-
[解決済み] AWS Lambda関数が別の関数を呼び出すことは可能か?
-
[解決済み] module.exports内の別の関数からmodule.exports内の「ローカル」関数を呼び出す?
-
[解決済み】既にアップロードされているLambda関数をダウンロードする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Express.js req.bodyが未定義です。
-
[解決済み】nodemon - app crashed - waiting for file changes before start
-
[解決済み】POSTできない/expressを使用するとエラーが発生する
-
[解決済み] Node.jsのホスト名/IPが証明書のaltnamesと一致しない
-
[解決済み] Npmエラー - Windows NT - 解決方法
-
[解決済み] ExpressJS : res.redirect()が期待通りに動作しない?
-
[解決済み] nvm は npm config の "prefix" オプションと互換性がありません。
-
[解決済み] npm not able to find a fileに関連するエラーは何が原因でしょうか?node_modules サブフォルダ内にコンテンツがありません。なぜでしょうか?
-
[解決済み] Mongoose Schema がモデルとして登録されていません。
-
[解決済み] AccessDeniedException: User is not authorized to perform: lambda:InvokeFunction