概要
AkamaiのGlobal Traffic Management(以下、GTM)からAkamaiのTraffic Management APIを使用して、設定値などを取得できるようにしてみました。PerlのCPANに"Akamai::Edgegrid"という便利なモジュールがあったので、そのモジュールを使用して、Akamai GTMにエントリーされているドメイン名に紐づく全てのIPアドレスを取得・表示させてみることにしました。
以下、実際にAkamai Traffic Management APIでIPアドレスを表示させるために作成したサンプルコード(Perl)です。
サンプルコード
atm_api.pl
atm_api.pl
#!/usr/bin/perl
# ------------------------------------------------------------------------------
# Script Name : atm_api.pl
# Tool Version : 1.0.0
# Argument : -
# Options : -
# Usage : $0
# Return : -
# -------------+-------------------------------------------+--------------------
# Date | Changes | Author
# -------------+-------------------------------------------+--------------------
# 2017/09/07 | New Creation | @bloodia
# ------------------------------------------------------------------------------
# --+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8
use strict;
use warnings;
use Akamai::Edgegrid;
use JSON;
my $client_token = 'クライアントトークン';
my $client_secret = '秘密鍵';
my $access_token = 'アクセストークン';
my $baseuri = 'ベースURI';
my $config_file = "$ENV{HOME}/.edgerc"; # 変更不要
my $section = 'default'; # 変更不要
my $domain = 'ドメイン名';
my $property = 'プロパティ名';
my $ua = new Akamai::Edgegrid(
'client_token' => $client_token,
'client_secret' => $client_secret,
'access_token' => $access_token,
'config_file' => $config_file,
'section' => $section
);
my $response = $ua->get("${baseuri}/config-gtm/v1/domains/${domain}.akadns.net/properties/${property}");
my $data = decode_json($response->content);
foreach (@{$data->{'trafficTargets'}}) {
my $i = 1;
foreach (@{$_->{'servers'}}) {
print "${i}つ目にエントリーされているIPアドレスは、${_}";
print "\n";
$i++;
}
}
HTTPヘッダを自動生成してくれるのでとても便利です。