将文件夹上传到Google Cloud - Python 2.7

问题描述 投票:0回答:2

我正在尝试将本地计算机上的文件夹上传到Google云端桶。我的凭据出错了。我应该在哪里提供凭据以及所需的所有信息。

from_dest = '/Users/xyzDocuments/tmp'
gsutil_link = 'gs://bucket-1991'

from google.cloud import storage
try:
    storage_client = storage.Client()
    bucket = storage_client.get_bucket(bucket_name)
    blob = bucket.blob(destination_blob_name)
    blob.upload_from_filename(source_file_name)
    print('File {} uploaded to {}.'.format(source_file_name,destination_blob_name))

except Exception as e:
    print e

错误是

could not automatically determine credentials. Please set GOOGLE_APPLICATION_CREDENTIALS or explicitly create credentials and re-run the application. For more information, please see https://developers.google.com/accounts/do`cs/application-default-credentials.
python google-cloud-platform google-cloud-storage
2个回答
1
投票

您需要获取项目的应用程序默认凭据并将其设置为环境变量:

  1. 转到GCP控制台中的Create service account关键页面。
  2. 从“服务帐户”下拉列表中,选择“新建服务帐户”。
  3. 在服务帐户名称字段中输入名称。
  4. 从“角色”下拉列表中,选择“项目”>“所有者”。
  5. 单击“创建”包含密钥下载到计算机的JSON文件。

然后,设置一个环境变量,该变量将在应用程序本地运行时为其提供应用程序凭据:

$ export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json"

0
投票

由于多种原因(例如丢失文件,无效的凭据路径,不正确的环境变量分配等原因),当应用程序未正确进行身份验证时,通常会抛出此错误消息。请记住,在会话中设置环境变量值时,每次删除会话时都会重置该值。

基于此,我建议您验证是否正确分配了凭据文件和文件路径,并遵循Obtaining and providing service account credentials manually指南,以便直接在您的代码中明确指定您的服务帐户文件;通过这种方式,您将能够永久地设置它并验证您是否正确传递服务凭据。

在代码示例中将路径传递给服务帐户密钥:

def explicit():
  from google.cloud import storage

  # Explicitly use service account credentials by specifying the private key
  # file.
  storage_client = storage.Client.from_service_account_json('service_account.json')

  # Make an authenticated API request
  buckets = list(storage_client.list_buckets())
  print(buckets)
© www.soinside.com 2019 - 2024. All rights reserved.