GAEで環境変数から値を取得する
やりたいこと
GAE上に構築したslack slash commandで、Slackから送られるtokenをチェックしたい。
どうやったか
やり方はいろいろとあると思いますが、今回は環境変数に設定したtokenを取得し、Slackから送られたtokenと比較するようにしました。
GAEの環境変数の設定方法
まずは、app.yaml
に記述する方法です。
参考:app.yaml Reference | Go | Google Cloud Platform
app.yamlにenv_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") // 省略 }