Akamai API入門 Part 3 — 手軽なAPI実行ツール、Akamai CLI
【過去のポスト】
- Akamai API入門 Part 1 — API Client & EdgeGrid
- Akamai API入門 Part 2 — APIの活用
【本記事のゴール】
本記事では、Akamai が提供する Akamai CLI を紹介し、Akamai CLI の準備過程から実行までカバーしていきます。最後まで進めて頂くことで皆さまの状況に合わせた Akamai CLI のご利用シーンが見つかり、Akamai をより効率よくご利用頂くと同時に、皆さまの作業工数の削減に繋がることを目指しています。
【本記事作成の背景】
開発者ではない方が API の概念や利用方法を理解したとしても、業務環境ですぐ活用できる高度なコードを作成することは容易ではありません。Python のようなスクリプト言語を少し学び始めた人にとって複雑なビジネスロジックやサードパーティアプリケーションとの連携まで考慮した業務自動化を実現するコードの開発はとても難しく感じられるでしょう。その悩みと挑戦は価値あるものですが、その努力にかけられる時間は限定的です。
このような利用者の悩みを理解しているサービス提供者は、自社 API の活用方法をより簡素化するための専用ツールを提供する場合があります。そのようなツールを利用することで、よくある API 活用シーンを最低限の努力で自動化することができます。また、このようなツールは Shell で実行する CLI 形式で提供することが多く、その結果もすぐ確認できるため他社アプリケーションとの連携が容易です。本記事で紹介する Akamai CLI が、そのようなツールの一つです。
下記イメージをご覧ください。赤字は Akamai が直接提供するものです。
左に近づくほど自由度は増えますが、その分の責任(利用準備や自己切り分け)と手間がかかる傾向があります。一方、右に近づくほど事前定義された機能しか提供しないものの、すぐ使える上メーカーサポートを簡単に受けられるメリットがあります。このように各ツールはそれぞれの特性を持つため、すべての状況で完璧なツールはありません。各々の状況を踏まえたツールを取捨選択する必要があります。
DevOps 志向者であっても最初から全工程を手作業で作るのではなく、適切なツール選択により時間を節約できます。そのためには、まずどのようなツールが存在するかを把握することが大事です。使えるツールが分かれば、自動化が求められるシーンで各自のアイディアを活かし、環境や業務状況に合わせた自動化を実現しやすくなります。本記事は、そのツールの一つである Akamai CLI について理解頂き、ご利用頂きたいという気持ちで作成しました。
【事前準備事項、アジェンダ】
■ 本記事作成に利用した試験環境及びソフトウェア
- CentOS Linux 7.9.2009
- Akamai CLI v1.3.1、Purge パッケージ v1.0.1、CPS パッケージ v1.0.8
■ 本記事を読むための必要な知識
-(Linux 利用者に限定し)Linux 利用における基礎レベルの理解がある
-(コンテナ利用者の場合)Docker 利用における基礎レベルの理解がある
- Akamai API Credentials 情報の作成や取得、セットアップ方法の理解がある ⇒ 参照記事
■ アジェンダ
【4. API Credentials 情報のセットアップ】
【1. Akamai CLI の紹介】
■ Akamai CLI とは
- Akamai CLI (Command Line Interface) はターミナルで操作するツール群です。
- Akamai CLI は、用意された機能の集まり(パッケージ)を活用するためのベースとなるプログラムです。
Akamai CLI とは、Akamai が外部公開した API 機能を簡単なコマンドで実行可能とするツールです。Akamai CLI より API ユーザーは API の動作スキームや認証プロセスに沿った開発工数を省いてすぐ API を実行できます。2021 年時点、Akamai CLI は MacOS(10.12 Sierra 以上)、Windows 10、そしてほとんどの汎用 Linux で動作します。
※ 参照:Akamai CLI の紹介
https://developer.akamai.com/cli
■ Akamai CLI で操作できる API 機能
Akamai CLI で操作可能な API はその特性や目的によりグループ化しています。各グループはパッケージと呼ばれ、API レスポンスをユーザーが理解しやすくするために、多くはカスタマイズされています。2021 年時点で20個を超えるパッケージが用意されており、配信設定操作(Property Manager)、証明書管理(CPS)、パージ(CCUv3)、DNS Zone 管理(Edge DNS)、Terraform 連携(Terraform Onboarding)、AppSec(Cloud Security)、EAA & ETP(Enterprise Security)など API を利用した実用シーンが多いコンポーネントを中心に提供され、その領域を拡げています。
■ Docker コンテナとして提供
Akamai CLI 及びパッケージをコンテナ化して提供します。API ユーザーは依存性とリソース管理の課題から離れることができます。
■ なぜ Akamai CLI を知ることが大事なのか?
前述の通り比較的に簡単な自動化を目的としたツールとして、多く使われる API 機能を簡易コマンドで提供する Akamai CLI は手軽に採用できる API 実行手段の候補になります。また、ほぼすべてのパッケージ機能が1行や2行のコマンドと関連データソース(JSON ファイルなど)で完結する Akamai CLI は、そのコマンドだけでなく結果フィードバック確認も同じターミナルで行えるため、CLI 環境で実行する様々なサードパーティアプリケーションやスクリプトと容易に連携することができます。
■ Akamai が提供する機能と、自動化や他社ツールとの相性を表したイメージ
- Akamai Control Center ポータルなどで提供する事前定義された機能は、外部ツールとの連携が難しいです。ただ、DIY ですべて開発するのも簡単ではありません。
- Akamai 外部公開 API 機能の中で Akamai CLI が対応する領域であれば、DIY で一から開発する必要がありません。
【2. CLI 動作のための環境整備】
本記事では CentOS Linux 7 を利用しますので、Linux のバイナリ動作方法について解説します。MacOS や Windows ユーザーはそれぞれのガイドを参照ください。Linux 環境で Akamai CLI を用いた API 機能を実行する場合、そのコンポーネントは Akamai CLI と各パッケージで構成され、各コンポーネントの技術要件を満たす必要があります。言い換えれば、依存性の解決です。まずは Akamai CLI の情報を見てみます。
■ Akamai CLI の技術要件
2021 年時点、Akamai CLI が正しく動作させるためには「GoLang(バージョン 1.14 以上)」が必要です。GoLang はホームページ「https://go.dev/dl/」でダウンロードすることもできますが、本記事では Linux での実行となるため CentOS の epel リポジトリを使い Yum でインストールします。インストール後、バージョン 1.14 以上の GoLang が確認できれば成功です。
$ sudo yum install epel-release ### epel リポジトリの追加 ###
--- snip ---
Install 1 Package
Total download size: 15 k
Installed size: 24 k
Is this ok [y/d/N]: y ### インストール確認 ###
--- snip ---
Installed:
epel-release.noarch 0:7-11
Complete!
$ sudo yum install golang ### GoLang のインストール ###
--- snip ---
Total download size: 144 M
Installed size: 455 M
Is this ok [y/d/N]: y ### インストール確認 ###
--- snip ---
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Importing GPG key 0x352C64E5:
Userid : "Fedora EPEL (7) <epel@fedoraproject.org>"
Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
Package : epel-release-7-11.noarch (@extras)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Is this ok [y/N]: y ### GoLang パッケージのキー確認 ###
--- snip ---
Complete!
$ go version ### GoLang バージョン 確認 ###
go version go1.15.14 linux/amd64
Akamai CLI に対する GoLang 要件以外、各パッケージにおける技術要件が存在する場合があります。2021年時点で公開されているパッケージでは、下記 4 つのどれかが必要となります。下記バージョンで依存性問題は解消されますので、この最低バージョンを満たす形で皆さまの環境に合わせてバージョンを選択ください。事前にすべてインストールしていくのも一つの方法です。
・GoLang バージョン 1.14 以上「https://go.dev/dl/」
・Python バージョン 3.6 以上「https://www.python.org/downloads/」
・Java(JRE 又は JDK)バージョン 8「https://java.com/en/download/」
・Node.JS LTS バージョン「https://nodejs.org/en/about/releases/」
各パッケージの技術要件は下記リポジトリ URL で確認できます。
「https://github.com/akamai/cli-{Package Name}/blob/master/cli.json」
各パッケージのリポジトリは、下記リポジトリ URL 内の検索で ”cli-“ キーワードにより検索できます。
例えばPurge CLI パッケージに場合 GoLang バージョン 1.8.0 以上を必要とすることが分かります。
■ Akamai CLI ダウンロード
Akamai CLI 及び必要なパッケージの技術要件を満たした後、Akamai CLI リポジトリでバイナリをダウンロードします。2021 年時点でバージョン 1.3.1 が最新です。私は 64bit Linux を利用しますので「akamai-1.3.1-linuxamd64」をダウンロードする必要がありますが、MacOS や Windows ユーザー含め、皆様はご自分の環境に合うファイルを選択ください。
※ Akamai CLIリポジトリAssets URL
バイナリをダウンロードし、実行権限を付与(chmod +x)、Path を解決(本記事では ”/usr/local/bin/” にバイナリを置きます)、使いやすい簡単なコマンド名(本記事では ”akamai”)に変更して完了です。
$ sudo wget https://github.com/akamai/cli/releases/download/1.3.1/akamai-1.3.1-linuxamd64 ### wget でダウンロード ###
--- snip ---
100%[============================================================================================>] 14,678,016 8.08MB/s in 1.7s
2021-12-27 14:36:33 (8.08 MB/s) - 'akamai-1.3.1-linuxamd64' saved [14678016/14678016]
$ sudo chmod +x akamai-1.3.1-linuxamd64 ### 実行権限付与 ###
[elfin@localhost ~]$ sudo mv akamai-1.3.1-linuxamd64 /usr/local/bin/akamai ### Path 解決のためファイル移動、簡単に実行するためファイル名変更 ###
$ ls /usr/bin/ -l | grep akamai ### 結果の確認 ###
-rwxr-xr-x. 1 root root 14678016 Dec 8 21:54 akamai
では、”akamai” とコマンドを入力し結果を確認しましょう。実行環境により異なりますが、最初実行時のみ、Akamai CLI の自動アップデートや API 利用統計データに対する Akamai への情報共有可否を問われる場合があります。API 利用統計データの共有は、継続的な API 機能の改善を目的にして活用されます。個人情報は含まれません。
$ akamai ### Akamai CLI 実行 ###
Welcome to Akamai CLI v1.3.1
? Akamai CLI can auto-update itself, would you like to enable daily checks? [Y/n]: Y ### Akamai CLI の自動アップデート可否 ###
Help Akamai improve Akamai CLI by automatically sending anonymous diagnostics and usage data.
Examples of data being sent include upgrade statistics, and packages installed and updated.
Note: if you choose to opt-out, a single %s event will be submitted to help track overall usage.
? Send anonymous diagnostics and usage data to Akamai? [Y/n]: Y ### Akamai CLI による API 機能の利用統計を Akamai に送信可否 ###
--- snip ---
Copyright (C) Akamai Technologies, Inc
Akamai CLI の準備が完了したので必要パッケージをインストールする必要がありますが、後ほど説明します。
【3. Docker コンテナの利用準備】
多くの企業では実行環境の隔離、依存性の解決、リソース最適化、コードのバージョン管理、機能のコンポーネント化などを求めたコンテナの活用が一般的になっています。Akamai CLI は利用するパッケージを統合した状態で Docker コンテナとして提供しています。
本章では Docker コンテナのご利用を希望する方々向けの利用手順を解説していきます。もしバイナリとして Akamai CLI を利用する方は、本章をスキップし次の章に進んでください。
Akamai CLI コンテナの利用に関する情報は下記 URL で確認可能です。
※ Akamai CLI Docker リポジトリ URL
「https://github.com/akamai/akamai-docker」
■ Docker インストール及び実行
Docker をインストールし、Docker Daemon を起動します。本例では Linux でのインストール手順をお見せします。
$ sudo yum install docker ### Docker インストール ###
--- snip ---
Total download size: 28 M
Installed size: 97 M
Is this ok [y/d/N]: y ### インストール確認 ###
--- snip ---
Complete!
$ sudo systemctl start docker ### Docker Daemon 起動 ###
$ sudo docker version ### Docker 状態確認 ###
Client:
Version: 1.13.1
API version: 1.26
Package version: docker-1.13.1-208.git7d71120.el7_9.x86_64
Go version: go1.10.3
Git commit: 7d71120/1.13.1
Built: Mon Jun 7 15:36:09 2021
OS/Arch: linux/amd64
Server:
Version: 1.13.1
API version: 1.26 (minimum version 1.12)
Package version: docker-1.13.1-208.git7d71120.el7_9.x86_64
Go version: go1.10.3
Git commit: 7d71120/1.13.1
Built: Mon Jun 7 15:36:09 2021
OS/Arch: linux/amd64
Experimental: false
■ 必要な Docker イメージのダウンロード
Akamai CLI は利用可能なパッケージ単位で Docker イメージを提供しています。”docker search akamai” コマンドで各パッケージに対応した Docker イメージを確認できます。また、例外として「akamai/shell」があり、全パッケージを一つのコンテナで実行可能にしたイメージです。本記事では「akamai/shell」を利用します。
$ sudo docker search akamai ### Docker Hub に公開している Akamai 関連イメージ確認 ###
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/akamaiesi/ets-docker A dockerized version of Akamai's Edge Side... 7 [OK]
docker.io docker.io/akamai/shell Akamai CLI with most CLI packages pre-inst... 2
docker.io docker.io/akamai/cli Manage and configure Akamai from the Comma... 1 [OK]
docker.io docker.io/akamai/jsonnet CLI module for managing configurations as ... 1
docker.io docker.io/akamai/adaptive-acceleration Adaptive Acceleration CLI. See https://git... 0
docker.io docker.io/akamai/akamai-docker Deprecated Akamai Developer Environment. U... 0
docker.io docker.io/akamai/api-gateway API Gateway CLI. See https://github.com/ak... 0
docker.io docker.io/akamai/appsec Appsec CLI https://github.com/akamai/cli-a... 0
docker.io docker.io/akamai/cloudlets Cloudlets CLI https://github.com/akamai/cl... 0
docker.io docker.io/akamai/cps Certificate Provisioning System CLI https:... 0
docker.io docker.io/akamai/dns DNS CLI https://github.com/akamai/cli-dns 0
docker.io docker.io/akamai/eaa Enterprise Application Access CLI https://... 0
docker.io docker.io/akamai/edgeworkers Edgeworkers CLI https://github.com/akamai/... 0
docker.io docker.io/akamai/firewall Firewall Rules & Site Shield CLI https://g... 0
docker.io docker.io/akamai/httpie HTTPie with Akamai EdgeGrid Authentication... 0
docker.io docker.io/akamai/image-manager Image Manager CLI https://github.com/akama... 0
docker.io docker.io/akamai/onboard Onboard CLI package https://github.com/aka... 0
docker.io docker.io/akamai/property-manager Property Manager CLI https://github.com/ak... 0
docker.io docker.io/akamai/purge Fast Purge CLI https://github.com/akamai/c... 0
docker.io docker.io/akamai/sandbox Sandbox CLI https://github.com/akamai/cli-... 0
docker.io docker.io/akamai/terraform Akamai Terraform provider https://github.c... 0
docker.io docker.io/akamai/terraform-cli Akamai Terraform CLI https://github.com/ak... 0
docker.io docker.io/akamai/visitor-prioritization Visitor Prioritization CLI https://github.... 0
docker.io docker.io/lukaszczerpak/akamai-devops-labs Akamai DevOps environment 0
docker.io docker.io/wizardsofthecoast/akamai_purge 0
$ sudo docker image pull akamai/shell ### 「akamai/shell」イメージダウンロード ###
Using default tag: latest
--- snip ---
Status: Downloaded newer image for docker.io/akamai/shell:latest
■ Docker コンテナ実行
では、ダウンロードした Docker イメージをコンテナとして実行しましょう。
$ sudo docker image ls ### ダウンロードした Docker イメージ確認 ###
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/akamai/shell latest cec24269f015 31 hours ago 500 MB
$ sudo docker run --rm -it --privileged akamai/shell ### 「akamai/shell」イメージを起動し、そのコンテナにコンソール接続 ###
[sudo] password for elfin: {パスワードの入力}
___ __ _
/ | / /______ _____ ___ ____ _(_)
/ /| | / //_/ __ `/ __ `__ \/ __ `/ /
/ ___ |/ ,< / /_/ / / / / / / /_/ / /
/_/ |_/_/|_|\__,_/_/ /_/ /_/\__,_/_/
===============================================================
= Welcome to the Akamai Docker Image =
===============================================================
= Project page: =
= https://github.com/akamai/akamai-docker =
===============================================================
Akamai DevOps [/workdir] >> akamai ### 「akamai/shell」コンテナ内部で Akamai CLI を実行 ###
Usage:
akamai [global flags] command [command flags] [arguments...]
--- snip ---
Installed Commands:
adaptive-acceleration (aliases: a2, adaptive-acceleration/adaptive-acceleration)
api-gateway (alias: api-gateway/api-gateway)
api-keys (alias: api-gateway/api-keys)
--- snip ---
結果のようにコンテナ内部で Akamai CLI が実行でき、かつパッケージ(akamai/shell ではない場合は該当するパッケージのみ)が含まれていることを確認できます。これでコンテナとしての Akamai CLI 実行準備が完了しました。
【4. API Credentials 情報のセットアップ】
Akamai CLI も API Credentials 情報を利用します。Akamai CLI 及びパッケージ実行前に、利用するパッケージ(API 機能)に対する権限が付与された API Credentials 情報を取得~セットしておく必要があります。Akamai API Credentials 情報の取得~セットアップについては、下記記事を参照ください。
※ Akamai API入門 Part 1 — API Client & EdgeGrid
「https://www.akamai.com/ja/blog/developers/akamai-api-part1-api-client-edgegrid」
Linux の場合 API Credentials 情報を「/home/{Username}/.edgerc」ファイルに適切な Section 名でセットするが前提です。各パッケージにおける Credentials Section 名は ”akamai {package name}” コマンドで確認できます。
例えば Purge パッケージに対して Section 名を確認した結果、デフォルト「/home/elfin/.edgerc」ファイルの「ccu」という Section 名を参照することになっていることが分かります。
$ akamai purge ### Purge Package に対する Global Flags を確認するための空コマンド ###
--- snip ---
Global Flags:
--edgerc value Location of the credentials file (default: "/home/elfin/.edgerc") [$AKAMAI_EDGERC]
--section value Section of the credentials file (default: "ccu") [$AKAMAI_EDGERC_SECTION]
Copyright (C) Akamai Technologies, Inc
コンテナ内で実行する場合、コンテナには root 権限で接近するため「/root/.edgerc」ファイルを用意する必要があります。下記のようにローカルストレージに保存している Credentials 情報が含まれたディレクトリーボリュームをコンテナ内部にバインドすることで Credentials 情報を参照させることができます。
$ sudo docker run --rm -it --privileged -v /home/elfin/:/root/ akamai/shell ### ローカルストレージファイルをコンテナ内にバインド ###
___ __ _
/ | / /______ _____ ___ ____ _(_)
/ /| | / //_/ __ `/ __ `__ \/ __ `/ /
/ ___ |/ ,< / /_/ / / / / / / /_/ / /
/_/ |_/_/|_|\__,_/_/ /_/ /_/\__,_/_/
===============================================================
= Welcome to the Akamai Docker Image =
===============================================================
= Project page: =
= https://github.com/akamai/akamai-docker =
===============================================================
Akamai DevOps [/workdir] >> ls /root/.edgerc -al ### バインド結果確認 ###
-rw-rw-r-- 1 1000 1000 1462 Oct 27 22:58 /root/.edgerc
また、Akamai CLI のオプションコマンド(”--edgerc value” または ”--section value”)を利用しパッケージコマンド実行時に参照する Credentials 情報先や Section 名を都度変更することができます。
【5. Akamai CLI Package の実行例】
では、Akamai CLI を利用して API 機能を実行してみましょう。本記事では Purge Package と CPS Package を利用します。また、Akamai CLI のパッケージをインストールする手順も簡単にご紹介します。もしすぐにご利用したい場合はコンテナを利用するのがお勧めです。コンテナ利用時はパッケージのインストールは不要となります。
※ Akamai CLI パッケージ群のドキュメント URL
「https://developer.akamai.com/cli-packages」
まず、パッケージの前に Akamai CLI の基本的な操作方法を解説します。
■ Akamai CLI
前述でバイナリ名を 「akamai」に変更したため、”akamai” コマンドを実行することでインストールされたパッケージの確認や Global なオプションを確認できます。
$ akamai ### Akamai CLI のパッケージやオプション確認 ###
Usage:
akamai [global flags] command [command flags] [arguments...]
Built-In Commands:
config
help
install (alias: get)
list
search
uninstall
update
upgrade
Installed Commands:
netstorage (alias: netstorage/netstorage)
pipeline (aliases: pl, pd, proddeploy, property-manager/pipeline)
property (alias: property/property)
property-manager (aliases: pm, snippets, property-manager/property-manager)
Global Flags:
--bash Output bash auto-complete (default: false)
--zsh Output zsh auto-complete (default: false)
--proxy value Set a proxy to use
--edgerc value, -e value edgerc config path passed to executed commands, defaults to ~/.edgerc
--section value, -s value edgerc section name passed to executed commands, defaults to 'default'
--version Output CLI version (default: false)
パッケージの検索は ”akamai search {keyword}”、各 Package のインストールや削除は ”akamai install {パッケージ名}” と ”akamai uninstall {パッケージ名}” で行います。
$ akamai search purge ### ‘Purge’ キーワードが含まれた Package の確認 ###
Results Found: 1
Package: Purge [purge]
Command: purge
Version: 1.0.1
Description: Purge content from the Edge
Install using "akamai install [package]".
$ akamai install purge ### Purge パッケージインストール ###
Attempting to fetch command from https://github.com/akamai/cli-purge.git... ... [OK]
Installing... ... [OK]
--- snip ---
See "akamai help [command]" for details.
$ akamai uninstall purge ### Purge パッケージアンインストール ###
Attempting to uninstall "purge" command... ... [OK]
“akamai {パッケージ名}” コマンドにより、該当パッケージが対応するサブコマンドを確認できます。
$ akamai purge ### Purge パッケージが対応するのサブコマンド確認 ###
Usage:
akamai purge [global flags] command [command flags] [arguments...]
Description:
Purge Content from the Edge. URLs/CPCodes/Tags may be specified as a list of arguments, or piped in via STDIN
Built-In Commands:
Invalidate
Delete
List
Help
Global Flags:
--edgerc value Location of the credentials file (default: "/home/elfin/.edgerc") [$AKAMAI_EDGERC]
--section value Section of the credentials file (default: "ccu") [$AKAMAI_EDGERC_SECTION]
Copyright (C) Akamai Technologies, Inc
では、Purge と CPS パッケージを実行してみましょう。
■ Purge パッケージ
Purge パッケージは Akamai が提供する FastPurge(CCUv3)の API 機能を CLI 化したものです。
※ Purge パッケージリポジトリ URL
「https://developer.akamai.com/cli/packages/purge.html」
a. 技術要件を確認し、必要であれば技術要件を満たします。Purge パッケージは GoLang 1.8.0 以上を求めることが分かります。
b. Purge パッケージをインストールします。
$ akamai install purge ### Purge Package インストール ###
Attempting to fetch command from https://github.com/akamai/cli-purge.git... ... [OK]
Installing... ... [OK]
--- snip ---
See "akamai help [command]" for details.
c. Purge を実施し、結果を確認します。この例では、CP Code 1170809 を持つコンテンツを Purge しました。
$ akamai purge invalidate --cpcode 1170809 ### CP Code 1170809 のコンテンツをパージ ###
Purging...... [OK]
Purged 1 objects (ETA: 5 seconds)
Purge ID: eicp-F1yFQnzE9cuaAQ48yJCsgu
■ CPS パッケージ(Certificate Provisioning System)
CPS パッケージは、Akamai が提供する証明書管理システムである CPS の API 機能を CLI 化したものです。CPS に登録した証明書の情報、申請状態の確認、操作することができます。特に Property Manager API などを利用して配信設定を作成、Hostname を TLS 化したい場合には CPS 登録済み証明書の Enrollment ID 情報が必要になりますが、CPS パッケージでその情報を簡単に取得できます。
※ CPS パッケージリポジトリ URL
「https://developer.akamai.com/cli/packages/cps.html」
a. 技術要件を確認し、必要であれば技術要件を満たします。CPS パッケージは Python 3.0.0 以上を求めることが分かります。
b. CPS パッケージをインストールします。
$ akamai install cps ### CPS パッケージインストール ###
Attempting to fetch command from https://github.com/akamai/cli-cps.git... ... [OK]
Installing... ... [OK]
--- snip ---
See "akamai help [command]" for details.
c. CPS Package 機能を実行し、結果を確認します。本例では、アクセス可能なすべての証明書リスト情報を取得しました。
$ akamai cps list ### 証明書リストの確認 ###
Cache not found. You must create it to continue [Y/n]: Y ### ストレージに証明書リスト情報がないため、リストファイルの作成可否を聞く ###
Trying to get contract details from [cps] section of ~/.edgerc file
Processing Enrollments for contract: 1-GNLXD
66 total enrollments found.
Enrollments details are stored in "setup/enrollments.json".
Run 'list' to see all enrollments.
+---------------+---------------------------------------+------------------+---------------+-----------------------+
| Enrollment ID | Common Name (SAN Count) | Certificate Type | *In-Progress* | Test on Staging First |
+---------------+---------------------------------------+------------------+---------------+-----------------------+
| 129906 | *.shki.tokyo | ov wildcard | No | No |
+---------------+---------------------------------------+------------------+---------------+-----------------------+
** means enrollment has existing pending changes
どうでしょうか?とても簡単かつ短時間で API 機能を実行することができました。CPS list 機能では、JSON 形式のレスポンスを人が読みやすいように整形する作業も行われました。本来であれば Credentials 情報を利用した認可スキームに従い通信させ、その結果を見やすいように変化する処理までのロジックをコードとして作らないといけなかったものを、1行のコマンドで実現することができました。
【6. まとめ】
いかがでしょうか?少しでも Akamai CLI の魅力を感じて頂いて、皆様が直面している繰り返し作業や DevOps 化の課題で Akamai CLI を利用してみる気持ちになって頂いていれば幸いです。まず簡単なものから Akamai CLI を活用し、自動化してみてはいかがでしょうか。
また、お客様の Akamai 運用で手間がかかり課題と思われるコンポーネントが Akamai CLI の Package として用意されていれば、その Package のドキュメントを確認し既存ワークフローを簡素化できる方法を見つけだしましょう。なかなか良いアイディアが浮かばないという場合は、ぜひお客様の業務自動化に向けて一緒に考えさせていただきますので、お気軽に Akamai 技術担当者までお問合せください。
最後に、本記事では紹介しておりませんが、Akamai CLI は IaC(Terraforming)や Jenkins のような CI ツールとの連携も可能です。お客様の運用環境次第で様々なユースケースを生み出せると考えています。