【问题标题】:Python Lambda function to perform some operation on different CSV files depending on file namesPython Lambda函数根据文件名对不同的CSV文件执行一些操作
【发布时间】:2020-02-05 20:31:02
【问题描述】:

我必须打开我上传到 S3 的三个不同 CSV 文件并执行一些逻辑。

位置:my-bucket/config/

文件名:Employee.csv、Organisation.csv、Expenses.csv

我正在尝试使用 python 纠正 lambda 函数,以便在上传任何这些文件时触发我的 lambda 函数,然后通过上传文件的名称,我应该能够识别必须编写的逻辑。伪代码看起来像:

  1. 如果 Employee.csv 在 S3 中上传,请执行以下操作...
  2. 如果在 S3 中上传 Organisation.csv,请执行以下操作...
  3. 如果在 S3 中上传 Expenses.csv,请执行以下操作...

我只需要知道如何纠正“if”条件以匹配 S3 存储桶中的文件名。 此外,我已经在 S3 中上传的任何文件上配置了 lambda 函数的触发器。有什么方法可以将 S3 存储桶配置为仅在上传这三个文件时才触发我的 lambda 函数?

【问题讨论】:

  • 回复:条件触发器,没有。但是您可以随时检查 lambda 中的文件名,如果它不是您感兴趣的文件,则什么也不做。至于其余的,请显示您当前的代码,因为现在听起来像是“为我写这段代码”。
  • 我只需要知道 if 条件,我需要检查 S3 存储桶中的文件名
  • 我不知道 python 所以帮不上忙,但是 lambda 将接收特定结构中的事件(在 AWS 文档中记录),文件名可以在其中访问。因此,使用更具 javascript 风格的伪代码:var fileName = event.Records[0].attributes.key; if (!expectedFileNames.contains(fileName)) { return; } // now you know you're dealing with one of your desired files

标签: python amazon-s3 aws-lambda


【解决方案1】:

通过此代码解决:

def lambda_handler(事件,上下文)

if event:
    file_object=event["Records"][0]
    file_name=str(file_object['s3']['object']['key'])
    print(file_name)

    if(file_name == key):
        #To do logic

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-10
    • 2013-12-13
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 2023-01-30
    相关资源
    最近更新 更多