TL; DR: Вы не можете скомпилировать пакет развертывания на своем Mac или любом другом используемом компьютере.Вы должны сделать это, используя определенную ОС / «настройку», ту же самую, которую AWS Lambda использует для запуска вашего кода.Для этого вы должны использовать EC2.
Я приведу здесь ответ о том, как заставить Google Cloud Vision работать на AWS Lambda для Python 2.7.Этот ответ потенциально может быть распространен на другие API и другие языки программирования в AWS Lambda.
Итак, мое путешествие к решению началось с этой первоначальной публикации на Github с другими пользователями, у которых возникла такая же проблема.,Одно решение, которое кто-то опубликовал, было
У меня возникла та же проблема "невозможно импортировать имя" cygrpc "" при запуске лямбды.Решил это с помощью pip install google-cloud-vision в экземпляре AMI amzn-ami-hvm-2017.03.1.20170812-x86_64-gp2 и экспортировал lib / python3.6 / site-packages в aws lambda Спасибо @ tseaver
Это частично верно, если я не прочитал это неправильно, но, тем не менее, это приведет меня на правильный путь.Вам придется использовать EC2.Вот шаги, которые я предпринял:
- Настройте экземпляр EC2, перейдя в EC2 на Amazon.Кратко прочитайте о AWS EC2, если вы этого еще не сделали.Настройте его для amzn-ami-hvm-2018.03.0.20180811-x86_64-gp2 или что-то в этом духе (то есть самое последнее).
Получите файл EC2 .pem.Идите в свой терминал.Перейдите в вашу папку, где находится ваш .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 перейдите в google-cloud-vision.Запустите команду:
pip install google-cloud-vision -t.
Примечание Если вы получили "bash: pip: команда не найдена", затем введите" sudo easy_install pip " source .
Повторите шаг 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 /
Остановите свой экземпляр EC2 с консоли AWS, чтобы не перегружаться.
Для вашегопакет развертывания, вам понадобится одна папка, содержащая все ваши модули и ваши скрипты Python.Чтобы начать объединение всех модулей, создайте пустую папку под названием «модули».Скопируйте и вставьте все содержимое папки «google-cloud-vision» в папку «modules».Теперь поместите только папку с именем «protobuf» из главной папки «protobuf» (sic) в папку «Google» папки «modules».Также из основной папки «protobuf» вставьте файл Protobuf .pth и папку -info в папку Google.
Для каждого модуля после protobuf скопируйте и вставьте «модули»"папка папка с названием модуля, файлом .pth и папкой" -info ".
Теперь все ваши модули правильно объединены (почти).Чтобы завершить объединение, удалите эти два файла из папки «modules»: googleapis_common_protos-1.5.3-nspkg.pth и google_cloud_vision-0.34.0-py3.6-nspkg.pth.Скопируйте и вставьте все из папки «modules» в папку вашего пакета развертывания.Кроме того, если вы используете GCP, вставьте в файл .json свои учетные данные.
Наконец, поместите ваши скрипты Python в эту папку, заархивируйте содержимое (не папку), загрузите на S3 и вставьте ссылку в свою функцию AWS Lambda и приступайте!
Если что-то здесь не работает, как описано, пожалуйста, прости меня и либо напишите мне, либо не стесняйтесь редактировать мой ответ.Надеюсь, это поможет.