Google BigQuery的Google App Engine授权 - 多个项目

时间:2015-08-06 10:28:55

标签: python google-app-engine authentication google-bigquery service-accounts

我正在运行在GAE上使用相同源代码(python)的多个项目。我目前正在尝试在这些项目中包含BigQuery功能。我已经在所有项目上启用了BigQuery API,使用新的开发人员控制台成功地从GCS将一些数据导入BigQuery。 我能够使用来自某些项目的AppAssertionCredentials从GAE应用程序进行查询,但得到 403" Access Not Configured。您的项目未启用API(BigQuery API)。请使用Google Developers Console更新您的配置。" 其他人的错误。

tl;带有BigQuery的AppAssertionCredentials对某些项目失败,而对其他项目失败(相同的源代码)

所有项目都有BigQuery API并启用了结算我遵循了Google App Engine authorization for Google BigQuery

的所有步骤

项目之间的唯一区别在于它们的创建方式。

  1. 原创项目:
    • project_id: project_A
    • service_account: project_A@appspot.gserviceaccount.com
  2. 第二个项目:
    • project_id: project_B
    • service_account: project_B@appspot.gserviceaccount.com
  3. 第三个项目(从poject_A克隆):
    • project_id: project_C
    • service_account: project_A@appspot.gserviceaccount.com
  4. 第三个项目 project_C 是使用旧的appengine控制台的克隆功能创建的,这就是它共享同一个服务帐户电子邮件的原因。这是AppAssertionCredentials在尝试查询BigQuery时失败的项目(尽管在使用相同凭据向GCS进行身份验证时一切正常)

    我已将 project_A@appspot.gserviceaccount.com 添加到project_C权限列表,其中包含"编辑"权限 - 没有帮助。服务发现代码:

    from googleapiclient.discovery import build
    from oauth2client.appengine import AppAssertionCredentials
    
    credentials = AppAssertionCredentials('https://www.googleapis.com/auth/bigquery')
    return build('bigquery', 'v2', credentials=credentials)
    

    是否有解决方法此问题或者我需要检查的其他任何内容?我真的想避免使用除AppAssertionCredentials之外的任何其他授权方法。

0 个答案:

没有答案