Функция Google Cloud - ошибка загрузки функции: файл main.py, который, как ожидается, определит функцию, не существует

2

Я пытаюсь реализовать функцию Google Cloud, основанную на коде в репозитории стиля Git. У меня есть код, связанный с Google Cloud Platform "Исходные репозитории", и моя функция работает нормально, когда я копирую и вставляю код в функцию GCP "Встроенный редактор". Когда я переключаюсь в "Репозиторий облачного источника", я могу сказать, что он читает из этого репозитория; Я работал с другими ошибками до этого. Однако, после решения предыдущих/других вопросов, теперь я получаю эту ошибку:

Function load error: File main.py that is expected to define function doesn't exist

мои файлы находятся в структуре, подобной этой, с main.py в корневом каталоге:

.
├── package
|   ├──script1.py
|   └──script2.py
├── package2
├── ...
├── main.py
└── requirements.txt

Он отлично читает main.py requirements.txt (некоторые из предыдущих ошибок были main.py из этого процесса чтения), но почему это не чтение из main.py? Моя настройка в функции GCP выглядит так:

Изображение 174551

Я попытался переместить main.py в другой каталог проекта и установить "Каталог с исходным кодом" в этот каталог, но это дало мне ошибку, говоря, что он не смог найти этот каталог. Любые конструктивные идеи?

Изменить/Дополнительная информация

Я использую ветку из моего репозитория, отличного от master, и я использую триггер темы Cloud Cloud для Google для этой функции.

  • 0
    Все выглядит правильно. Как вы развертываете эту функцию после внесения изменений?
  • 0
    Я нажимаю на Bitbucket, и это синхронизируется с «репозиториями исходного кода» Google. Я проверил, что синхронизация происходит очень быстро (~ 1-2 секунды). Я только что обновил страницу Google "Source Repositories", чтобы убедиться ... Все еще не работает.
Теги:
google-cloud-functions

3 ответа

3
Лучший ответ

Вы перераспределяете функцию после нажатия новых коммитов? Вам нужно будет сделать что-то вроде:

gcloud functions deploy NAME \
  --source https://source.developers.google.com/projects/PROJECT_ID/repos/REPOSITORY_ID/moveable-aliases/master/paths/SOURCE \
  TRIGGER

Дополнительную информацию см. на странице https://cloud.google.com/functions/docs/deploying/repo.

  • 0
    По некоторым причинам перемещение main.py в папку PACKAGE , а затем использование следующей команды работало, в то время как другие опции не gcloud functions deploy NAME --source https://source.developers.google.com/projects/PROJECT_ID/repos/REPOSITORY_ID/moveable-aliases/BRANCH_NAME/paths/PACKAGE/ --trigger-topic TOPIC : gcloud functions deploy NAME --source https://source.developers.google.com/projects/PROJECT_ID/repos/REPOSITORY_ID/moveable-aliases/BRANCH_NAME/paths/PACKAGE/ --trigger-topic TOPIC
  • 0
    Любая идея, почему я не смог успешно настроить эту функцию с помощью веб-интерфейса для функций GCP?
0

У меня была похожая (возможно, такая же?) Проблема. Что случилось со мной, так это то, что все мои файлы были в формате:

  1. [имя файла zip]/main.py
  2. [имя файла zip/[и т.д.]

и ошибка продолжала говорить, что она не может найти главное. Я догадывался, что это потому, что у него была родительская папка. Посмотрев немного на молнию в родителе, я решил, что это не проблема.

Я скачал zip of и посмотрел на автоматически сгенерированный код облачной функции диалогового потока и заметил, что у них есть файл "package.json". У меня вместо этого был только файл "needs.txt". Я скопировал файл package.json в свой исходный код, отредактировал его для правильного содержимого, заархивировал, и облачная функция скомпилирована правильно.

package.json выглядит так:

{
  "name": "test",
  "description": "testingThings",
  "version": "0.0.1",
  "private": true,
  "license": "Apache Version 2.0",
  "author": "ABCDEFG",
  "engines": {
    "node": "8"
  },
  "scripts": {
    "start": "firebase serve --only functions:test",
    "deploy": "firebase deploy --only functions:test"
  },
  "dependencies": {
    "google-cloud-storage": "",
    "google-cloud-firestore": "",
  }
}

Я считаю, что они используют это для развертывания облачных функций Google, поэтому без них они ломаются.

0

Если вы пытаетесь загрузить свой zip-код с помощью корзины GCS или функции загрузки файлов, убедитесь, что вы не заархивировали папку, содержащую ваш код, а только файлы кода.

CodeFolder
├── package
|   ├──script1.py
|   └──script2.py
├── package2
├── ...
├── main.py
└── requirements.txt

НЕ создавайте Zip файл из CodeFolder.

Вместо этого создайте почтовый файл из main.py и requirement.txt и package.

Источник

Ещё вопросы

Сообщество Overcoder
Наверх
Меню