如何通过python lambda函数运行shell命令?



我试图使用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原生支持的语言编写的包来提供您的用例需求。

相关内容

  • 没有找到相关文章

最新更新