実践活用ガイド

クラウドストレージへのログストリーミング設定(API)

CDNにはログストリーミング機能があり、アクセスログをクラウドストレージやその他ストレージに保存することができます。

今回はログストリーミング機能を使って、CDNからIDCF クラウドストレージにアクセスログを保存する設定をご紹介します。

1. クラウドストレージのバケット作成

まず始めにアクセスログを保存するクラウドストレージのバケットを作成します。
クラウドストレージ申し込みからオブジェクトアップロードまでの流れ」を参考に、バケットを作成してください。

2. サービスの作成

次にCDNでサービスを作成します。

CDNの申し込みについて」を参考に、サービスを作成してください。
サービスを有効化し正常に配信されていることが確認できたら、クローンを行ってください。

クローンイメージ

クローンを行うと、「Draft」ステータスのバージョンが作成されます。

「Draft」ステータスのバージョンイメージ

このバージョンに対してログストリーミングの設定を行っていきます。

3. APIの使用準備

ログストリーミングの設定には、APIを使用します。
APIの使用にあたって下記のパラメータが必要となります。

① CDN サービスID
② CDN サービスバージョン
③ CDN APIアカウントキー
④ name
⑤ bucket_name
⑥ user
⑦ secret_key
⑧ period

① CDN サービスID
 
サービスごとに生成される一意のIDです。
作成したサービス名をクリックし、「ID」を確認してください。

IDイメージ

② CDN サービスバージョン
ログストリーミングの設定をしたいバージョンを設定します。
本ガイドでは「2. サービスの作成」でクローンし作成されたバージョンを指定します。
例:2
 
③ CDN APIアカウントキー
CDNのAPIアカウントキーです。
クラウドコンソール右上から「アカウント設定」→左メニューの「連携アカウント」をクリックしてください。
タブで「Fastly」を選択します。

連携アカウントイメージ

その後、CDNのAPIアカウントキーを確認します。

APIアカウントキーイメージ

④ name
作成するログストリーミングルールに任意の名前を設定します。
例:setting-logstream-test
 
⑤ bucket_name
「2. クラウドストレージのバケット作成」で作成した、ログの保存先バケットの名前を設定します。
例:logstream-test-idcf
 
⑥ user
ログの保存先バケットに紐付いているGCPサービスアカウントを設定します。
※下記操作はマスターユーザーのみ可能です

クラウドコンソール右上から「アカウント設定」→左メニューの「連携アカウント」をクリック後、タブで「 Google Cloud Platform 」を選択してください。

連携アカウントイメージ

ページ下部の「GCPサービスアカウント管理」からGCPサービスアカウントを追加してください。

項目
サービスアカウントID 英字で始まる半角英数字
(大文字およびidcf-から始まるIDは使用不可)
名前 任意の名前(タグ)
役割 「クラウドストレージ」→「ストレージ管理者」を選択

GCPサービスアカウントイメージ

GCPサービスアカウントイメージ

追加が完了すると、jsonファイルがダウンロードされます。次の⑦のパラメータで使用します。

⑦ secret_key
GCPサービスアカウントの秘密鍵です。
秘密鍵は、⑥でダウンロードしたjsonファイル内に、”private_key”という項目で記載されています。
例:-----BEGIN PRIVATE KEY-----¥nABCD … 1234¥n-----END PRIVATE KEY-----¥n

⑧ period
CDNがログを貯め、バケットに出力する間隔を指定します。
デフォルトは3600秒(1時間)です。
例:1800

4. ログストリーミングの設定

APIを使用し、ログストリーミングの設定を行います。
「3 .APIの仕様準備」で確認したパラメータを使いAPIを実行します。
ここではcurlコマンドで実行する際の例を紹介します。

# curl -X POST https://cdn.idcfcloud.com/api/v1/service/①CDNサービスID/version/②CDNサービスバージョン/logging/gcs \
-H 'X-IDCF-CDN-APIKEY: ③CDNAPIアカウントキー' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{"name": "④name", "bucket_name": "⑤bucket_name", "user": "⑥user", "secret_key": "⑦secret_key","period": "⑧period"}'
							

実行内容例

# curl -X POST https://cdn.idcfcloud.com/api/v1/service/abcd1234EFGH5678/version/2/logging/gcs \
-H 'X-IDCF-CDN-APIKEY: 1234567890_aBcDeFgHiJkLmNoPqRsTuVwXyZ' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{"name": "setting-logstream-test", "bucket_name": "logstream-test-idcf", "user": "logstream-test-idcf@idcf-test-20001111-111111.iam.gserviceaccount.com", "secret_key": "-----BEGIN PRIVATE KEY-----¥nABCD … 1234¥n-----END PRIVATE KEY-----¥n","period": "1800"}'
							

実行結果例

{"name":"setting-logstream-test","bucket_name":"logstream-test-idcf","user":"logstream-test-idcf@idcf-test-20001111-111111.iam.gserviceaccount.com","secret_key":"-----BEGIN PRIVATE KEY-----¥nABCD … 1234¥n-----END PRIVATE KEY-----¥n","period":"1800","service_id":"abcd1234EFGH5678","version":"2","deleted_at":null,"updated_at":"2019-08-19T01:36:07Z","gzip_level":"0","format":"%h %l %u %t \"%r\" %\u003es %b","placement":null,"public_key":null,"created_at":"2019-08-19T01:36:07Z","format_version":"2","timestamp_format":"%Y-%m-%dT%H:%M:%S.000","path":null,"message_type":"classic","response_condition":""}
							

実行後、設定が投入されているかクラウドコンソールからも確認します。
対象のサービス名を選択し、「Show VCL」をクリックします。

