Есть ли способ запустить уже созданный python API из Google Cloud?

#python #python-3.x #google-cloud-platform #google-cloud-storage

#python #python-3.x #google-cloud-platform #google-облачное хранилище

Вопрос:

Я создал функционирующий python API, который запускается с моего локального компьютера. Я хотел бы запустить этот API из Google Cloud SDK, но после просмотра документации и поиска в Google всех вариантов «запустить локальный python API из Google Cloud SDK» мне не удалось найти ничего, что не потребовало бы от меня серьезной реструктуризации скрипта. У меня есть подозрение, что «google run» или «Конечная точка API» могут быть тем, что я ищу, но как полный новичок во всем, кроме Firestore (в который я бы предпочел не конвертировать весь свой api, если мне это не нужно), я хочу спросить, есть ли простой способспособ сделать это.

tl; dr API успешно запускается, когда я просто набираю «python apiscript.py » в локальную консоль, есть ли способ, которым я могу перенести его в Google Cloud, не слишком сильно настраивая сам скрипт?

Ответ №1:

ИМО, самое простое решение для портативного приложения — использовать контейнер. А для размещения контейнера в бессерверном режиме вы можете использовать Cloud Run .

В руководстве по началу работы у вас есть пример python. Основная задача для вас — создать Dockerfile

 FROM python:3.9-slim

ENV PYTHONUNBUFFERED True

# Copy local code to the container image.
ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./

# Install production dependencies.
RUN pip install -r requirements.txt

CMD python apiscript.py
 

Я адаптировал скрипт к вашему описанию и предположил, что у вас есть requirements.txt файл для зависимостей.

Теперь создайте свой контейнер

 gcloud builds submit --tag gcr.io/<PROJECT_ID>/apiscript
 

Замените PROJECT_ID своим идентификатором проекта, а не именем проекта (даже если иногда это одно и то же, это распространенная ошибка для новичков)

Развертывание в облачном режиме

 gcloud run deploy --region=us-central1 --image=gcr.io/<PROJECT_ID>/apiscript --allow-unauthenticated --platform=managed apiscript
 

Я предполагаю, что ваш API обслуживается на порту 8080. иначе вам нужно добавить --port параметр, чтобы переопределить это.

Этого должно быть достаточно


Здесь это пример начала работы, вы можете изменить регион, режим безопасности (здесь нет безопасности), имя и проект.

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

Комментарии:

1. На каком этапе у вас возникает эта проблема? имя изображения должно быть только в нижнем регистре, и вы не можете использовать _ underscore

2. Проблема заключалась в подчеркивании. Спасибо за помощь!