AWS Lambda (python):传递文件路径列表,并将每个文件作为单独的 lambda 执行



我有一个python lambda函数,它将列出S3存储桶中的每个文件(下面的代码(。 我不清楚该怎么做是将each file object传递给另一个 lambda 函数作为输入并具有单独的执行。 目标是在列表中x文件数量来创建x数量的第二个 lambda 并发执行(即,如果列表中有 20 个文件,则执行第二个 lambda,执行 20 次,每个文件分别传递给 lambda 函数(。 该文件将在第二个 lambda 函数中用于在 Pandas 中连接。

真的很感谢任何帮助!

文件列表 (lambda 1(

import boto3
#Start session with Profile
session = 
boto3.session.Session(profile_name='<security_token_service_profile>')
client = session.client('s3') #low-level functional API
resource = session.resource('s3') #high-level object-oriented API
#State S3 bucket
my_bucket = resource.Bucket('<bucket>') #subsitute this for your s3 bucket name. 
#List all files
files = list(my_bucket.objects.filter(Prefix='<path_to_file>'))
print(files)

>谢谢你@jarmod! 这奏效了。 对于那些将来可能需要这个的人,我上面的lambda脚本已经修改如下:

import boto3
import json
print('[INFO]  Loading Function')
def lambda_handler(event, context):
print("[INFO]  Received event: " + json.dumps(event, indent=2))
#Start session with region details for authentication
session = boto3.session.Session(region_name='<region>')
client = session.client('s3') #low-level functional API
resource = session.resource('s3') #high-level object-oriented API
#Identify S3 bucket
my_bucket = resource.Bucket('<bucket>') #subsitute this for your s3 bucket name. 
#List all files
files = list(my_bucket.objects.filter(Prefix='<file_path>'))
for file in files:
payload = json.dumps({"key": file.key})
print(payload)
client_lambda = session.client('lambda')
client_lambda.invoke(
FunctionName='<lambda_function_name_to_call>',
InvocationType='Event',
LogType='None',
Payload=payload
)

if __name__ == '__main__':
lambda_handler()`

最新更新