簡體   English   中英

通過AWS Step Functions調用AWS Lambda?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM