Akamai CLI
Akamai CLI を使用すると、コマンドラインから直接アカマイ製品の設定と管理が行えます。Akamai CLI のインストール の記事を参考にして簡単にインストールできます。インストールがすでに成功している方はここで示した記事を見る必要はありません。この記事では macOS 環境での例となっていますで、Windows 環境では適時コマンドの Syntax を変更して解釈してください。
Docker を使うメリット
Akamai CLI を利用するのに Docker は必須ではありません。しかし、利用すると次のような便利なこともあります。
-
インストールをスキップしてすぐに使いたい
-
環境に依存したインストールの問題を回避したい
Akamai CLI はローカル環境でいくつかのツールに依存することがあります。Akamai が提供する Docker Development Environment (以後、Akamai Docker イメージ)を利用すれば、それらの依存性を回避し、すぐに Akamai CLI を利用することができます。 -
CI/CD パイプラインに組み込みたい
Docker を使えば、CI/CD パイプラインなどに組み込むことが容易になります。例えば、CircleCI のようなツールを使って、パイプライン上で Akamai EdgeWorkers CLI をクラウド上で動かすために Docker イメージを活用する、といったこともできます。
Docker を使うデメリット
少なくとも Docker のプロセスをローカル環境(ホストOS)上で起動させる必要があります。Docker のプロセスは軽いとはいえ、コンピュータリソースを消費しています。また、Akamai Docker イメージはサードパーティのツールが含まれていないため、用途によっては更に追加のコードや他のコマンドを起動する必要があります。
Akamai Docker イメージの準備
以下に公開されているページに、提供されるイメージのインストールと起動の方法が書かれています。
akamai/shell をプルすれば、全てのコマンドが含まれていますので、こちらの利用をお勧めします。
docker pull akamai/shell
キャッシュのパージ目的だけであれば、akamai/purge をプルすれば良いです。
docker pull akamai/purge
Akamai Docker イメージの利用
ローカル環境(ホストOSとして macOS を例にしています)で Docker イメージを起動します。
docker run --rm -it -v $HOME/.edgerc:/root/.edgerc:ro akamai/shell
起動が成功すると次のようなメッセージが表示されます。
___ __ _
/ | / /______ _____ ___ ____ _(_)
/ /| | / //_/ __ `/ __ `__ \/ __ `/ /
/ ___ |/ ,< / /_/ / / / / / / /_/ / /
/_/ |_/_/|_|\__,_/_/ /_/ /_/\__,_/_/
===============================================================
= Welcome to the Akamai Docker Image =
===============================================================
= Project page: =
= https://github.com/akamai/akamai-docker =
===============================================================
Akamai CLI もインストールされています。
Akamai DevOps [~] >> akamai
Usage:
akamai [global flags] command [command flags] [arguments...]
Built-In Commands:
config
help
install (alias: get)
list
search
uninstall
update
upgrade
Installed Commands:
adaptive-acceleration (aliases: a2, adaptive-acceleration/adaptive-acceleration)
api-gateway (alias: api-gateway/api-gateway)
api-keys (alias: api-gateway/api-keys)
api-security (alias: api-gateway/api-security)
appsec (alias: appsec/appsec)
cloudlets (aliases: cloudlets, cloudlets/cloudlets)
cps (aliases: certs, cps/cps)
dns (alias: dns/dns)
eaa (alias: eaa/eaa)
edgekv (aliases: ekv, edgekv, edgeworkers/edgekv)
edgeworkers (aliases: ew, edgeworkers, edgeworkers/edgeworkers)
etp (alias: etp/etp)
firewall (aliases: fw, firewall/firewall)
gtm (alias: gtm/gtm)
image-manager (aliases: im, image-manager/image-manager)
jsonnet (aliases: jsonnet, jsonnet/jsonnet)
onboard (aliases: onboard, onboard/onboard)
pipeline (aliases: pl, pd, proddeploy, property-manager/pipeline)
property (alias: property/property)
property-manager (aliases: pm, snippets, property-manager/property-manager)
purge (alias: purge/purge)
sandbox (alias: sandbox/sandbox)
site-shield (aliases: ss, firewall/site-shield)
terraform (alias: terraform/terraform)
video-manager (aliases: vm, image-manager/video-manager)
visitor-prioritization (aliases: vp, visitor-prioritization/visitor-prioritization)
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)
Copyright (C) Akamai Technologies, Inc
Akamai EdgeWorkers の開発で Docker を利用するケース
Akamai Docker イメージを使えば Akamai EdgeWorkers CLI と Akamai Sandbox CLI をすぐに使えます。EdgeWorkers はエッジで JavaScript が動作できるサーバーレスのプラットフォームであり、Sandbox は EdgeWorkers などをローカルで動作できるテスト環境です。Akamai Docker イメージは一般的な開発やテスト環境を提供していないため、単体で完全な開発環境とはなりません。例えば、Visual Studio を使ってコードを書いたり、ブラウザを使ってコードの実行確認をするには、提供されている Docker イメージだけでは実現できません。しかし、次のように、ローカルホストと Docker 環境の間でディスクを共有することで、この問題は回避できます。
docker run -p 8080:9550 -it -v $HOME/dev/docker:/root/ -v \
$HOME/dev/sandboxes:/cli/.akamai-cli/cache/sandbox-cli/sandboxes/ \
akamai/shell
上記の例は Sandbox のログをローカル環境からも見られるようにした例ですが、必要なければ次のコマンドでも良いです。
docker run -p 8080:9550 -it -v $HOME/dev/docker:/root/ -v akamai/shell
Sandbox は起動したホスト内でローカルプロキシーとして 9550 ポートを利用します(設定で変更することも可能)。-p 8080:9550
を指定することで、ローカルホスト内で起動したブラウザから 8080 ポート経由で Docker で動作している Sandbox 環境に接続できます。通常 EdgeWorkers では curl コマンドなどでリクエスト/レスポンスを確認できますが、ブラウザの挙動を確認したい場合はポートのマッピングを指定してください。通常は不要です。
-v $HOME/dev/docker:/root/
を指定することで、ローカルディスクと Docker 内のファイルシステムにマウントできます。ローカル環境の $HOME/dev/docker/
が Docker 上の /root/
にマウントされます。Akamai CLI では ~/.edgerc が必要になるので、マウントするディレクトリに .edgerc をコピーしておいてください。
cp ~/.edgerc ~/dev/docker/.edgerc
Sandbox を使って EdgeWorkers の開発をするケース
EdgeWorkers の開発に Akamai Sandbox を使う場合、複数のターミナル(端末)が必要になります。ターミナルを使う例を示します。
ターミナル | 使い方 |
---|---|
Docker ターミナル 1 | Akamai CLI の起動。Curl などでの動作確認など。 |
Docker ターミナル 2 | Akamai Sandbox の起動。フォアグラウンドで動作させ、常にログがコンソールに表示する状況にする。バックグラウンドで動作させれば、このターミナルは不要である。ログはファイルにも書き込みされているので参照は可能。 |
Local Host ターミナル 1 | Visual Studio Code を使った開発 |
Local Host ブラウザ | localhost:8080 経由での動作確認 |
Docker ターミナル 2 の起動
ローカルマシンの複数のターミナルから、同一の Docker 環境に入る方法について説明します。まず、Docker を起動したターミナル 1 で以下のコマンドを実行して Docker のコンテナ ID を入手します。
docker ps
次の出力結果では 2851bb96426e
がコンテナ ID となります。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2851bb96426e akamai/shell "/bin/bash -lc '${0}…" 5 seconds ago Up 4 seconds frosty_engelbart
macOS 上で別のターミナルを立ち上げ、次のコマンドを起動します。-it
で コンテナ ID を指定します。
docker exec -it 2851bb96426e bash
Docker に入れたら、次のように Sandbox が起動できます。
akamai sandbox start
おまけ: HTTPie を使って Akamai API エンドポイントを使う
Docker には Akamai CLI だけでなく、Akamai API をコマンドライン上から利用できる HTTPie も含まれています。HTTPie を使えば、API のリファレンスに沿って、コマンドライン上から、API のエンドポイントに対してリクエストを送り Akamai の設定を制御できます。
Akamai DevOps [/workdir] >> http --auth-type=edgegrid -a default: :/edge-diagnostics/v1/edge-locations
上記の /edge-diagnostics/v1/edge-locations
は Edge Diagnostics API の一つのエンドポイントです。もし権限関係のエラーが表示されたら、ロール設定が API クライアントに付与されていない可能性がありますので、Akamai Control Center の Identify Access Management から Edge Diagnostics に Read 権限が付与されているか確認してください。
Akamai のツール群は EdgeGrid を利用して認証/認可が行われます。HTTPie は EdgeGrid インタフェースを使って提供されるコマンドラインの一つです。--auth-type=edgegrid
と指定があり、.edgerc を読み込んで起動されます。
まとめ
Akamai Docker イメージを利用すると Akamai CLI、HTTPie などのツールをすぐに利用できます。Akamai のツールを学習するには便利ですので、是非ご活用ください。