繁体   English   中英

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

[英]How to run shell command through python lambda funciton?

我正在尝试通过 lambda 函数将 maigret(python 模块)与 python 脚本一起使用。

下面是我在本地测试过的代码,运行良好:

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 本地支持的语言编写的程序包来满足您的用例需求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM