首页 > 解决方案 > 允许 Python 模块写入 AWS Lambda 上的磁盘

问题描述

我在 AWS Lambda 上使用 Python 模块 googlesearch,但它抛出错误 - 我怀疑是因为它想根据 AWS Lambda 上不存在的文件夹结构将 cookie 写入磁盘。

此外,AWS Lambda 只允许写入 /tmp/

该怎么办?我唯一能想到的就是从 github 下载模块代码并集成到我的 Python 脚本中——真的不想走那条路……

感谢您的任何建议...

这是 AWS Lambda 错误报告:

Errno 30] Read-only file system: './.google-cookie': OSError
Traceback (most recent call last):
File "/var/task/scriverto.py", line 176, in lambda_handler
url_list = generate_URL_list(query,n) #call URL generator routine in gsearch
File "/var/task/scriverto.py", line 58, in generate_URL_list
for url in search(query, tld = "co.uk", lang='en', pause = 2, stop=n): 
#can also add tld to limit to country e.g. tld='uk
File "/var/task/googlesearch/__init__.py", line 330, in search
get_page(url_home % vars())
File "/var/task/googlesearch/__init__.py", line 151, in get_page
cookie_jar.save()
File "/var/lang/lib/python3.6/http/cookiejar.py", line 1875, in save
with open(filename, "w") as f:
OSError: [Errno 30] Read-only file system: './.google-cookie'

标签: pythonpython-3.xamazon-web-servicesaws-lambdagoogle-search

解决方案


阅读模块的源代码googlesearch

# Cookie jar. Stored at the user's home folder.
home_folder = os.getenv('HOME')
if not home_folder:
    home_folder = os.getenv('USERHOME')
    if not home_folder:
        home_folder = '.'   # Use the current folder on error.
cookie_jar = LWPCookieJar(os.path.join(home_folder, '.google-cookie'))
try:
    cookie_jar.load()
except Exception:
    pass

看来您可以设置环境变量HOMEUSERHOME/tmp导致googlesearch使用这些位置将 cookiejar 写入磁盘的环境变量。


推荐阅读