おっさんのダベリ

IT系の技術的な話題が多いです

GAEで環境変数から値を取得する

やりたいこと

GAE上に構築したslack slash commandで、Slackから送られるtokenをチェックしたい。

どうやったか

やり方はいろいろとあると思いますが、今回は環境変数に設定したtokenを取得し、Slackから送られたtokenと比較するようにしました。

GAEの環境変数の設定方法

まずは、app.yamlに記述する方法です。

参考:app.yaml Reference  |  Go  |  Google Cloud Platform

app.yamlenv_variablesという項目を追加し、名前: 値という形式で記述します。

以下の例では、SLACK_TOKENという変数名に、slack_tokenという値を設定しています。

env_variables:
  SLACK_TOKEN: 'slack_token'

tokenは秘密にするべき値なので、リポジトリに残しておきたくない場合にはdeploy時にオプションとして指定する方法もあります。

参考:appcfg.py Command Line Arguments  |  Go  |  Google Cloud Platform

$ appcfg.py update . -E SLACK_TOKEN:"slack_token"

コードからtokenを取得

次に、コードから環境変数に設定されたSLACK_TOKENを読み出します。

os.Getenv("変数名")で取得できます。

後は、この取得したtokenをSlackから送られたtokenと比較し、異なっていればエラーレスポンスを返すだけです。

import (
    "bytes"
    "encoding/json"
    "net/http"
    "os"

    // 省略
)

func init() {
    renderer := render.New(render.Options{})
    token := os.Getenv("SLACK_TOKEN")

    // 省略
}

詳細はこちら https://github.com/yhanada/goslash-sample-gae