我将在这里提供一个关于如何让GoogleCloudVision在针对Python2.7的AWS lambda上工作的答案。这个答案对于其他API和其他AWS lambda上的编程语言可能是可扩展的。
所以我的解决之旅始于
this initial posting
在Github上与其他有相同问题的人讨论。有人发布的一个解决方案是
我在运行时遇到同样的问题“cannot import name'cygrpc'”
兰巴达。在AMI中用pip安装Google Cloud Vision解决了这个问题
amzn-ami-hvm-2017.03.1.20170812-x86_-gp2实例并导出
lib/python3.6/site-packages到aws lambda谢谢@tseaver
这是部分正确的,除非我读错了,但不管它引导我走上正确的道路。您必须使用EC2。以下是我采取的步骤:
-
通过转到Amazon上的EC2来设置EC2实例。如果您还没有,请快速阅读有关AWS EC2的信息。为amzn-ami-hvm-2018.03.0.20180811-x86_-gp2或其他线路设置一个(即最新的线路)。
-
获取ec2.pem文件。去你的终点站。将CD放入.pem文件所在的文件夹中。在实例中使用ssh
ssh-i“your file name here.pem”ec2-user@ec2-ip-address-here.compute-1.amazonaws.com
-
使用mkdir在实例上创建以下文件夹:google cloud vision、protobuf、google api python client、httplib2、uritemplate、google-auth-httplib2。
-
在您的EC2实例上,将CD转换为Google Cloud Vision。运行命令:
pip安装google cloud vision-t。
-
对以下包重复步骤4,同时将其放入相应的文件夹:protobuf、google api python client、httplib2、uritemplate、google-auth-httplib2。
-
复制计算机上的每个文件夹。您可以使用scp命令执行此操作。同样,在您的终端中,不是您的EC2实例,也不是您用来访问EC2实例的终端窗口中,运行该命令(下面是您的“Google Cloud Vision”文件夹的示例,但对每个文件夹重复此操作):
sudo scp-r-i your-pem-file-name.pem ec2 user@ec2 ip address here.compute-1.amazonaws.com:~/google cloud vision~/documents/your local directory/
-
从AWS控制台停止您的EC2实例,这样您就不会被过度收费。
-
对于部署包,需要一个包含所有模块和Python脚本的文件夹。要开始组合所有模块,请创建一个名为“模块”的空文件夹。将“Google Cloud Vision”文件夹的所有内容复制并粘贴到“模块”文件夹中。现在只将“protobuf”(sic)主文件夹中名为“protobuf”的文件夹放在“modules”文件夹的“google”文件夹中。另外,从“protobuf”主文件夹中,将protobuf.pth文件和-info文件夹粘贴到google文件夹中。
-
对于Protobuf之后的每个模块,复制并粘贴到“modules”文件夹中,文件夹标题为模块名、.pth文件和“-info”文件夹。
-
现在您已经将所有模块正确组合(几乎)。要完成组合,请从“模块”文件夹中删除这两个文件:googleapis_common_protos-1.5.3-nspkg.pth和google_cloud_vision-0.34.0-py3.6-nspkg.pth。将“模块”文件夹中的所有内容复制并粘贴到部署包文件夹中。另外,如果您使用的是gcp,也可以将其粘贴到.json文件中以获取凭证。
-
最后,将您的python脚本放在这个文件夹中,压缩
内容
(不是文件夹),上传到S3,并将链接粘贴到您的AWS lambda函数中,然后开始!
如果这里的一些东西不能像描述的那样工作,请原谅我,或者给我留言,或者随意编辑我的答案。希望这有帮助。