Jon*_*nis 6 python amazon-web-services aws-lambda airflow
我在 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
Run Code Online (Sandbox Code Playgroud)
此函数查询外部 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}')
Run Code Online (Sandbox Code Playgroud)
但据我了解,此代码片段未连接到 S3。这是从 Airflow 触发 AWS Lambda 函数的正确方法还是有更好的方法?
我建议您使用AwsLambdaHook
:
有一个测试显示了它在触发 Lambda 函数中的用途:
归档时间: |
|
查看次数: |
6775 次 |
最近记录: |