Google Cloud Service帐户VS。最终用户帐户

时间:2019-03-15 02:50:42

标签: python google-cloud-platform google-cloud-datastore gcloud google-cloud-iam

我目前正在学习GCP,需要在VM实例中运行python笔记本。打开VM的外壳时,我运行了以下代码:

sudo install python-pip
pip install --upgrade google-api-python-client
pip install --upgrade google-cloud-datastore
gcloud auth application-default login

然后我加载了python笔记本。运行此代码以启动笔记本时:

python mynotebook.py

我收到以下错误:

/home/rnby87/.local/lib/python2.7/site-packages/google/auth/_default.py:66: UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK. We recommend that most server applications use service accounts instead. If your application continues to use end user credentials from Cloud SDK, you might receive a "quota exceeded" or "API not enabled" error. For more information about service accounts, see https://cloud.google.com/docs/authentication/warnings.warn(_CLOUD_SDK_CREDENTIALS_WARNING)

我正在运行Google Cloud SDK文档(https://cloud.google.com/datastore/docs/datastore-api-tutorial

中的python代码。
from google.cloud import datastore 

def create_client(project_id):
     return datastore.Client(project_id)

非常感谢您的帮助!谢谢!

1 个答案:

答案 0 :(得分:0)

对于Google Cloud SDK和CLI,您应该使用服务帐户凭据。

步骤1:创建服务帐户并下载

  1. 登录到Google Cloud Console。
  2. 转到IAM和管理员->服务帐户
  3. 点击创建服务帐户
  4. 输入服务帐户名称和服务帐户说明
  5. 点击创建
  6. 在下一屏幕“服务帐户权限”中,选择一个角色。
  7. 添加所需的角色。
  8. 点击继续
  9. 点击创建密钥
  10. 检查JSON单选按钮的密钥类型
  11. 将json文件保存到您的计算机。
  12. 由于您正在VM中运行,因此请上传到VM。

步骤2:配置gcloud和SDK以使用服务帐户。

您将需要服务帐户的电子邮件地址(也存储在Json文件中)和服务帐户文件名。

从VM中的Shell运行以下命令:

gcloud auth activate-service-account SERVICE_ACCOUNT_EMAIL_ADDRESS --key-file=service_account_filename.json

第3步:验证您的凭据是否有效:

gcloud auth list

您应该看到您的服务帐户在左列中列出了一个星号(指示该帐户)。

注意:由于您在Google虚拟机(GCE)实例中运行,因此高级用户通常会使用Compute Engine默认服务帐户获取凭据。我建议先学习如何使用服务帐户Json文件。

第4步:指定服务帐户

设置环境变量GOOGLE_APPLICATION_CREDENTIALS指向您的服务帐户json文件。这是一个示例,将路径更改为您的路径。

对于Linux:

export GOOGLE_APPLICATION_CREDENTIALS="/home/username/[FILE_NAME].json"

对于Windows:

set GOOGLE_APPLICATION_CREDENTIALS="c:\Users\username\[FILE_NAME].json"

步骤5:创建服务客户端时可以选择指定服务帐户:

from google.cloud import datastore 

def create_client(project_id):
     return datastore.Client(project_id).from_service_account_json('service_account_filename.json')
相关问题