我需要使用 AWS Lambda 运行 HTTPie 命令
- 我为 HTTPie 创建了一个层
- 向我的 python 函数添加了层
- 从 AWS Lambda 运行我的 HTTPie 命令,如下所示
import subprocess
def lambda_handler(req, context):
result = subprocess.call("/opt/python/bin/http GET https://reqres.in/api/users?page=2", shell=True)
return result
功能日志:
/bin/sh: /opt/python/bin/http: 权限被拒绝
要求:
我使用 HTTPie 而不是请求的原因是我需要对我的请求使用不同的身份验证机制。对于请求,我无法使用其他重要的业务要求的身份验证机制进行 http 调用。以下是我们将使用的一些示例,HTTPie 提供了所有这些插件
签名、ApiAuth、AWS Auth、HMAC、JWTAuth、OAuth、OAuth2 等
到目前为止尝试的解决方案
- 创建一个包而不是层,为该包分配所有权限,压缩它,将所有权限分配给 zip 以及“chmos -R 777 文件夹”并作为 zip 上传到 lambda。这仍然给了我同样的问题。
- 在使用 http 之前将此添加到我的代码中
- 结果 = subprocess.call("chmod -R 777 /opt/python/bin/http", shell=True)
- chmod:更改“/var/task/lokesh/bin/http”的权限:只读文件系统
- /bin/sh: /var/task/lokesh/bin/http: 权限被拒绝