以前のバンドル サービス用の Capabilities API

アプリケーションで Capabilities API を使用すると、特定の API 機能の停止や予定されているダウンタイムを検出できます。この API を使用すると、機能が利用できなくなる時間帯を検出してバイパスできるので、アプリケーションのダウンタイムを短縮できます。capability パッケージの内容については、capability パッケージ リファレンスをご覧ください。

たとえば Datastore API を使用する場合、Capabilities API を利用すると、Datastore API が利用できないときにそれを検出したり、エラーをユーザーに報告したりできます。

func handler(w http.ResponseWriter, r *http.Request) {
	ctx := appengine.NewContext(r)
	// Check if the Datastore API is available
	if !capability.Enabled(ctx, "datastore_v3", "*") {
		http.Error(w, "This service is currently unavailable.", 503)
		return
	}
	// do Datastore lookup ...
}

データストアの読み取りと書き込みが可能かどうかを調べるには、別のクエリを実行できます。次の例は、データストアが書き込み可能であるかを確認し、ダウンタイム中であればユーザーにメッセージを表示する方法を示しています。

func checkDatastoreMode(w http.ResponseWriter, r *http.Request) {
	ctx := appengine.NewContext(r)
	// Check if the Datastore service is in read-only mode.
	if !capability.Enabled(ctx, "datastore_v3", "write") {
		// Datastore is in read-only mode.
	}

}

Go 1.11 での Capabilities API の使用

capability.Enabled 関数は、指定された API と機能が利用可能である場合に true を返します。API のすべての機能のクエリを実行するには、機能名("write" など)またはワイルドカード "*" を渡す必要があります。

サポートされている機能

この API は現在、次の機能をサポートしています。

機能 Enabled への引数
blobstore の利用可否 "blobstore", "*"
データストアの読み取り "datastore_v3", "*"
データストアの書き込み "datastore_v3", "write"
メールサービスの利用可否 "mail", "*"
Memcache サービスの利用可否 "memcache", "*"
タスクキュー サービスの利用可否 "taskqueue", "*"
URL 取得サービスの利用可否 "urlfetch", "*"