我目前有很多AWS Lambda函数,并且希望将它们每个都旋转到容器(最好是Docker)中,以与当前的CICD管道集成。将这些容器在诸如Fargate之类的Amazon服务中旋转是完全可以的-重要的是必须在容器中旋转这些容器。我找到的最接近的东西是亚马逊的this repo,它将图像转换为Lambda,尽管这与我正在寻找的相反。
这项任务有可能吗?如果可以,最好的方法是什么?
答案 0 :(得分:0)
在幕后,Lambda“函数”是一个Python脚本,用于侦听调用事件并调用实际的处理函数。这意味着您可以使用标准的Python“脚本”代码轻松地调用该函数:
if __name__ == "__main__":
args = # this is the tricky part
ctx = # some dict that looks like what Lambda expects
handler(args, ctx)
这两个参数只是字典,因此,如果您用看起来正确的东西填充它们,则可以将整个东西包装在一个容器中,并将其部署到ECS或Batch或您自己的Docker守护程序中。
问题在于如何填充它们,这取决于lambda函数的作用-您不说-以及如何调用它们-您也不说。
您可以使用命令行参数。例如,如果您的lambda打算响应S3 PutObject
操作,那么您真正需要的只是存储桶和键名。由此,您可以使用其他所有字段的假值轻松创建虚拟S3 invocation event。
如果您调用Lambda来响应SQS消息,则更为简单:您的“主”处理程序进入一个循环,该循环轮询SQS,并重新格式化退出队列的消息。
其他事件源将变得更加困难。将SQS用于所有调用,并仅将完整格式的事件消息传递到队列中,这可能是有道理的(具体取决于您执行此操作的原因)。