aliyuncli を使ってAlibaba Cloudを操作してみた


概要

最近のいくつかのニュースの通り、中国でNo1シャアを持つAlibaba Cloudは日本に登場しました。UI画面では試す方も多いと思いますが、デベロッパーであればコマンドラインツールを使いたがるのでしょう。

Alibaba Cloudを操作するためのコマンドラインツールは aliyuncli というpython cliツールがあります。最新のバージョンは2.1.4のようです。現在このツールが対応しているAlibaba Cloudリソースは以下となっています。

Product SDK
BatchCompute aliyun-python-sdk-batchcompute
Bsn aliyun-python-sdk-bsn
Bss aliyun-python-sdk-bss
Cms aliyun-python-sdk-cms
Crm aliyun-python-sdk-crm
Drds aliyun-python-sdk-drds
Ecs aliyun-python-sdk-ecs
Ess aliyun-python-sdk-ess
Ft aliyun-python-sdk-ft
Ocs aliyun-python-sdk-ocs
Oms aliyun-python-sdk-oms
OssAdmin aliyun-python-sdk-ossadmin
Ram aliyun-python-sdk-ram
Ocs aliyun-python-sdk-ocs
Rds aliyun-python-sdk-rds
Risk aliyun-python-sdk-risk
R-kvstore aliyun-python-r-kvstore
Slb aliyun-python-sdk-slb
Ubsms aliyun-python-sdk-ubsms
Yundun aliyun-python-sdk-yundun

Aliyuncliコマンドラインを使って、Alibaba Cloudリソースを操作してみたいと思います。そして、日本リージョンに展開していないリソースを含むため、日本リージョンに使用可能なリソースだけ試します。

Dockerファイル

Aliyuncli は python コマンドラインツールなので、pythonパッケージをインストールしなければなりません。ちょっと試したいなら、 virtualenv などを使用してもよいでしょうが、最近dockerが流行っていそうなので、dockerで試したいと思います。

そして、DockerFileを準備しました

# cd #directory_have_this_file
# docker build .
# docker images 
# ...
# aliyun                latest              adb983972e8d        2 months ago        220 MB
# ...
# docker run -it aliyun /bin/bash
# aliyuncli configure
# ....
# aliyuncli ecs 
# ....

FROM centos
MAINTAINER Bui Hong Ha

LABEL Install python-pip
RUN curl 'https://bootstrap.pypa.io/get-pip.py' -o 'get-pip.py'
RUN python get-pip.py

LABEL Install aliyuncli
RUN pip install aliyuncli
RUN pip install aliyun-python-sdk-slb aliyun-python-sdk-ecs aliyun-python-sdk-rds aliyun-python-sdk-oss aliyun-python-sdk-r-kvstore

LABEL Installing jq
RUN curl -L https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 -o /bin/jq
RUN chmod +x /bin/jq

LABEL Setup Locale
RUN echo "export LANG=\"en_US.UTF-8\"" >> ~/.bashrc

コマンドを実行してみる

ステップ毎に書きたいと思います。

ステップ 1: Dockerイメージを作成する

DockerFileを基づいて、Docker imageを作ります。Docker fileを保存するところへ移動し、docker build でイメージを作成します。

$ cd docker-file-あるところ
$ ls
total 8
-rw-r--r--  1 user  staff   564B Oct 21 14:06 Dockerfile
$ docker build --tag aliyuncli .
Sending build context to Docker daemon  2.56 kB
Step 1/13 : FROM centos
latest: Pulling from library/centos
93857f76ae30: Pull complete
Digest: sha256:4eda692c08e0a065ae91d74e82fff4af3da307b4341ad61fa61771cc4659af60
Status: Downloaded newer image for centos:latest
 ---> a8493f5f50ff
Step 2/13 : MAINTAINER Bui Hong Ha
 ---> Running in ...
...

出来上がるまで5分ぐらいかかるので、その間にコーヒを入れていきます。

ステップ 2: コンテナを作成

ビルドが問題なく実行完了したら、イメージが出来上がります。docker imagesで以下のイメージが表示されたらOK!

$ docker images
REPOSITORY            TAG                 IMAGE ID            CREATED              SIZE
aliyuncli             latest              2c78aa25abe5        About a minute ago   217 MB

これで、コンテナを起動します。コマンドラインツールを使いたいため、起動時に interactiveをつけて実行します。実行が成功したら、コンテナのコマンド入力に入ります。以下のとおりに表示したら、問題がなくインストール実行できてます

docker run -it aliyuncli /bin/bash
[root@30c2625926e7 /]#
[root@30c2625926e7 /]#
[root@30c2625926e7 /]# aliyuncli
usage: aliyuncli <command> <operation> [options and parameters]
<aliyuncli> the valid command as follows:

