【问题标题】:Lambda trigger dynamic specific path s3 uploadLambda触发动态特定路径s3上传
【发布时间】:2023-01-31 19:21:14
【问题描述】:

我正在尝试创建一个 lambda 函数,一旦将文件夹上传到 S3 存储桶,该函数就会被触发。但是 lambda 将执行将文件保存回同一文件夹的操作,如果没有自调用功能,我怎么能这样做呢?

我想将以下文件夹结构上传到存储桶:

项目_0001/输入/输入.csv

输出将创建并保存在:

Project_0001/output/outputs.csv

但是,我的项目编号会改变,所以我不能简单地分配一个静态前缀。有没有办法动态更改前缀,例如:

项目_*/输入/

【问题讨论】:

  • 1)您可以使用S3对象元数据(用户定义)添加一个名为“Seen”的键,将其设置为“Seen”:“True”。如果对象上不存在元数据键,则不会对其进行处理,您可以继续 lambda 调用并在将对象放入 S3 期间设置此元数据,否则返回。 2) 您可以使用后缀而不是前缀,调用您的文件fileName_processed.csvfileName_unprocessed.csv 只为_unprocessed.csv 添加触发器。 3)你可以在lambda函数运行时动态检查前缀,类似于#1,如果已经处理过则提前返回

标签: amazon-s3 aws-lambda


【解决方案1】:

根据 Shubham 的评论,我使用前缀和后缀起草了我的解决方案。

对于我的情况,我将前缀指定为“Project_”,对于后缀,我为触发器选择了一个特定文件,因此我的后缀是“/input/myFile.csv”。

因此,每次我上传结构 Project_/input/allmyfiles_with_myFile.csv 时,它都会触发该函数,然后我将输出保存在同一项目文件夹中的输出文件夹下,因此不会再次触发该函数。

我使用以下代码获取项目名称

key = event['Records'][0]['s3']['object']['key']
project_id = key.split("/")[0]

【讨论】:

    猜你喜欢
    • 2020-02-09
    • 2019-08-03
    • 2021-06-24
    • 1970-01-01
    • 2018-05-02
    • 2020-05-16
    • 1970-01-01
    • 2022-06-10
    • 2021-10-10
    相关资源
    最近更新 更多