今回はGo言語でこんな感じの置いて対応しました。
単にチュートリアルのHello, Worldの出力をhttp.Request.RemoteAddrに変えただけですが…(笑
echo-ip.go
package echo_ip
import (
"fmt"
"net/http"
)
func init() {
http.HandleFunc("/", handler)
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, r.RemoteAddr)
}
これをテキトウなディレクトリにテキトウなファイル名でapp.yamlと一緒に置いて、goapp deployするだけでOKです。
一応、app.yamlもそのままです…(性善説を信じよう)
app.yaml
application: echo-ip
version: 1
runtime: go
api_version: go1
handlers:
- url: /.*
script: _go_app
例えば、MacでSDKのインストールディレクトリが、~/go_appengine とすると、こんな感じでOKです。
$ mkdir -p ~/go_apps/echo-ip
$ nano ~/go_apps/echo-ip/echo-ip.go
$ nano ~/go_apps/echo-ip/app.yaml
$ ~/go_appengine/goapp deploy ~/goapps/echo-ip
GAE/Py版は他の方がサンプル公開されているみたいです。
Google App EngineでグローバルIP表示
GOOGLE APP ENGINE で WAN 側 IP アドレスを取得
DDNSサービスを利用しているとグローバルIPはちょこちょこチェックしないといけないわけですが、今まで下記サービスを利用させて頂いていました。
curlで毎時0分にリクエストしていたら、大半がタイムアウトするようになってきたのでAppEngineに同様のものを置く事にしました。
別環境で0時5分から4時間おきに動かしている方は全く問題ないので、皆が0分に集中させているのがマズいのかなと。
他にも下記は知っているのですが、同じ事が起こる可能性があるので…
http://ifconfig.me/ip
http://dyn.value-domain.com/cgi-bin/dyn.fcg?ip