我试图使用maigret (python模块)与python脚本通过lambda函数。
下面是我在本地测试的代码,它工作得很好:def lambda_handler(event, context):
if event["network"] == "facebook":
name = event["name"]
output = subprocess.run("maigret warriors --site Facebook", shell=True, capture_output=True).stdout
print(output) #prints the output as expected locally
但是同样的代码在lambda函数中返回空输出。
如何通过python脚本使用maigret模块或如何在python脚本中运行shell命令?
这是可能的。最终,AWS Lambda只是一个运行Amazon Linux的微型虚拟机。所以运行Bash脚本是可能的。
但是我不会推荐它。在我们开始讨论我的建议之前,我想给您一个概述,如果您绝对必须运行Bash脚本,您可以有两个选项。
选项1:使用自定义运行时
AWS允许您提供自己的运行时(而不是使用AWS提供的默认运行时)。这通常涉及到创建Docker映像或通过部署包提供自定义运行时。您可以在AWS文档中找到一个示例:
https://docs.aws.amazon.com/lambda/latest/dg/runtimes-walkthrough.html
选项2:从代码
运行脚本你也可以把脚本放在你的部署包中,然后在代码中执行:
Python示例:
import os
os.system('/path/to/script.sh')
你应该怎么做
但是所有这些选项都不是你应该做的。我建议您找一个用Lambda原生支持的语言编写的包来提供您的用例需求。