在S3、Lambda和EC2之间共享文件

-2 投票
1 回答
31 浏览
提问于 2025-04-14 17:02

我有一个S3存储桶的事件,这个事件会触发一个lambda函数。我需要这个lambda函数去检查一个附加在EC2实例上的EBS,看一个文件是否在某个目录里。如果文件不在那个目录里,就把它放进去。我该怎么做呢?我主要的问题是lambda和EBS之间的连接。如果有人能帮我就太好了。注意:我不想使用EFS,因为我已经在EBS上有很多文件了。

1 个回答

1

很遗憾,你把“云”基础设施和“传统”虚拟机基础设施搞混了,这可不简单。

AWS Lambda函数是在你的EC2实例之外运行的。而EC2实例使用的Amazon EBS存储卷是由你实例上运行的操作系统来管理的,所以你需要想办法让Lambda函数访问一个“共享磁盘”(这听起来有点麻烦)。

更好的方法是让在EC2实例上运行的软件“拉取”文件,从S3上下载。例如,可以每小时运行一个脚本,使用aws s3 sync命令把文件复制到实例上。

或者,除了触发AWS Lambda函数,你还可以让S3发送一条消息到Amazon SQS队列,然后在EC2实例上运行一些代码,这些代码会从SQS队列中拉取消息并在本地处理文件。这样做比使用Lambda函数更好,因为这段代码可以完全访问磁盘(因为它实际上是在EC2实例上运行的)。

撰写回答