Cloud
コマンドライン
Alibaba
SBクラウド
Alibabaクラウド

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

More than 1 year has passed since last update.


概要

最近のいくつかのニュースの通り、中国で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」メニューになります。

image

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

image

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

image

①、②をコピーし、コマンドラインを戻って、以下のどおりに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側で暫く待つと「停止済み」の状態に遷移します。

image


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

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

$ aliyuncli ecs StartInstance --InstanceId i-6wehmzs9b5uv14a1mmud

{
"RequestId": "99FD381B-EE3C-4DC1-B619-56671822986D"
}

image

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


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を使えば、いくつかのクラウドリソースの操作を自動化できます。

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