Amazon web services 将参数从S3触发器传递到Lambda函数
使用AWS云服务,我使用S3触发器监视一个bucket并调用Lambda函数。然后,此函数将拾取S3对象以填充DynamoDB表 问题是,我现在需要监控多个目录的更改,每个目录都有元数据(对象中不可用),需要传递给DynamoDB。我不知道如何将这个元信息从触发器传递到lambda。我目前为每个目录复制了Lambda,并将元信息保存为每个Lambda的环境变量。这是可行的,但感觉像一个可怕的黑客Amazon web services 将参数从S3触发器传递到Lambda函数,amazon-web-services,amazon-s3,aws-lambda,Amazon Web Services,Amazon S3,Aws Lambda,使用AWS云服务,我使用S3触发器监视一个bucket并调用Lambda函数。然后,此函数将拾取S3对象以填充DynamoDB表 问题是,我现在需要监控多个目录的更改,每个目录都有元数据(对象中不可用),需要传递给DynamoDB。我不知道如何将这个元信息从触发器传递到lambda。我目前为每个目录复制了Lambda,并将元信息保存为每个Lambda的环境变量。这是可行的,但感觉像一个可怕的黑客 如何使用一个Lambda来监视多个目录,将元参数从触发器传递到Lambda?遗憾的是,您无法向S3通
如何使用一个Lambda来监视多个目录,将元参数从触发器传递到Lambda?遗憾的是,您无法向S3通知记录添加额外信息。但是,如果文件夹是同一个bucket的一部分,那么拥有一个lambda可能是一种选择 在我看来,够了 这是基于这样一个事实,即您可以根据S3对象的前缀来区分不同的目录 例如,如果将以下文件上载到bucket:
dir1/file1.csv
dir2/file3.txt
你的lambda会被触发。在lambda中,您可以使用basicif-else
匹配来检查对象前缀是否为dir1
或dir2
。基于此,您可以选择不同的元数据写入dynamodb
非常粗略地说,基于两个文件夹,在lambda函数中可以有(伪代码):
您基本上是这样做的,但是通过env变量将元数据传递给不同的lambda函数。显然,如果要监视多个文件夹,则可以将元数据存储在lambda之外,例如,存储在其他dynamodb表中,或者如果元数据经常更改,则存储在参数存储中
希望这有帮助。lambda functions事件中object.key字段的目录部分不是吗?这证实了这一点。我想避免Lambda中的代码逻辑。还原为将元数据存储在表中并通过目录结构中的键引用的方法,即使用文件的最后一个目录作为键来获取元数据。不漂亮,但我们最好的。谢谢你的确认。
if object_key.beinswith('dir1'):
metadata = {some_metatadata_for_dir1}
elif object_key.beinswith('dir2'):
metadata = {some_metatadata_for_dir2}
dynamodb.put_item({object_key + metadata})