amazon-web-services - AWS Lambda 层可以在没有函数/处理程序调用层的情况下拦截 Lambda 函数处理程序吗?
问题描述
我正在研究 AWS Lambda 层的功能,并试图确认该层是否可以在 Lambda 函数不具备任何知识/与该层交互的情况下添加行为。
我对文档的理解是,Layers 实际上是一个解压缩到 Lambda 实例的 .zip 文件,主要用于交付资源,而不需要直接使用 Lambda 函数/处理程序打包这些资源。例如,使用 Layers 部署运行时(可执行文件)或共享资源(例如二进制依赖项)是有据可查的——在这两种情况下,Function 本身都会调用或引用 Layer 内容。
我的问题是一个完全独立的层是否可以向/围绕 Lambda 函数添加行为。例如,假设我想要一个简单地呼应“Hello World”的新层——是否可以将一个层部署到现有函数,而函数没有对该层的任何引用?
解决方案
查看Lambda API 扩展。这些提供了一种方法来执行您所描述的操作,并且它们被部署为层,但它是扩展方面,它允许与典型层中的依赖代码进行不同的交互。另请参阅https://aws.amazon.com/blogs/compute/introducing-aws-lambda-extensions-in-preview/
不是扩展的层本质上不是这样工作的。这是一个常见的编码概念,尤其是在 Web 设置中,具有一个模块管道,这些模块可以在传入请求上进行交互,并且可以修改请求甚至在它到达核心代码之前终止它,但这不是层通常的运作方式.
相反,层用于核心代码中的运行时依赖项。它们之所以起作用,是因为核心代码中的某些内容导入/引用了它们。没有这样的引用,代码就坐在那里并且未被使用。
名称“层”可能会给人一种错误的印象,即这些是包装核心代码的代码模块,或者流程在到达您的代码 lambda 函数代码之前通过这些层,但实际上是扩展方面赋予了它们能力你问一下。
AWS Lambda 执行环境提供了有用的视觉效果 :
另见
推荐阅读
- opengl - 如何在 Racket 中使用 OpenGL 绘制三角形
- keystore - 5 谷歌开发者账号将被终止
- typescript - 打字稿'tsc'编译器挂在构建管道中
- javascript - 尝试从 TOML 文件向 JSON 对象添加键/值。为什么会失败?
- docker - 使用无根 docker 创建的绑定挂载在主机上有一个奇怪的 uid。如何删除这些文件夹?
- python - 为什么我的程序不会像我编写的那样过滤掉停用词和标点符号?(Python & NLTK)
- paypal - 如何进行多次付款
- python - “房间”类没有“对象”成员
- node.js - 不和谐音频播放器
- json - 格式化数组/对象时出现 Jq tsv 错误