AWS链接Lambda函数与SNS

AWS Chaining Lambda Functions with SNS

本文关键字:SNS 函数 Lambda 链接 AWS      更新时间:2023-09-26

当对象上传到S3时,我有两个lambda函数应该被触发。

触发两个脚本,在第一个脚本中,我发布了一个sns主题,然后是第二个脚本。当发布它时,我应该传递事件,以便我可以操作它。

我有问题传递事件到第二个lambda函数。我是这样做的:

第一个脚本像这样传递事件

exports.handler = function(event, context) {
 console.log("Loading metadata function");
 var eventText = JSON.stringify(event, null, 2);
 console.log("Received event:", eventText);
 var sns = new AWS.SNS({region:'us-west-2'});
 var messageparams = {
    Message: eventText, 
    Subject: "Successfully send",
    TopicArn: "MyArn"
 };
 sns.publish(messageparams);

第二个脚本应该像这样使用事件

def lambda_handler(event, context):
    """
    :param event:
    :param context:
    """
    # Loop through records provided by S3 Event trigger
    for s3_record in event['Records']:
        logger.info("Working on new s3_record...")
        # Extract the Key and Bucket names for the asset uploaded to S3
        key = s3_record['s3']['object']['key']

我建议将S3配置为直接将事件发布到SNS,而不需要任何中间Lambda。接下来,您可以配置两个或更多Lambdas,以便由SNS通知调用。

另一方面,如果您只需要一个Lambda函数,您可以配置S3来发布事件,并使用事件数据作为参数直接调用Lambda,而不需要涉及SNS。