调用Gemini API分析视频遇403权限拒绝错误,求排查方向
解决Vertex AI Gemini API 403权限拒绝(CONSUMER_INVALID)问题
核心排查方向
错误返回的CONSUMER_INVALID标识明确指向Vertex AI服务的权限问题,而非存储桶,可按以下步骤逐一验证:
1. 确认Vertex AI API已启用
检查当前项目是否开启了Vertex AI API,未启用该API会直接触发权限拒绝错误。
2. 验证服务账号权限
确保使用的服务账号至少拥有以下角色之一:
- Vertex AI用户(roles/aiplatform.user)
- Vertex AI管理员(roles/aiplatform.admin)
- 包含
aiplatform.predictions.generateContent权限的自定义角色
3. 简化代码认证逻辑
你的代码中同时存在vertexai.init()和手动加载凭证的操作,可能导致认证冲突,简化后的代码如下:
!pip3 install --upgrade --user google-cloud-aiplatform import os import vertexai from vertexai.preview.generative_models import GenerativeModel, Part PROJECT_ID = "[my-project-id]" LOCATION = "asia-northeast2" SERVICE_ACCOUNT_KEY_FILE = 'my-json-path' # 设置环境变量后直接初始化vertexai,无需手动处理凭证刷新 os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = SERVICE_ACCOUNT_KEY_FILE vertexai.init(project=PROJECT_ID, location=LOCATION) gemini_model = GenerativeModel("gemini-pro-vision") video_uri = f"gs://video/highlight_001.mp4" video = Part.from_uri(video_uri, mime_type="video/mp4") response = gemini_model.generate_content( [ video, """Answer the following questions below with yes or no. - Is there a person laughing loudly in the video? """ ] ) print(response)
4. 确认服务账号归属
检查服务账号是否属于当前配置的PROJECT_ID,避免使用了其他项目的服务账号密钥文件。
5. 备用:存储桶权限验证
若上述步骤无效,可额外确认服务账号对视频所在GCS存储桶拥有storage.objects.get权限,可添加存储桶查看者(roles/storage.objectViewer)角色进行验证。
内容的提问来源于stack exchange,提问作者doyikim
相关产品推荐
相关产品推荐

