简体   繁体   English

从 Airflow 触发 AWS Lambda function

[英]Triggering AWS Lambda function from Airflow

I have created a function in AWS lambda which looks like this:我在 AWS lambda 中创建了一个 function,如下所示:

import boto3
import numpy as np
import pandas as pd
import s3fs
from io import StringIO


def test(event=None, context=None):
    # creating a pandas dataframe from an api
    # placing 2 csv files in S3 bucket

This function queries an external API and places 2 csv files in S3 bucket.此 function 查询外部 API 并将 2 个csv文件放在 S3 存储桶中。 I want to trigger this function in Airflow, I have found this code:我想在Airflow中触发这个function,我找到了这段代码:

import boto3, json, typing

def invokeLambdaFunction(*, functionName:str=None, payload:typing.Mapping[str, str]=None):
    if  functionName == None:
        raise Exception('ERROR: functionName parameter cannot be NULL')
    payloadStr = json.dumps(payload)
    payloadBytesArr = bytes(payloadStr, encoding='utf8')
    client = boto3.client('lambda')
    response = client.invoke(
        FunctionName=test,
        InvocationType="RequestResponse",
        Payload=payloadBytesArr
    )
    return response



if __name__ == '__main__':
    payloadObj = {"something" : "1111111-222222-333333-bba8-1111111"}
    response = invokeLambdaFunction(functionName='test',  payload=payloadObj)
    print(f'response:{response}')

But as I understand this code snippet does not connect to the S3.但据我了解,此代码段未连接到 S3。 Is this the right approach to trigger AWS Lambda function from Airflow or there is a better way?这是从 Airflow 触发 AWS Lambda function 的正确方法还是有更好的方法?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM