1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Akamai CLI

Akamai CLI を使用すると、コマンドラインから直接アカマイ製品の設定と管理が行えます。Akamai CLI のインストール の記事を参考にして簡単にインストールできます。インストールがすでに成功している方はここで示した記事を見る必要はありません。この記事では macOS 環境での例となっていますで、Windows 環境では適時コマンドの Syntax を変更して解釈してください。

Docker を使うメリット

Akamai CLI を利用するのに Docker は必須ではありません。しかし、利用すると次のような便利なこともあります。

  1. インストールをスキップしてすぐに使いたい

  2. 環境に依存したインストールの問題を回避したい
    Akamai CLI はローカル環境でいくつかのツールに依存することがあります。Akamai が提供する Docker Development Environment (以後、Akamai Docker イメージ)を利用すれば、それらの依存性を回避し、すぐに Akamai CLI を利用することができます。

  3. 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-locationsEdge 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 のツールを学習するには便利ですので、是非ご活用ください。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?