You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gsutil本地运行正常但部署至GCP后失效求助

解决GCP部署后gsutil命令无法工作的问题

1. 检查服务账号权限

GCP Run默认使用的Compute Engine默认服务账号(格式:[PROJECT_NUMBER]-compute@developer.gserviceaccount.com)大概率没有访问Firebase存储桶的权限:

  • 进入GCP IAM控制台,找到该服务账号
  • 为其添加Storage Object Viewer角色,或者更精细的权限:针对gs://mk-dev.appspot.com存储桶的storage.objects.get和storage.objects.list权限

2. 替换gsutil的安装方式

通过pip install gsutil安装的是第三方包,存在依赖缺失或环境适配问题,建议改用官方Google Cloud SDK安装:
修改Dockerfile如下:

FROM python:3.7-slim
ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . ./
ENV PORT 1234

# 安装官方Google Cloud SDK(包含原生gsutil)
RUN apt-get update && apt-get install -y curl gnupg
RUN echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
RUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
RUN apt-get update && apt-get install -y google-cloud-sdk

RUN pip install --no-cache-dir -r requirements.txt
RUN pipenv install --deploy --system 
CMD exec uvicorn main:app --host 0.0.0.0 --port ${PORT} --workers 1

3. 修正命令语法并改用subprocess捕获错误

原命令的引号嵌套可能在容器shell中解析异常,且os.system无法捕获详细错误,建议替换为:

import subprocess
import os

# 提前创建下载目录,避免因目录不存在导致静默失败
os.makedirs('./download', exist_ok=True)

# 执行命令并捕获完整输出
result = subprocess.run(
    ['gsutil', '-m', '-d', 'cp', '-r', 'gs://mk-dev.appspot.com/Images/Project/XD03+400', './download'],
    capture_output=True,
    text=True
)

# 输出调试信息(可写入应用日志)
print("GSUTIL STDOUT:", result.stdout)
print("GSUTIL STDERR:", result.stderr)
print("GSUTIL RETURN CODE:", result.returncode)
  • -d参数开启调试模式,输出更详细的执行日志
  • subprocess.run能捕获命令的标准输出、错误输出和返回码,便于精准定位问题

4. 排查GCP Run完整日志

即使本地无报错,也要检查GCP Run的全量日志:

  • 进入GCP Cloud Run控制台,找到对应的服务
  • 查看日志标签页,筛选包含gsutil的日志条目,确认是否有被忽略的错误信息

内容的提问来源于stack exchange,提问作者Mateusz Reczek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 19:16:25