mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-09-07 01:26:43 +00:00
71 lines
3.3 KiB
Markdown
71 lines
3.3 KiB
Markdown
![]() |
# Go App Engine for Managed VMs
|
||
|
|
||
|
[![Build Status](https://travis-ci.org/golang/appengine.svg)](https://travis-ci.org/golang/appengine)
|
||
|
|
||
|
This repository supports the Go runtime for Managed VMs on App Engine.
|
||
|
It provides APIs for interacting with App Engine services.
|
||
|
Its canonical import path is `google.golang.org/appengine`.
|
||
|
|
||
|
See https://cloud.google.com/appengine/docs/go/managed-vms/
|
||
|
for more information.
|
||
|
|
||
|
## Directory structure
|
||
|
The top level directory of this repository is the `appengine` package. It
|
||
|
contains the
|
||
|
basic APIs (e.g. `appengine.NewContext`) that apply across APIs. Specific API
|
||
|
packages are in subdirectories (e.g. `datastore`).
|
||
|
|
||
|
There is an `internal` subdirectory that contains service protocol buffers,
|
||
|
plus packages required for connectivity to make API calls. App Engine apps
|
||
|
should not directly import any package under `internal`.
|
||
|
|
||
|
## Updating a Go App Engine app
|
||
|
|
||
|
This section describes how to update a traditional Go App Engine app to run on Managed VMs.
|
||
|
|
||
|
### 1. Update YAML files
|
||
|
|
||
|
The `app.yaml` file (and YAML files for modules) should have these new lines added:
|
||
|
```
|
||
|
vm: true
|
||
|
manual_scaling:
|
||
|
instances: 1
|
||
|
```
|
||
|
See https://cloud.google.com/appengine/docs/go/modules/#Go_Instance_scaling_and_class for details.
|
||
|
|
||
|
### 2. Update import paths
|
||
|
|
||
|
The import paths for App Engine packages are now fully qualified, based at `google.golang.org/appengine`.
|
||
|
You will need to update your code to use import paths starting with that; for instance,
|
||
|
code importing `appengine/datastore` will now need to import `google.golang.org/appengine/datastore`.
|
||
|
You can do that manually, or by running this command to recursively update all Go source files in the current directory:
|
||
|
(may require GNU sed)
|
||
|
```
|
||
|
sed -i '/"appengine/{s,"appengine,"google.golang.org/appengine,;s,appengine_,appengine/,}' \
|
||
|
$(find . -name '*.go')
|
||
|
```
|
||
|
|
||
|
### 3. Update code using deprecated, removed or modified APIs
|
||
|
|
||
|
Most App Engine services are available with exactly the same API.
|
||
|
A few APIs were cleaned up, and some are not available yet.
|
||
|
This list summarises the differences:
|
||
|
|
||
|
* `appengine.Context` has been replaced with the `Context` type from `golang.org/x/net/context`.
|
||
|
* Logging methods that were on `appengine.Context` are now functions in `google.golang.org/appengine/log`.
|
||
|
* `appengine.Timeout` has been removed. Use `context.WithTimeout` instead.
|
||
|
* `appengine.Datacenter` now takes a `context.Context` argument.
|
||
|
* `datastore.PropertyLoadSaver` has been simplified to use slices in place of channels.
|
||
|
* `search.FieldLoadSaver` now handles document metadata.
|
||
|
* `urlfetch.Transport` no longer has a Deadline field; set a deadline on the
|
||
|
`context.Context` instead.
|
||
|
* `taskqueue.QueueStats` no longer takes a maxTasks argument. That argument has been
|
||
|
deprecated and unused for a long time.
|
||
|
* `appengine/aetest`, `appengine/blobstore`, `appengine/cloudsql`
|
||
|
and `appengine/runtime` have not been ported yet.
|
||
|
* `appengine.BackendHostname` and `appengine.BackendInstance` were for the deprecated backends feature.
|
||
|
Use `appengine.ModuleHostname`and `appengine.ModuleName` instead.
|
||
|
* `appengine.IsCapabilityDisabled` and `appengine/capability` are obsolete.
|
||
|
* Most of `appengine/file` is deprecated. Use [Google Cloud Storage](https://godoc.org/google.golang.org/cloud/storage) instead.
|
||
|
* `appengine/socket` is deprecated. Use the standard `net` package instead.
|