[英]Invoke AWS Lambda via AWS Step Functions?
一個Lambda以同步方式調用另一個Lambda,獲取一些數據並繼續進行處理。
這意味着,在通話時間段內兩個Lambda都要考慮成本。
在這種情況下是否可以使用AWS Step Functions而不將處理分為狀態機塊,這會使代碼過於復雜?
Node.js 8.10代碼:
const AWS = require('aws-sdk');
const lambda = new AWS.Lambda({ apiVersion: '2015-03-31' });
exports.handle = async event => {
try {
const packageId = event.pathParameters['id'];
const entry = await packageEntry(packageId);
const tags = await tagsForEntry(entry.id);
return httpResponse(200, { ...entry, tags });
}
catch (err) {
return httpResponse(500, err.message);
}
}
async function tagsForEntry(entryId) {
const response = await lambda.invoke({
FunctionName: process.env.TAGGING_LAMBDA,
InvocationType: 'RequestResponse',
Payload: JSON.stringify({
method: 'GET_TAGS',
payload: { entryId }
})
}).promise();
const payload = response.Payload ? JSON.parse(response.Payload.toString()) : {};
return payload.tags || [];
}
async function packageEntry(packageId) {
// return a package entry from a database
}
function httpResponse(statusCode, data) {
// return a HTTP response object
}
您只需要做的修改就是從第二功能返回的第一功能返回數據。 步進功能將自動獲得第一個功能的輸出作為第二個功能的輸入。
另外,您不需要處理lambda函數之間的函數調用,狀態機將處理該調用。
此外,除了lambda執行費用外,該服務不會有其他費用,因此您的費用保持不變。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.