【发布时间】:2022-08-14 17:49:22
【问题描述】:
我正在尝试通过 AWS Lambda 运行带有 JMeter 脚本的 BlazeMeter Taurus 脚本。我希望有一种方法可以通过/tmp/bzt 中的本地安装运行 bzt,而不是在系统上寻找自 lambda 以来并不存在的 bzt 安装。
这是我的lambda_handler.py:
import subprocess
import json
def run_taurus_test(event, context):
subprocess.call([\'mkdir\', \'/tmp/bzt/\'])
subprocess.call([\'pip\', \'install\', \'--target\', \'/tmp/bzt/\', \'bzt\'])
# subprocess.call(\'ls /tmp/bzt/bin\'.split())
subprocess.call([\'/tmp/bzt/bin/bzt\', \'tests/taurus_test.yaml\'])
return {
\'statusCode\': 200,
\'body\': json.dumps(\'Executing Taurus Test hopefully!\')
}
taurus_test.yaml 在通过 pip 正常安装 bzt 的计算机上进行测试时按预期运行,所以我知道问题不在于测试脚本。如果我从系统中卸载 bzt 并尝试使用以某个目录为目标的本地安装,则会出现与以下相同的回溯。
这是执行结果中的回溯:
Traceback (most recent call last):
File \"/tmp/bzt/bin/bzt\", line 5, in <module>
from bzt.cli import main
ModuleNotFoundError: No module named \'bzt\'
它在/tmp/bzt/bin/bzt 中技术上失败了,这是失败的可执行文件,我认为这是因为它没有使用本地/目标安装。
所以,我希望有一种方法可以告诉 bzt 使用 /tmp/bzt 中的目标安装,而不是在那里调用可执行文件,然后尝试将其传递给其他地方不存在的安装。如果 AWS Fargate 或 EC2 更适合于此,我们也非常感谢您提供反馈。
-
可能有一个解决方案涉及将路径添加到
sys.path,但是,您应该考虑将包安装为layer 并使用它。
标签: amazon-web-services aws-lambda blazemeter taurus