Category Archives: GAE

gae サービス名

1つのアプリケーションに複数のサービスを展開することが可能

application: {アプリケーション名}
module: {サービス名}
version: 1
runtime: go
api_version: go1.8

handlers:
- url: /.*
  script: _go_app
  secure: always

gae go gin

import (
    "net/http"

    "github.com/gin-gonic/gin"
)

func init() {
    r := gin.Default()
    r.GET("/", handler)
    http.Handle("/", r)
}

func handler(c *gin.Context) {
    code := c.Query("code") // /?code=12345
    c.String(200, code)
}

cloud storage object change notification

Web Master Tool

  1. ocn-reciever バージョンにデプロイ
  2. 静的ファイル
    app.yaml
// app/static_files/認証用.html を配置しておく

application: camera-raspi
version: ocn-reciever
runtime: go
api_version: go1
handlers:
- url: /{認証用ファイル名}\.html
  static_files: static_files/{認証用ファイル名}.html
  upload: static_files/{認証用ファイル名}.html

参考

http://qiita.com/sinmetal/items/0438203034a0cb448448

send grid app engine

send grid アカウント作成

https://sendgrid.kke.co.jp/about/

App Engine設定

APIキー作成

配信

import(
    "google.golang.org/appengine/urlfetch"
    "gopkg.in/sendgrid/sendgrid-go.v2"
)
func handler(w http.ResponseWriter, r *http.Request) {
    sg := sendgrid.NewSendGridClientWithApiKey("{APIキー}")
        ctx := appengine.NewContext(r)

        // Set http.Client to use the App Engine urlfetch client
        sg.Client = urlfetch.Client(ctx)

        message := sendgrid.NewMail()
        message.AddTo("example@email.com")
        message.SetSubject("Email From SendGrid")
        message.SetHTML("Through AppEngine")
        message.SetFrom("sendgrid@appengine.com")
        sg.Send(message)
}

備考

fromのアドレスには自由に設定することができるが、なりすましの場合は、
スパム判定される。

事前にSPFレコードの登録などが必要
https://mxtoolbox.com/spf.aspx

参考

ドキュメント
https://sendgrid.kke.co.jp/blog/?p=1391

godotenv

パッケージダウンロード

go get github.com/joho/godotenv

kintone.env

app.yamlと同階層に配置

KINTONE_DOMAIN="{値をセット}"
KINTONE_USER="{値をセット}"
KINTONE_PASSWORD="{値をセット}"

ファイル読込

func init() {
    err := godotenv.Load("kintone.env")
    if err != nil {
        log.Fatal("Error loading .env file")
    }
    log.Print(os.Getenv("KINTONE_DOMAIN")) // 値の読み込みが可能
}

参考

https://github.com/joho/godotenv

gae datastore 開発環境

goapp serve

の後、

http://localhost:8080

の開発環境のWEBアプリケーションからレコードを作成して、
以下からレコードの内容を確認することができる

http://localhost:8000/datastore

gae go gin エラーハンドリング

以下のようにエラーの詳細を出すことができる

// Show ...
func (f Form) Show(c *gin.Context) {
    appID, err := strconv.ParseUint(c.Param("appID"), 10, 64)
    if err != nil {
        c.String(400, "appIDが間違っています")
        return
    }
}