这种情况一般是因为 GCP 账号的权限问题产生的。在本地运行时,使用的可能是默认凭据,而在部署时可能使用的是另一个账号的凭据,导致没有足够的权限执行操作。
为了解决这个问题,可以尝试以下步骤:
from google.oauth2 import service_account
# 构建 Service Account credentials
credentials = service_account.Credentials.from_service_account_file('/path/to/key.json')
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member="serviceAccount:[SERVICE_ACCOUNT_EMAIL]" \
--role="[ROLE]"
其中 [PROJECT_ID] 为您的 GCP 项目 ID,[SERVICE_ACCOUNT_EMAIL] 为服务账号的邮件地址,[ROLE] 为需要添加的 IAM 角色,例如 'cloudfunctions.admin”。
确认您的 Cloud Function 的运行环境与本地运行时相同。这包括硬件规格、计费计划、API 版本等。可以在 GCP Console 中查看 Cloud Function 的详细信息,与您的本地环境进行比较。
如果以上步骤均未解决问题,还可以尝试重新部署 Cloud Function,或联系 GCP 客户支持。