最終更新日:2025-08-28 13:55:16
Object Storage Usage Query APIは、詳細な利用状況および請求データへのプログラムによるアクセスを提供します。パートナーやリセラーがサブアカウントまたは個別バケット単位で消費監視を自動化できるように設計されています。
本APIは、以下を含む幅広い使用状況メトリクスを取得できます:
すべてのリクエストはPOSTメソッドを使用して本番エンドポイントに送信してください。
POSThttps://wos.cdnetworks.com/api/usage/statistics注意: 本番環境ではHTTPSが必要です。HTTP経由のリクエストはリダイレクトされ、失敗する場合があります。
apikeyを生成し、サポートチームに提供してバックエンド側で設定してください。DateおよびAuthorizationヘッダーを作成します。POSTリクエストを送信します。このAPIはカスタムHMAC-SHA256認証方式を採用しています。全てのAPIリクエストには、DateおよびAuthorizationヘッダーを含める必要があります。
APIを利用するには、usernameとapikeyが必要です。apikeyはお客様自身で生成するシークレットキーです。APIアクセスを有効化するためには、このキーを当社のサポートチームにご提供いただき、バックエンド側での設定を行う必要があります。
Thu, 21 Jul 2025 07:54:00 GMT)に従ってフォーマットしてください。この文字列はDateヘッダーで使用されます。apikeyを鍵、Date文字列をメッセージとしてHMAC-SHA256署名を生成します。結果はBase64エンコードしてください。
password = Base64(HMAC-SHA256(UTF-8(apikey), UTF-8(Date)))ユーザー名:パスワードという形式の文字列を作成します。ユーザー名:パスワード全体の文字列をBase64エンコードします。Basic の後ろに前のステップでBase64エンコードされた文字列を連結したものです。
Authorization: Basic <Base64(ユーザー名:パスワード)>APIは、メトリックタイプに基づいて特定の単位で使用量データを返します:
storageSize):**メガバイト(MB)**で返却され、**2進法(base-1024)**で計算されます(1 MB = 1024 KB)。outTraffic、innerBandwidthなど):**メガバイト(MB)およびメガビット毎秒(Mbps)で返却され、それぞれ10進法(base-1000)**で計算されます。| ヘッダー | 必須 | 説明 |
|---|---|---|
Authorization |
必須 | 上述のプロセスで生成された認証トークン。 |
Date |
必須 | 現在の時刻(RFC1123形式、例:Thu, 21 Jul 2025 07:54:00 GMT)。 |
Content-Type |
はい | application/json に設定する必要があります。 |
| パラメータ | 必須 | 説明 |
|---|---|---|
startDate |
はい | クエリ期間の開始日。フォーマット:YYYY-MM-DD。 |
endDate |
はい | クエリ期間の終了日。フォーマット:YYYY-MM-DD。 |
statisticsType |
はい | クエリする利用データのタイプ。利用可能なオプションについては下記の「統計タイプ」セクションをご参照ください。 |
storageRegion |
いいえ | ストレージリージョンのカンマ区切りリスト(例:CN,US,SG)。省略した場合、全リージョンのデータが返されます。 |
storageType |
いいえ | ストレージクラスを指定します。有効なオプション:Standard、InfrequentAccess、Archive。一度に指定できるタイプは1つのみです。 |
bucket |
いいえ | 複数のBucket名をカンマ区切りで指定します。省略時はアクセス可能な全Bucketのデータを返します。 |
isGroupByBucket |
いいえ | 使用データをBucketごとに分割して取得するには1に設定します。省略または0に設定すると集計値のみ返します。 |
groupBy |
いいえ | データの時間単位を指定します。オプションはday(デフォルト)またはhourです。• day: 各日に対して1件の値を返します。storageSizeの場合はその日のピーク値、トラフィック及びリクエストはその日の累計です。• hour: 全ての指標タイプについて1時間ごとに詳細な値を返します。 |
timeZone |
いいえ | クエリに使用するタイムゾーンを指定します。 • サポートされる値: GMT-12 ~ GMT+12(例:GMT+8、GMT-5)。• デフォルト: GMT+8。• 注意:レスポンスデータは指定したタイムゾーンに基づいて計算されます。無効な値の場合は400エラーとなります。 |
bandwidthAlgorithm |
いいえ | 帯域の計算方式を指定します。このパラメータはstatisticsTypeがinnerBandwidthまたはoutBandwidthの場合のみ有効です。有効なオプション:• ninetyFivePeak(デフォルト):95th percentile peak。• avgPeak:日々のピーク値の平均。• fourthPeak:4番目に大きいピーク値。• firstPeak:最大ピーク値。 |
statisticsType)| カテゴリ | statisticsTypeの値 | 説明 |
|---|---|---|
| ストレージ・リクエスト | storageSize |
バケット内に保存されているデータ容量(Standard、Infrequent Access、Archive別に分類)。データは1時間ごとに更新されます。注:ストレージ容量の計算は1024進法(1TB=1024GB)で行われます。 |
numberOfRequests |
APIリクエスト数。リード(GET、HEAD)およびライト(POST、PUT、DELETE)リクエストの両方を含みます。ライトリクエストにはライフサイクル削除やストレージクラスの変更も含まれます。成功・失敗を問わず全てのリクエストがカウントされます。 |
|
| データの取得と削除 | infrequentAccessRestore |
Infrequent Accessストレージ内のファイルにアクセスした際に発生するデータ取得トラフィック量。 |
infrequentDelete |
30日間の最小保存期間に満たないうちにInfrequent Accessストレージから削除されたデータ量。 | |
archiveRestore |
Archiveストレージのファイルがリストア(解凍)された後に発生するデータ取得トラフィック量。 | |
archiveDelete |
60日間の最小保存期間に満たないうちにArchiveストレージから削除されたデータ量。 | |
| トラフィック・帯域幅 | innerTraffic |
CDNetworksのCDN製品(Content AccelerationやMedia Accelerationなど)がObject Storageをオリジンとして利用する際に発生するCDN Origin Traffic。トラフィック量は1000進法(1TB=1000GB)で計算されます。 |
outTraffic |
Object Storageからパブリックインターネットへデータをダウンロードする際に発生する外向きトラフィック。トラフィック量は1000進法(1TB=1000GB)で計算されます。 | |
innerBandwidth |
CDN Origin Bandwidth。返却される値はリクエスト内で指定されたbandwidthAlgorithmによって異なります。デフォルトは95パーセンタイルピークとなります。 |
|
outBandwidth |
公衆インターネット向けのegress bandwidthです。返却値はリクエストで指定されたbandwidthAlgorithmに依存します。デフォルトは95th percentile peakです。 |
|
crossRegionTraffic |
クロスリージョンレプリケーションによってソースバケットから発生するEgressトラフィックです。トラフィックは1000進法(1TB = 1000GB)で計算されます。 | |
| 操作 | fileOpNumber |
実行されたファイル操作の合計回数です。 |
このリクエストは、米国およびシンガポールリージョンの標準ストレージに関する一日の合計ピークストレージサイズを照会します。
リクエスト:
curl -X POST \
https://wos.cdnetworks.com/api/usage/statistics \
-H 'Authorization: Basic YOUR_AUTH_STRING' \
-H 'Date: Thu, 21 Jul 2025 07:54:00 GMT' \
-H 'Content-Type: application/json' \
-d '{
"startDate": "2025-07-10",
"endDate": "2025-07-11",
"storageRegion": "US,SG",
"storageType": "Standard",
"statisticsType": "storageSize"
'}
レスポンス:
{
"code": "200",
"message": "OK",
"statisticsType": "storageSize",
"data": [
{
"dataTime": "2025-07-10",
"storage": "5120"
},
{
"dataTime": "2025-07-11",
"storage": "5180"
}
]
}
注記: storageの値は、1日あたりのピーク値(MB)を表します。
このリクエストは、バケットごとに日別の読み取りおよび書き込みリクエスト数を照会します。
リクエスト:
curl -X POST \
https://wos.cdnetworks.com/api/usage/statistics \
-H 'Authorization: Basic YOUR_AUTH_STRING' \
-H 'Date: Thu, 21 Jul 2025 07:54:00 GMT' \
-H 'Content-Type: application/json' \
-d '{
"startDate": "2025-07-10",
"endDate": "2025-07-11",
"statisticsType": "numberOfRequests",
"isGroupByBucket": "1"
'}
レスポンス:
{
"code": "200",
"message": "OK",
"statisticsType": "numberOfRequests",
"data": [
{
"dataTime": "2025-07-10",
"readRequests": {
"bucket1": "15000",
"bucket2": "25000"
},
"writeRequests": {
"bucket1": "3000",
"bucket2": "5000"
}
},
{
"dataTime": "2025-07-11",
"readRequests": {
"bucket1": "16500",
"bucket2": "27500"
},
"writeRequests": {
"bucket1": "3200",
"bucket2": "5300"
}
}
]
}
| ステータスコード | エラーメッセージ | 理由 |
|---|---|---|
| 400 | Date In Headers Is Invalid |
Date ヘッダーが存在しないか、形式が正しくありません。 |
| 400 | StartDate Invalid, Valid Format Is YYYY-MM-DD |
startDate パラメータの形式が正しくありません。 |
| 400 | StatisticsType Invalid |
statisticsType の値が許可されていません。 |
| 401 | Authorization Invalid |
Authorization ヘッダーが存在しないか、形式が正しくないか、不正です。 |
| 403 | StartDate Can't Be Greater Than EndDate |
startDate が endDate より後の日付になっています。 |
| 404 | Bucket xx Not Found |
指定されたバケットが存在しません。 |
import datetime
import hmac
import base64
import requests
import json
from hashlib import sha256
class UsageApiDemo:
def get_gmt_date(self):
"""現在の時刻をRFC1123形式で生成します。"""
gmt_format = '%a, %d %b %Y %H:%M:%S GMT'
return datetime.datetime.utcnow().strftime(gmt_format)
def get_auth_string(self, username, apikey, date_str):
"""完全な「Authorization」ヘッダー値を生成します。"""
# 手順1:HMAC-SHA256署名を作成します。
signature = hmac.new(apikey.encode('utf-8'), date_str.encode('utf-8'), sha256).digest()
# 手順2:署名をBase64エンコードし、「password」を作成します。
password = base64.b64encode(signature).decode('utf-8')
# ステップ3:「username:password」文字列を作成し、Base64エンコードします。
combined_str = f"{username}:{password}"
encoded_auth_str = base64.b64encode(combined_str.encode('utf-8')).decode('utf-8')
# ステップ4:'Basic 'を先頭に付加して最終的なヘッダー値を作成します。
return f"Basic {encoded_auth_str}"
def send_request(self, url, headers, body_params):
"""APIにPOSTリクエストを送信し、レスポンスを表示します。"""
try:
response = requests.post(url, data=json.dumps(body_params), headers=headers)
response.raise_for_status() # 不正なステータスコードの場合に例外を発生させます
print(f"ステータスコード: {response.status_code}")
print("レスポンスボディ:")
print(json.dumps(response.json(), indent=4))
except requests.exceptions.RequestException as e:
print(f"エラーが発生しました: {e}")
if __name__ == '__main__':
# --- ユーザー設定 ---
USERNAME = 'your_username'
APIKEY = 'your_apikey'
API_HOST = 'https://wos.cdnetworks.com'
API_URI = '/api/usage/statistics'
# --- リクエストの構築 ---
api_demo = UsageApiDemo()
# 1. 日付を取得する
date_header = api_demo.get_gmt_date()
# 2. 認証情報を取得する
auth_header = api_demo.get_auth_string(USERNAME, APIKEY, date_header)
# 3. ヘッダーを定義する
request_headers = {
'Date': date_header,
'Authorization': auth_header,
'Content-Type': 'application/json'
}
# 4. ボディの定義
request_body = {
"startDate": "2025-04-01",
"endDate": "2025-04-02",
"statisticsType": "storageSize",
"storageType": "Standard"
}
# 5. リクエストを送信
full_url = API_HOST + API_URI
api_demo.send_request(full_url, request_headers, request_body)