Как включить облачное хранилище Google на локальном сервере разработки?
Я хочу использовать ведро GCS в качестве основы для моего blobstore, но я не могу понять, как настроить его на моем сервере разработки.
Есть инструкции для этого, используя консоль разработчиков на реальном сервере, но я не могу найти ничего о том, как это сделать на моей локальной машине разработки...
Ответы
Ответ 1
Оказывается, вам вообще не нужно выполнять какие-либо настройки. Я просто предположил, что при загрузке с использованием blobstore есть один с определенным именем, а один был создан для меня автоматически.
Кстати, похоже, что нигде не документировано, как вы можете просматривать файлы в хранилище сервера разработки. Вы можете сделать это, выбрав объект __GsFileInfo__
в доступе администратора Datastore Viewer к вашему локальному серверу dev.
Ответ 2
Для тех, кто пытается заставить Google Cloud Storage работать вообще со своего локального сервера приложений разработки Java, я подумал, что будет полезен еще один ответ. Мне удалось получить локальный сервер приложений Dev, работающий с нелокальным облачным хранилищем Google, но только копайте код и выясняйте, что нужно - там не будет документации по этому вопросу.
Цель состоит в том, чтобы заставить этот блок кода работать локально, который читает файл из GCS:
GcsService gcsService =
GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance());
int fileSize = (int) gcsService.getMetadata(gcsFilename).getLength();
ByteBuffer byteBuffer = ByteBuffer.allocate(fileSize);
GcsInputChannel inputChannel = gcsService.openReadChannel(gcsFilename, 0);
int readResult = inputChannel.read(byteBuffer);
byte[] fileBytes = byteBuffer.array();
Если вы попытаетесь сделать это локально, вы не найдете файлы, которые вы загрузили в GCS, потому что он будет пытаться использовать поддельные локальные GCS. К сожалению, я не нашел хороший способ загрузить этот локальный GCS, так что это не очень полезно (для него нет проводника файлов, как в облачной версии, а gsutil для него не работает). Поэтому вместо этого мы собираемся заставить его работать с нелокальным (облачным) GCS при запуске на локальном сервере приложений Dev.
Чтобы сделать это, обратите внимание, что GcsService создается в com.google.appengine.tools.cloudstorage.GcsServiceFactory этим блоком кода:
if (location == SystemProperty.Environment.Value.Production || hasCustomAccessTokenProvider()) {
rawGcsService = OauthRawGcsServiceFactory.createOauthRawGcsService(builder.build());
} else if (location == SystemProperty.Environment.Value.Development) {
rawGcsService = LocalRawGcsServiceFactory.createLocalRawGcsService();
Выше сказано, что вам нужно указать поставщика доступа к токену для получения нелокальной службы, что вы делаете, определяя системное свойство. Для приложения с движком приложения вы можете сделать это в appengine-web.xml следующим образом:
<system-properties>
<property name="gcs_access_token_provider" value="com.mypackage.MyAccessTokenProvider" />
</system-properties>
Это значение этого свойства - это класс, который вы определяете, который реализует com.google.appengine.tools.cloudstorage.oauth.AccessTokenProvider, который предоставляет токен доступа для вашего приложения. Этот класс должен создать GoogleCredential, который можно использовать для получения токена доступа, используя инструкции для "Другое" для GoogleCredential в https://developers.google.com/identity/protocols/OAuth2ServiceAccount#authorizingrequests.
Теперь он создаст OAuth GcsService, который будет разговаривать с облаком, и вам не нужно использовать поддельное локальное хранилище.
Ответ 3
Вам нужно загрузить и интегрировать Клиентскую библиотеку Google Cloud Storage для App Engine.
Эта библиотека предоставляет вам GcsService
, который похож на BlobstoreService
, поэтому вы можете писать файл, читать файл, удалять файл и другие функции, предоставляемые из облачного хранилища
Когда вы используете код в среде разработки, загруженные файлы хранятся в папке appengine-generated
, а в локальном хранилище данных создается объект __GsFileInfo__
, который сохраняет метаданные, прикрепленные к файлу
Эта библиотека также работает в Интернете, поэтому ваш код будет работать как для среды разработки, так и для производства.
Здесь вы можете найти руководство Начало работы и полное JavaDoc ссылка