Проблема с импортом движка приложений Google (golang) в «гибкой среде движка приложений» (ранее известной как «Управляемые виртуальные машины»)

# #google-app-engine #go #google-cloud-storage

#google-app-engine #Вперед #google-облачное хранилище

Вопрос:

Я разрабатываю API в golang непосредственно в «гибкой среде App Engine» (ранее известной как «Управляемые виртуальные машины»).

До сих пор я использовал этот вид импорта в своих файлах .go :

 import ( 
        "appengine"
        "appengine/datastore"
        ...)
  

Недавно я решил использовать облачное хранилище Google для хранения изображений. Для этого требуется импорт «cloud.google.com/go/storage «. Моя проблема в том, что я не могу развернуть приложение с помощью этого импорта (не найден) или любой другой короткой версии («go / storage»), которую я использую для импорта appengine.

После долгих исследований я обнаружил следующее: https://github.com/golang/appengine#user-content-3-update-code-using-deprecated-removed-or-modified-apis

В нем указывается, как перенести приложение с помощью короткого импорта (устаревшего, как у меня) на полный импорт (с явным репозиторием, например «google.golang.org/appengine «)

Я выполнил процедуру и использовал скрипт, который они предоставляют, для обновления моего кода (aefix). Они также говорят, чтобы добавить эту строку в мой файл app.yaml :

 vm : true
  

Если я это сделаю, я получу это сообщение об ошибке «развертывание приложения gcloud» :

 ERROR: (gcloud.app.deploy) Your application does not satisfy all of the requirements for a runtime of type [go].  Please correct the errors and try again.
  

Если я этого не сделаю, ни один из моих импортных файлов не работает, и я получаю следующую ошибку :

 can't find import: "google.golang.org/appengine/datastore"
  

Вот мой файл app.yaml :

 runtime: go
api_version: go2
#vm : true

handlers:
   - url: /.*
   script: _go_app
  

Конечно, весь импорт находится на сервере под $ GOPATH / src/, так что на самом деле они не отсутствуют, я думаю, на них больше ссылок.

Я застрял в этой проблеме уже несколько дней, буду признателен за любую помощь любого рода!

Спасибо

Ответ №1:

Извините, нам нужно обновить некоторые документы. Вы не можете использовать пакет golang / appengine с гибкой средой App Engine. Инструмент aefix здесь также не будет работать. Вместо SDK App Engine Go вы хотите использовать здесь клиентскую библиотеку Go:

https://github.com/GoogleCloudPlatform/google-cloud-go

Если вы ранее использовали vm:true , вам нужно будет перейти на env:flex — инструкции (и примечание к библиотеке go app engine) находятся здесь:

https://cloud.google.com/appengine/docs/flexible/go/upgrading

Дайте мне знать, если у вас возникнут какие-либо вопросы!