最近Google cloud platformをいじっているので、Tipsを自分のメモがてら投稿しようかと。
第一弾は、GCPの各インスタンスに割り当てられるMachine Instance IDの取得方法です。
まず、httpアクセスをするためにWebServiceを使えるようにします。
Activatorのテンプレートをそのまま使っていれば、すでに追加されているはずなので、この依存の追加は不要です。
build.sbt
libraryDependencies ++= Seq(ws)
では実際のコード
import play.api.libs.ws.WSClient
import scala.concurrent.Await
import scala.concurrent.duration._
val req = ws.url("http://metadata.google.internal/computeMetadata/v1/instance/id").
withHeaders("Metadata-Flavor" -> "Google")
val res = Await.result(req.get(),10 seconds)
println("InstanceID:" + res.body)
このコードを、GCPのインスタンス上で実行することで、InstanceIDを取得出来ます。
Headerに"Metadata-Flavor: Google"が入っていない場合はエラーになります。
また、GCPのインスタンス上以外で実行すると、ドメインが見つからないのでエラーになります。
InstanceID以外にも、URLのPathの最後の部分を変えることでいろいろなメタデータを取得出来ます。
何が取れるかはドキュメントを参照して下さい。