Google Cloud Storage с использованием Python - PullRequest
2 голосов
/ 10 февраля 2012

Я настроил требуемую среду для Google Cloud Storage в соответствии с руководством. Я установил "gsutil" и настроил все пути. Мой gsutil работает отлично, однако, когда я пытаюсь запустить приведенный ниже код,

#!/usr/bin/python

import StringIO
import os
import shutil
import tempfile
import time
from oauth2_plugin import oauth2_plugin

import boto

# URI scheme for Google Cloud Storage.
GOOGLE_STORAGE = 'gs'
# URI scheme for accessing local files.
LOCAL_FILE = 'file'

uri=boto.storage_uri('sangin2', GOOGLE_STORAGE)

try:
    uri.create_bucket()
    print "done!"
except boto.exception.StorageCreateError, e:
    print "failed"

Выдает ошибку «403 Доступ запрещен».

  Traceback (most recent call last):
      File "/Volumes/WingIDE-101-4.0.0/WingIDE.app/Contents/MacOS/src/debug/tserver/_sandbox.py", line 23, in <module>
      File "/Users/lsangin/gsutil/boto/boto/storage_uri.py", line 349, in create_bucket
        return conn.create_bucket(self.bucket_name, headers, location, policy)
      File "/Users/lsangin/gsutil/boto/boto/gs/connection.py", line 91, in create_bucket
        response.status, response.reason, body)
    boto.exception.GSResponseError: GSResponseError: 403 Forbidden
      <?xml version='1.0' encoding='UTF-8'?><Error><Code>AccessDenied</Code><Message>Access denied.</Message></Error>

Поскольку я новичок в этом, мне довольно сложно понять, почему. Кто-нибудь может мне помочь? Спасибо.

1 Ответ

1 голос
/ 19 февраля 2012

Библиотека boto должна автоматически найти и использовать ваш файл $ HOME / .boto. Необходимо проверить одну вещь: убедитесь, что используемый вами проект установлен в качестве проекта по умолчанию для устаревшего доступа (в консоли API нажмите «Доступ к хранилищу» и убедитесь, что на нем написано «Это ваш проект по умолчанию для устаревшего доступа»). , Когда я неправильно установил этот параметр и следую примеру создания корзины, на который вы ссылались, я также получаю ошибку 403, однако не имеет смысла, что это будет работать для вас в gsutil, но не при прямом использовании boto.

Попробуйте добавить «debug = 2» при создании экземпляра объекта storage_uri, например:

uri = boto.storage_uri(name, GOOGLE_STORAGE, debug=2)

Это сгенерирует дополнительную информацию об отладке в stdout, которую затем можно сравнить с выводом отладки из аналогичного работающего примера gsutil (через gsutil -D mb).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...