python - AWS Lambda(Python): Pass list of file paths and execute each file as a separate lambda

标签 python amazon-web-services concurrency aws-lambda

我有一个 python lambda 函数,它将列出 S3 存储桶中的每个文件(代码如下)。我不清楚如何将每个文件对象传递给另一个 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()`

关于python - AWS Lambda(Python): Pass list of file paths and execute each file as a separate lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52435807/

相关文章:

python - 无法从网页中提取连接到 `see all` 按钮的链接

python-3.x - 使用 Python 和 AWS 解析医学测试并提取表和键值?

amazon-web-services - 如何通过http触发器从AWS SNS触发GCP云功能(私有(private))

amazon-web-services - 限制AWS EC2实例仅访问同一区域中的S3存储桶

go - 在同一执行线程中没有 channel 的上下文

python - 如何将多索引 DataFrame 转换为嵌套字典结构?

python - 为列表条目提供索引

java - 如果weakCompareAndSet 的实现与compareAndSet 完全一样,它怎么会虚假失败?

python - 如何从另一个文件调用python类函数

Java:如何解决读写器问题?