【问题标题】:Triggering AWS Lambda function from Airflow从 Airflow 触发 AWS Lambda 函数
【发布时间】:2020-04-20 12:15:37
【问题描述】:

我在 AWS lambda 中创建了一个函数,如下所示:

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

此函数查询外部 API 并将 2 个csv 文件放入 S3 存储桶中。我想在Airflow中触发这个功能,我找到了这段代码:

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}')

但据我了解,这段代码 sn-p 没有连接到 S3。这是从 Airflow 触发 AWS Lambda 函数的正确方法还是有更好的方法?

【问题讨论】:

    标签: python amazon-web-services aws-lambda airflow


    【解决方案1】:

    【讨论】:

    • lambdahook 是否等待 lambda 返回对图表的响应?如果是这样,它是否会在等待 lambda 完成处理时阻止其他图的执行(即调用是否同步?)
    猜你喜欢
    • 2020-02-15
    • 2019-08-23
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 2020-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多