Show VCLイメージ

 # gcs setting_logstream_test で始まる行の下に、投入した設定が記述されていることが確認できます。

ログストリーミング設定イメージ

5. サービスの有効化、確認

最後にサービスを有効化し、正常にコンテンツが配信されているかどうか確認してください。

ログストリーミングが正しく設定されている場合、⑧ periodで指定した秒数が経過すると、クラウドストレージのバケットにログファイルがストリーミングで保存されます。

クラウドストレージのバケットイメージ

ファイルをダウンロードし、正常にアクセスログが保存されていることを確認してください。

6. 設定の削除と更新

APIを使ったログストリーミングの設定の削除と更新の方法をご紹介します。
なおこの設定を行うに当たっては次のパラメータを使用します。

① CDN サービスID
② CDN サービスバージョン
③ CDN APIアカウントキー
④ name
⑤ bucket_name
⑥ user
⑦ secret_key
⑧ period

各パラメータについては項番3に説明がありますので、ご確認ください。

また各設定を行う前にクラウドコンソール上からサービスのクローンを行なってください。

サービスのクローンを行ってください

クローンを行うと、「Draft」ステータスのバージョンが作成されます。

クローンを行うと、「Draft」ステータスのバージョンが作成されます

このバージョンに対してログストリーミングの設定の削除と更新を行っていきます。

6-1.ログストリーミング設定の削除

ログストリーミングの設定を削除する方法を紹介します。
削除にあたっては次のパラメータが必要となります。

①CDN サービスID
②CDN サービスバージョン
③CDN APIアカウントキー
④name


各パラメータの確認方法はこのご利用ガイドの項番3をご確認ください。

ここではcurlコマンドで実行する際の例を紹介します。

curl -X DELETE https://cdn.idcfcloud.com/api/v1/service/①CDNサービスID/version/②CDNサービスバージョン/logging/gcs/④name \
-H 'X-IDCF-CDN-APIKEY: ③CDNAPIアカウントキー' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'
							

実際の設定例

curl -X DELETE https://cdn.idcfcloud.com/api/v1/service/abcd12345efgh/version/2/logging/gcs/logstream_test \
-H 'X-IDCF-CDN-APIKEY: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json'
							

実行結果例

{
  "status": "ok"
}
							

実行後、設定が投入されているかクラウドコンソールからも確認します。
対象のサービス名を選択し、「Show VCL」をクリックします。

対象のサービス名を選択し、「Show VCL」をクリック

対象の設定が削除されていることが確認できたら完了です。

6-2.ログストリーミング設定の更新

設定の更新を行うにあたっては次のパラメータが必要となります。

①CDN サービスID
②CDN サービスバージョン
③CDN APIアカウントキー
④name
⑤bucket_name
⑥user
⑦secret_key
⑧period

更新したいパラメータを変更して次のような設定を行なってください。

curl -X PUT https://cdn.idcfcloud.com/api/v1/service/①CDNサービスID/version/②CDNサービスバージョン/logging/gcs/④name(既存のログストリーミング設定の名前) \
-H 'X-IDCF-CDN-APIKEY: ③CDNAPIアカウントキー' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{"name": "④name", "bucket_name": "⑤bucket_name", "user": "⑥user", "secret_key": "⑦secret_key","period": "⑧period"}'
							

特定のパラメータのみの更新であっても、上記のパラメータは全て必要になります。
更新対象のパラメータのみ指定してもエラーとなりますのでご注意ください。

6-3.ログフォーマットの設定(参考)

ログフォーマットの設定を更新する方法を紹介します。
ログフォーマットの設定を行うにあたっては次のパラメータが必要となります。

①CDN サービスID
②CDN サービスバージョン
③CDN APIアカウントキー
④name
⑤bucket_name
⑥user
⑦secret_key
⑧period
⑨logformat

⑨logformatは次のような形式で設定します。
設定パラメータ例

%h %H %v %t %r %>s
							

各パラメータの意味
%h リモート IP アドレス
%H リクエストのプロトコル
%v リクエストのドメイン名
%t リクエストが受信された時刻。標準の英語形式(例 01/Jan/1970:00:00:00 -0700)最後の数字は GMT からのタイムゾーンオフセットを示します。
%r リクエストの最初の行
%>s 最後のリクエストのステータス

設定可能なログフォーマットに関しては、こちらをご確認ください。

次のような設定を行います。

curl -X PUT https://cdn.idcfcloud.com/api/v1/service/①CDNサービスID/version/②CDNサービスバージョン/logging/gcs/④name(既存のログストリーミング設定の名前) \
-H 'X-IDCF-CDN-APIKEY: ③CDNAPIアカウントキー' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{"name": "④name","format":"⑨logformat", "bucket_name": "⑤bucket_name", "user": "⑥user", "secret_key": "⑦secret_key","period": "⑧period"}'
							

実行内容例

# curl -X PUT https://cdn.idcfcloud.com/api/v1/service/abcd1234EFGH5678/version/2/logging/gcs \
-H 'X-IDCF-CDN-APIKEY: 1234567890_aBcDeFgHiJkLmNoPqRsTuVwXyZ' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{"name": "setting-logstream-test", "format":"%h %H %v %t %r %>s", "bucket_name": "logstream-test-idcf", "user": "logstream-test-idcf@idcf-test-20001111-111111.iam.gserviceaccount.com", "secret_key": "-----BEGIN PRIVATE KEY-----¥nABCD … 1234¥n-----END PRIVATE KEY-----¥n","period": "1800"}'
							

このページの先頭へ このページの先頭へ