メインコンテンツへスキップ
このページのエンドポイントは、ウェブサイトアプリケーション — ウェブドメインを持つアプリ — にのみ適用されます。ウェブ以外のアプリケーションに対して呼び出すと失敗します。
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)

カスタムドメイン

api.SetApplicationCustomDomain(appID, domain) は、ウェブサイトに紐付けるカスタムドメインを設定します。
err := api.SetApplicationCustomDomain("abc123def456abc123def456", "yoursite.com")
if err != nil {
	panic(err)
}

DNS レコード

カスタムドメインを紐付けた後は、レジストラ側で DNS を設定する必要があります。api.GetApplicationDNS(appID) は、作成すべきレコードを []squarecloud.DNSRecord として返します。
records, err := api.GetApplicationDNS("abc123def456abc123def456")
if err != nil {
	panic(err)
}

for _, record := range records {
	fmt.Printf("%s %s%s (%s)\n", record.Type, record.Name, record.Value, record.Status)
}
FieldTypeDescription
Typestring"txt" または "cname" — TXT レコードは所有権と SSL の検証を担い、CNAME はトラフィックを運び、常に cname.squareweb.app を指します
Namestring作成するレコード名
Valuestringレコードの値
Statusstring検証状態: "pending""pending_validation" または "active"

アナリティクス

api.GetApplicationAnalytics(appID, start, end) は、指定した期間の集約されたエッジアナリティクスを squarecloud.NetworkAnalytics として返します。期間の指定は必須で、最大保持期間は 7 日間 です。
end := time.Now()
start := end.Add(-24 * time.Hour)

analytics, err := api.GetApplicationAnalytics("abc123def456abc123def456", start, end)
if err != nil {
	panic(err)
}

fmt.Println(len(analytics.Visits), "time buckets") // 15分単位の時系列
fmt.Println(analytics.Countries)
fmt.Println(analytics.Paths)
レスポンスには 15 分単位の時系列(VisitsCountriesDevicesOSBrowsersProtocolsMethodsPathsReferersProviders)と、期間全体のバケット(IPsStatusCodesBotsContentTypes)が含まれます。
アプリケーションの作成前に完全に収まる期間を指定した場合、API は空のオブジェクトを返します — レスポンス内のすべてのスライスが nil になります。インデックスアクセスの前に長さを確認してください。

ドリルダウンフィルタ

期間に加えて、このエンドポイントはクエリパラメータとしてオプションのフィルタを受け付けます — rest.WithQueryParam で渡してください。各フィルタは、レスポンス内のすべての内訳を一度に絞り込みます:
FilterNotes
country2 文字の国コード、例: "BR"
ipIP の完全一致
path前方一致、例: "/api"
statusHTTP ステータスコード、例: "404"
osオペレーティングシステム
browserブラウザ名
protocolリクエストプロトコル
refererリファラのないリクエストには "Direct" を使用
providerネットワークプロバイダ、例: "GOOGLE (15169)"(ASN)
content_type未分類のコンテンツタイプには "Unknown" を使用
bot通常(非ボット)のトラフィックには "Unverified" を使用
analytics, err := api.GetApplicationAnalytics(
	"abc123def456abc123def456",
	start, end,
	rest.WithQueryParam("country", "BR"),
	rest.WithQueryParam("status", "404"),
	rest.WithQueryParam("bot", "Unverified"),
)

エラートラッキング

api.GetApplicationNetworkErrors(appID, start, end) は、エッジのエラー内訳を返します。デフォルトでは 5xx エラーのみが含まれます — 4xx を含めるには include_4xx=true を追加してください。
errs, err := api.GetApplicationNetworkErrors(
	"abc123def456abc123def456",
	start, end,
	rest.WithQueryParam("include_4xx", "true"),
)
if err != nil {
	panic(err)
}

リクエスト単位のログ

api.GetApplicationNetworkLogs(appID, start, end) は、リクエスト単位のエッジログを返します。
logs, err := api.GetApplicationNetworkLogs("abc123def456abc123def456", start, end)
if err != nil {
	panic(err)
}
リクエスト単位のログには Pro プラン 以上が必要です。

レイテンシパーセンタイル

api.GetApplicationNetworkPerformance(appID, start, end) は、エッジレイヤーとオリジンレイヤーの p50 / p95 / p99 レイテンシを返します。
perf, err := api.GetApplicationNetworkPerformance("abc123def456abc123def456", start, end)
if err != nil {
	panic(err)
}
パフォーマンスメトリクスには Pro プラン 以上が必要です。

エッジキャッシュのパージ

api.PurgeApplicationCache(appID) は、アプリケーションのドメインに対するエッジキャッシュ全体を無効化します。
err := api.PurgeApplicationCache("abc123def456abc123def456")
if err != nil {
	panic(err)
}

アカウント全体のドメインとロードバランサー

この 2 つのメソッドは、単一のウェブサイトではなく、アカウント内のすべてのアプリケーションを対象に動作します。

すべてのドメインの一覧取得

api.GetApplicationDomains() は、アカウントのすべてのアプリケーションにわたって設定されているすべてのドメインを []squarecloud.AppDomain として返します。カスタムドメインが先に列挙され、ウェブドメインを持たないアプリケーションは含まれません。
domains, err := api.GetApplicationDomains()
if err != nil {
	panic(err)
}

for _, domain := range domains {
	fmt.Println(domain.AppID, domain.Hostname, domain.Type) // "subdomain" | "custom"
}

ロードバランサー

api.GetLoadBalancers() は、カスタムドメインを共有するアプリケーションをグループ化し、squarecloud.LoadBalancers を返します。
lb, err := api.GetLoadBalancers()
if err != nil {
	panic(err)
}

fmt.Println("plan limit:", lb.Limit)
for _, balancer := range lb.Balancers {
	fmt.Println(balancer.Hostname, len(balancer.Apps), "apps")
}
2 つ以上のアプリを持つグループはアクティブなロードバランサーです: トラフィックはエッジで分散され、いずれかのアプリがオフラインになった場合は自動フェイルオーバーが働きます。Limit は、アカウントのプランで 1 つのドメインを共有できるアプリケーションの最大数です: 2(Standard)、5(Pro)、10(Enterprise)。