【问题标题】:How to trigger one lambda function from multiple lambdas at the same time如何同时从多个 lambda 中触发一个 lambda 函数
【发布时间】:2019-10-14 17:49:01
【问题描述】:

我想同时从多个 lambda 触发一个 lambda 函数。 我遵循的架构是 lambda --> Step Function--> 2 个 lambda 的并行执行 --> 这两个 lambda 应该触发一个 lambda。 这两个 lambda 的事件应该传递给一个 lambda。

直到我已经实现了从 step 函数触发两个 lambda 函数。 为了触发 lambda 函数,我编写了以下代码。但只有在 lambda 事件上才会传递给下一个 lambda。

from boto3 import client as botoClient
import json
lambdas = botoClient("lambda")

def lambda_handler(event, context):

    response = lambdas.invoke(FunctionName="lambda-name", 
                              InvocationType="RequestResponse", 
                               Payload=json.dumps(event))
    return {
        'statusCode': 200,
        'body': json.dumps('Hello from Lambda!')
    }

【问题讨论】:

标签: python-3.x amazon-web-services aws-lambda


【解决方案1】:

这是从另一个 Lambda 函数调用 Lambda 函数的 sn-p -

let AWS = require('aws-sdk');
let util = require('util');

module.exports.proxyAPIRequest = async () => {

    let client = new AWS.Lambda({
        region: "us-east-1"
    });

    let requestPayload = {
        'someKey' : 'someValue'
    };

    requestPayload = JSON.stringify(requestPayload);
    console.log("Payload => ", requestPayload);

    let params = {
        FunctionName: functionName,
        InvocationType: "RequestResponse", 
        Payload: requestPayload
    };

    let lambda = util.promisify(client.invoke).bind(client);
    let response = await lambda(params);

    console.log(response.Payload);

    return response.Payload;
};

确保您的调用者 Lambda 函数有权调用另一个函数 -

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Lambda permission",
      "Action": [
        "lambda:InvokeFunction"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:lambda:awsRegion:awsAccountId:function:functionName"
    }
  ]
}

【讨论】:

    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 2018-07-19
    • 2019-04-07
    • 1970-01-01
    • 2020-06-30
    • 2017-05-27
    • 1970-01-01
    • 2021-03-21
    相关资源
    最近更新 更多