我已经设置了 bazel 来构建许多执行各种数据库维护任务的 CLI 工具。每个都是一个py_binary或cc_binary目标,从命令行调用,并带有指向某个数据文件的路径:它处理该文件并将结果存储在数据库中。
现在,我需要创建一个依赖包,其中包含调用这些 CLI 工具来执行特定于应用程序的数据库操作的数据文件和 shell 脚本。
但是,似乎没有办法依赖于仅包含目标和数据文件的新包中的现有py_binary或cc_binary目标sh_binary。尝试这样做会导致如下错误:
ERROR: /workspace/shbin/BUILD.bazel:5:12: in deps attribute of sh_binary rule //shbin:run: py_binary rule '//pybin:counter' is misplaced here (expected sh_library)
Run Code Online (Sandbox Code Playgroud)
有没有办法从 shell 脚本调用/依赖现有的 bazel 二进制目标sh_binary?
我在这里实现了一个完整的例子:https : //github.com/psigen/bazel-mixed-binaries
笔记:
我不能用py_libraryandcc_library代替py_binaryand cc_binary。这是因为(a)我需要调用两种语言的混合来处理我的数据文件,并且(b)这些工具来自上游存储库,它们已经被设计为 CLI 工具。
我也无法将所有数据文件放入 CLI 工具包中——有多个特定于应用程序的包,它们不能混合使用。
我正在尝试创建一个AWS StepFunctions工作流程,其中有一个Lambda任务,后跟一个ECS/Fargate任务。
Lambda 将 ID 作为输入,并以 JSON 形式输出一些数据,供 ECS 任务使用,该任务在其容器环境中运行 Python 脚本。我想在 StepFunctions 中执行以下流程:
{ id: 1234 } -> [Lambda] -> { id: 1234, data: {...} }
{ id: 1234, data: {...} } -> [ECS] -> { id: 1234, result: "bar"}
Run Code Online (Sandbox Code Playgroud)
作为参考,以下是 ECS 任务的示例配置: https://docs.aws.amazon.com/step-functions/latest/dg/sample-project-container-task-notification.html
我无法找到任何方法将inputECS 任务的结构化 JSON 传递到运行该任务的容器。
以下是我迄今为止发现的内容:
input对象 ( $) 分配给环境变量,则它会在运行时失败并出现序列化错误 ( [Object] cannot be converted to a string)。