Alibaba Cloud CLIのインストールから使用まで

この記事はAlibaba Cloudのコマンドラインインターフェイスをインストール・設定・実行する手順です。
CLIに馴染みのない初心者の方も使えるよう、公式ドキュメントでは省いている手順も記載しています。

#Alibaba Cloudについて
世界的規模の中国初のECサイトであるアリババの基盤を支えているクラウドです。
世界的にはAWSやMicrosoft、Googleといった主要クラウド事業者に次いで最も高い成長率を達成*しており、2016.12より日本でのサービス提供を開始しました。
＊米調査会社のSynergy Researchの2017年7月の調査結果より
日本でのサービス展開においては、ソフトバンクと手を組み、SBクラウドという名称でサービス提供しています。
サービスの提供開始とともに東京リージョンが設立され、１つのアカウントで全世界のリージョンが利用可能です。

#Alibaba Cloud CLI をインストールする
[Alibaba Cloudの公式ドキュメント](https://jp.alibabacloud.com/help/doc-detail/66653.htm)を見ながら進めています。
Alibaba Cloud CLI の最新バージョンは Go に基づいているらしいので、Golangをインストールします。
　
Golang のインストールは[こちらのQiita記事](https://qiita.com/megu_ma/items/7208be8de52b712955a0)を参考にさせていただきました！
##Homebrew をインストールする
こちらもQiita経由で[こちらの記事を](https://qiita.com/megu_ma/items/820695ac525030285682)参考にさせていただきました。
以下が大まかな手順です

- Java の確認
- Xcode の確認
- Homebrew をインストール


まずは Java を確認します。　
`$ java -version`を実行すると・・
 
![Snip20180427_2.png](https://qiita-image-store.s3.amazonaws.com/0/100162/f7e12d44-030a-7b16-a2e5-f44bbf2f49c2.png)

とのことで、JDK のインストール画面に飛ぶことができました。そのままインストールします。

お次は Xcode の確認です。`$ xcode-select --install`を実行。

![Snip20180427_3.png](https://qiita-image-store.s3.amazonaws.com/0/100162/8d4e98a6-ae6b-125f-3594-8c3b3d138e00.png)

installed でしたね。Homebrew をインストールするので以下のコマンドを実行しましょう。

```
$ sudo ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

![Snip20180427_4.png](https://qiita-image-store.s3.amazonaws.com/0/100162/0e1110c9-379a-05f5-3c30-2f5f1fe398ac.png)

root で操作しちゃダメだよ！という注意を受けた後、下記コマンドを実行して下準備は終了です。

```
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

ちなみに、この部分はインストールまでに少し時間がかかりました。
##Golang をインストール
準備が整ったので Golang をインストールしていきます。
Homebrew のコマンド `$ brew install go` を実行します。
　
![Snip20180427_6.png](https://qiita-image-store.s3.amazonaws.com/0/100162/8c452d0a-682f-c4f1-a08a-7dbdcb9c6a77.png)
　
インストールが完了すると🍺が・・！
カワイイですね。

Qiita記事に則って「hello.go」を作成しちゃんと goalng が使えるかテストします。

```go:hello.go
package main
import "fmt"

func main(){
    fmt.Printf("Hello, world\n")
}
```

```:ターミナル
$ go version
go version go1.10.1 darwin/amd64

$ go run hello.go
hello, world
```

大丈夫そうですね！
GOPATH の設定をします。

```:Bash
export GOPATH="$HOME/go"
export PATH="$GOPATH/bin:$PATH"
```

##CLIをインストールする
ようやく CLI のインストールです。
公式ドキュメントに従い、golang で下記コマンドを順に実行します。

`1. $ mkdir -p $GOPATH/src/github.com/aliyun
2. $ cd $GOPATH/src/github.com/aliyun
3. $ git clone http://github.com/aliyun/aliyun-cli.git
4. $ git clone http://github.com/aliyun/aliyun-openapi-meta.git
5. $ cd aliyun-cli
6. $ make install`

![Snip20180427_7.png](https://qiita-image-store.s3.amazonaws.com/0/100162/fd95887d-6b96-7b9d-fbbd-38a5c28fb998.png)

#Alibaba Cloud CLI を設定する
CLI の使用を開始する前にコマンド`aliyun configure`を実行し、設定を完了する必要があります。AccessKey ID と AccessKey Secret が必要なので、コンソールから取得しましょう。
 
![Snip20180427_11.png](https://qiita-image-store.s3.amazonaws.com/0/100162/5c8c73b6-6639-a3d4-383d-dad8cc882574.png)

RAMユーザー（AWSでいうIAMユーザー）の作成を推奨されるので、言われた通りに作成しました。

![Snip20180427_8.png](https://qiita-image-store.s3.amazonaws.com/0/100162/f049ad62-1c2d-2d6f-809e-09ec42a18eb4.png)

手順に従い下記コマンドを実行していきます
`1. $ aliyun configure
2. $ Configuring profile 'default' ...
3. $ Aliyun Access Key ID [None]: <Your AccessKey ID>
4. $ Aliyun Access Key Secret [None]: <Your AccessKey Secret>
5. $ Default Region Id [None]: cn-hangzhou
6. $ Default output format [json]: json
7. $ Default Language [zh]: zh`

![Snip20180427_13.png](https://qiita-image-store.s3.amazonaws.com/0/100162/aaa4ca40-55a6-08d2-a7c4-d4f84bed50a3.png)

Default Language のところは en にしました。

#Alibaba Cloud CLIを使ってみる
Alibaba Cloud の API には RPC と RESTful という2つのスタイルがあり、ほとんどのAlibaba Cloud 製品は RPC スタイルを使用しているようです。
Actionパラメータを必要とする API は RPC スタイル、PathPatternパラメータを必要とする API は、RESTful なスタイルみたいです。

下記がAlibaba Cloud CLI で RPC API を呼び出す方法です。
`$ aliyun <product> <operation> --parameter1 value1 --parameter2 value2 ...`
試しに`$ aliyun ecs DescribeRegions`を実行してみました。

![Snip20180427_14.png](https://qiita-image-store.s3.amazonaws.com/0/100162/81832c1a-e374-932f-faad-2eaba092743c.png)

Container Service などの一部の製品は、RESTful API を呼び出す必要があります。
試しにGETのリクエスト`$ aliyun cs GET /clusters`を送ると次のような結果が返ってきました。

![Snip20180427_15.png](https://qiita-image-store.s3.amazonaws.com/0/100162/b2063fff-b668-d9f6-468a-aa4ecb72a9df.png)

今回は以上です。
次回はもう少し踏み込んだ使い方についての記事を書きたいと思います。