ecs                                         | oss
r-kvstore                                   | rds
slb

ステップ 3: Alibabaアカウントアクセスキー設定

アクセスキーを取得するところは、ログイン直後のホームメニューの「AccessKeys」メニューになります。

「AccessKeys」をクリックすると、アクセスキーを取得する画面へ移動し、以下のような画面が表示されます。「AccessKeyの管理続ける」ボタンを押しますと、アクセスキーとsecretsを取得できます

この画面で、アクセスキーの①とアクセスキーの秘密鍵をコピーできます。

①、②をコピーし、コマンドラインを戻って、以下のどおりにconfigureを行います

[root@30c2625926e7 /]# aliyuncli configure
Aliyun Access Key ID [None]: ①でコピーしたアクセスキー
Aliyun Access Key Secret [None]: ②でコピーしたアクセスキーの鍵
Default Region Id [None]: ap-northeast-1
Default output format [None]:

日本リージョンのIDは 【ap-northease-1】となります。デフォルトリージョンをNoneにする場合は【cn-hangzhou】となります。
Apiの出力結果は【None】にする場合、テーブルと表示されます。出力形式はテーブルとJson形式とサポートされます。

ステップ 4: ひたすらコマンドラインを試す

準備はステップ3までに終わったら完了します。次に、いくつかのコマンドラインを試したいと思います

1. ECSインスタンスを取得する

いくつかのECS情報を抽出する

$ aliyuncli ecs DescribeInstances | jq ".Instances.Instance[] | {name: .InstanceName, region: .RegionId, family: .InstanceTypeFamily, cpu: .Cpu, memory: .Memory}"

{
  "name": "instance1",
  "region": "ap-northeast-1",
  "family": "ecs.n4",
  "cpu": 1,
  "memory": 2048
}
{
  "name": "instance2",
  "region": "ap-northeast-1",
  "family": "ecs.n4",
  "cpu": 2,
  "memory": 2048
}
...
2. ECSインスタンスを停止する

コマンドラインでECSインスタンスを停止してみます

$ aliyuncli ecs StopInstance --InstanceId i-6wehmzs9b5uv14a1mmud
{
    "RequestId": "9A05F358-56A8-4D8E-B5AD-37D2F3CB215D"
}

上記のコマンドを実行すると、コンソール画面UI側で暫く待つと「停止済み」の状態に遷移します。

3. ECSインスタンスを起動する

2で停止したインスタンスを起動してみます。

$ aliyuncli ecs StartInstance --InstanceId i-6wehmzs9b5uv14a1mmud
{
    "RequestId": "99FD381B-EE3C-4DC1-B619-56671822986D"
}

コマンドを実行し暫く待つと、インスタンスの状態が「実行中」となります。

4. OSSをaliyuncli操作してみる

準備ステップで設定した configureはアクセスキーの準備だけです。aliyuncliを使ってOSS操作したい場合、別途でaliyuncli oss Config を実行し設定しないといけません。

$ aliyuncli oss Config --host oss-ap-northeast-1.aliyuncs.com --accessid [AccessId] --accesskey [AccessKey]
Your configuration is saved into /root/.aliyuncli/osscredentials .

OSS設定が完了すれば、aliyun oss で実行可能なコマンドを参照できます。

[root@30c2625926e7 /]# aliyuncli oss GetAllBuckets
unsupported command : GetAllBuckets
The valid command as follows::
    GetAllBucket
    CreateBucket              oss://bucket --acl [acl]
    DeleteBucket              oss://bucket
    DeleteWholeBucket         oss://bucket
    GetBucketLocation         oss://bucket
    PutBucketCors             oss://bucket localfile
    GetBucketCors             oss://bucket
    DeleteBucketCors          oss://bucket
...

Bucketを取得してみます

[root@30c2625926e7 /]# aliyuncli oss GetAllBucket
CreateTime           BucketLocation       BucketName
2017-01-24 07:59:13  oss-ap-northeast-1   testbucket111
2017-04-07 07:37:47  oss-cn-qingdao       testbucket222

Bucket Number is: 2
1.551(s) elapsed

結論

Alibaba CloudはGUIコンソール画面だけではなく、充実なCLIツールをサポートしています。Dockerを使うと、簡単にAliyuncli 実行できる環境が作れて試すことができます。Aliyuncliを使えば、いくつかのクラウドリソースの操作を自動化できます。

いくつかの簡単なコマンドを紹介しました。より詳細なコマンドを試したい人はドキュメントを参照できます。後は実際にコマンドを試して打って結果を見るのは大事ですね。