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を使えば、いくつかのクラウドリソースの操作を自動化できます。
いくつかの簡単なコマンドを紹介しました。より詳細なコマンドを試したい人はドキュメントを参照できます。後は実際にコマンドを試して打って結果を見るのは大事ですね。
Author And Source
この問題について(aliyuncli を使ってAlibaba Cloudを操作してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/talzeus/items/28c773f77b40770a8c42著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .