我有一个包含一组 Python AWS lambda 的 monorepo,并且我正在使用Bazel来构建和打包 lambda。我现在尝试使用 Bazel 创建一个遵循预期AWS Lambda 打包的zip 文件,并且我可以将其上传到 Lambda。想知道使用 Bazel 执行此操作的最佳方法是什么?
以下是我迄今为止尝试过的一些不同的事情:
尝试1:py_binary
构建.bazel
py_binary(
name = "main_binary",
srcs = glob(["*.py"]),
main = "main.py",
visibility = ["//appcode/api/transaction_details:__subpackages__"],
deps = [
requirement("Faker"),
],
)
Run Code Online (Sandbox Code Playgroud)
问题:
这会生成以下内容:
Lambda 期望处理程序的格式为lambda_function.lambda_handler. 由于main_binary是可执行文件而不是 python 文件,因此它不会公开实际的处理程序方法,并且 lambda 会因为找不到它而崩溃。我尝试更新处理程序配置以简单地指向main_binary但它爆炸了,因为它需要两个参数(即lambda_function.lambda_handler)。
尝试2:py_library + pkg_zip
构建.bazel
py_library(
name = "main",
srcs = glob(["*.py"]),
visibility = ["//appcode/api/transaction_details:__subpackages__"],
deps = [
requirement("Faker"), …Run Code Online (Sandbox Code Playgroud)