【问题标题】:Is there a way to run an already-built python API from google cloud?有没有办法从谷歌云运行已经构建的 python API?
【发布时间】:2021-05-27 09:20:32
【问题描述】:

我构建了一个在本地机器上运行的功能 Python API。我想从谷歌云 SDK 运行这个 API,但是在查看了文档并搜索了“从谷歌云 SDK 运行本地 python API”的每个变体之后,我没有找到任何不涉及我大量重组脚本的东西.我有一种预感,“谷歌运行”或“API 端点”可能是我正在寻找的东西,但作为 Firestore 以外所有东西的完整新手(如果我没有的话,我宁愿不将我的整个 api 转换成to),我想问一下是否有一种简单的方法可以做到这一点。

tl;dr 当我在本地控制台中简单地键入“python apiscript.py”时,API 会成功运行,有没有一种方法可以在不过多调整脚本本身的情况下将其传输到 Google Cloud?

【问题讨论】:

    标签: python python-3.x google-cloud-platform google-cloud-storage


    【解决方案1】:

    IMO,便携式应用最简单的解决方案是使用 Container。要以无服务器模式托管容器,您可以使用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 替换为您的项目 ID,而不是项目名称(即使有时相同,但对于新手来说这是一个常见的错误)

    在 Cloud Run 上部署

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

    我假设您的 API 在端口 8080 上提供服务。否则您需要添加 --port 参数来覆盖它。

    应该够了


    这是一个入门示例,您可以更改区域、安全模式(这里没有安全)、名称和项目。

    此外,对于此部署,使用了 Compute Engine 默认服务帐号。您可以根据需要使用其他服务帐号,但在任何情况下,您都需要授予使用的服务帐号访问 Firestore 数据库的权限。

    【讨论】:

    • 您在哪一步遇到了这个问题?图片名称只能小写,不能使用_下划线
    • 下划线是问题所在。感谢您的帮助!
    猜你喜欢
    • 2020-04-17
    • 2022-12-23
    • 2021-08-24
    • 2017-09-26
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多