代码之家  ›  专栏  ›  技术社区  ›  jbuddy_13

AWS Lambda中的竞争条件-文件锁定和异步等待?

  •  0
  • jbuddy_13  · 技术社区  · 3 年前

    我有一个S3 bucket,它定期接收上传。csv上传后,会触发lambda函数来读取文件,执行一些处理步骤,读取json文件,并更新json文件以包含csv中的数据。

    这支持一个内部工具;所以我预计不会有几十个,更不用说数千个并发请求了。但是,<=可能会出现5个并发请求。

    如果两个同事同时上传一个csv文件,lambda将检索相同的json文件并更新它。第一次lambda调用将被第二次有效地擦除。

    我明白了 S3 object lock 允许我在对象被锁定时阻止读/写操作。更为复杂的是,生产应用程序将每小时读取此JSON文件几次。因此全局锁定文件不是一种选择。

    问题

    1. 我可以将文件锁定到吗 特定应用程序 ,而不是全球?(例如:仅限于我的lambda函数)

    2. AWS Lambda能否支持异步功能(例如:Python中的asyncio)?

    3. 如果支持async,并且我可以锁定特定于Lambda函数的JSON文件,那么Lambda函数是否可以等待文件解锁?

    4. 我是不是过于复杂了?也许我可以将并发性降低到1次调用,并使用SQS对请求进行排队。

    1 回复  |  直到 3 年前
        1
  •  0
  •   chunzhong zhang    3 年前

    问题1,没有。

    一些背景知识

    1. 对象锁包括合法持有和保留锁(以及两种保留模式:合规和治理),合法持有具有开/关状态,保留具有锁定util日期(如果日期在锁定util日期之前,则不能删除对象)。如果您有权限,治理模式可以在锁定util日期之前禁用锁定。

    2. 当一个json文件被对象锁定时,再次写入相同的位置文件,它不会被覆盖,它会生成一个新版本。因此,如果避免这种情况,则需要不同的json文件名。