Python 2.7 如何从google.cloud导入模块以在AWS Lambda中使用?

Python 2.7 如何从google.cloud导入模块以在AWS Lambda中使用?,python-2.7,amazon-web-services,google-cloud-storage,aws-lambda,Python 2.7,Amazon Web Services,Google Cloud Storage,Aws Lambda,我正在尝试在AWS Lambda上运行一个脚本,在最后将数据发送到Google云存储(GCS)。当我在本地这样做时,它可以工作,但当我在AWS Lambda上运行脚本时,导入GCS客户端库失败(尽管其他导入工作正常)。有人知道为什么吗 以下是脚本导入的摘录: # main_script.py import robobrowser from google.cloud import storage # ...generate data... # ...send data to storage.

我正在尝试在AWS Lambda上运行一个脚本,在最后将数据发送到Google云存储(GCS)。当我在本地这样做时,它可以工作,但当我在AWS Lambda上运行脚本时,导入GCS客户端库失败(尽管其他导入工作正常)。有人知道为什么吗


以下是脚本导入的摘录:

# main_script.py

import robobrowser
from google.cloud import storage

# ...generate data...
# ...send data to storage...
来自AWS的错误消息:

无法导入模块“主脚本”:没有名为google.cloud的模块

为了确认问题出在google客户端库导入上,我在AWS Lambda中运行了这个脚本的一个版本,有GCS导入和没有GCS导入(注释掉后面对它的引用),当注释掉GCS客户端库导入时,脚本照常运行,没有导入相关错误。其他导入(
robobrowser
)在本地和AWS上始终工作正常

我使用的是一个virtualenv,python设置为2.7.6。要部署到AWS Lambda,我将执行以下手动过程:

  • 压缩虚拟环境的pip包:
cd~/.virtualenvs/{PROJECT_NAME}/lib/python2.7/站点包

zip-r9~/code/{PROJECT\u NAME}.zip*

  • 压缩项目内容,将其添加到与上面相同的压缩:
zip-g~/code/{PROJECT\u NAME}.zip*

  • 将zip上传到AWS并使用web控制台进行测试
以下是在
~/.virtualenvs/{PROJECT\u NAME}/lib/python2.7/site packages
中运行
的结果的子集:

...
│
├── google
│   ├── ...
│   ├── cloud
│   │   ├── _helpers.py
│   │   ├── _helpers.pyc
│   │   ├── ...
│   │   ├── bigquery
│   │   │   ├── __init__.py
│   │   │   ├── __init__.pyc
│   │   │   ├── _helpers.py
│   │   │   ├── _helpers.pyc
│   │   ├── ...
│   │   ├── storage
│   │   │   ├── __init__.py
│   │   │   ├── __init__.pyc
│   │   │   ├── _helpers.py
│   │   │   ├── _helpers.pyc
├── robobrowser
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── browser.py
│   ├── browser.pyc
│   ├── ...
...

解压并检查zip的内容,确认在压缩过程中此结构保持不变。

我能够通过将
\uuu init\uuuuuuuuuuuupy
添加到
google
google/cloud
安装中的
pip
目录中来解决此问题。尽管当前的
googlecloud
package(0.24.0)表示支持python2.7,但使用
pip
下载的包结构似乎给我带来了问题

为了报告所有内容,在完成此操作之后,我还遇到了一个单独的问题:AWS lambda无法将主脚本作为模块导入。我通过从头开始一步一步地重新创建回购协议来解决这个问题。我没能找出第二个问题的原因,但是嘿。计算机。

非常感谢:)我一直在浪费两个小时来解决这个问题。谷歌云API文档和库太糟糕了。。。与AWS没有可比性。