Alibaba Cloud CLI で ECS のイメージIDを取得する
目次
はじめに
未だに冒頭の書き出しに10分ぐらい迷ってしまいます、技術営業部の高城です。
そんなこんなで今回は、「Alibaba Cloud CLI」を使用して、Alibaba Cloud の仮想サーバー環境「ECS(Elastic Compute Service)」のイメージIDを取得してみようと思います!
Terraform を使って ECS を構築したい時に、どうしてもこの「イメージID」を指定する必要がありますが、どうやらこの「Alibaba Cloud CLI」を使用して、取得する方が早いらしく、今回はその備忘録として、したためておきます。
※ Terraform の記事もいつかちゃんと書きます。。
Alibaba Cloud CLI とは
まず軽くこちらの「Alibaba Cloud CLI」についての解説ですが、普段 AWS をご使用になられている読者様であれば、ザックリ「AWS CLI」の Alibaba Cloud 版と解釈していただいて問題ないかと思います。
ブラウザからではなくCLIでリソースを管理する時に使うツールになりますが、念のため公式ドキュメントへのリンクを記載しておりますので、詳細はそちらをご確認ください!
ちなみに、日本語は準備中(2024.1.18 本記事の公開時点)との事なので、筆者は翻訳ツールを使用して読みました。
大まかな流れ
今回の流れは下記の通りで、今回は Windows11 の PC にインストールされた WSL(Almalinux 8)を使って行います。
- curlコマンドでインストール / 解凍
- 動作確認
- RAMユーザー作成とAPIキーの取得
- Profileの作成
- イメージID取得
- --output を使用した情報の取得
- まとめ
curlコマンドでインストール / 解凍
WSL を開いていただき、Almalinux を起動したら、下記のコマンドでインストールと解凍を行います。
curl -sL https://github.com/aliyun/aliyun-cli/releases/download/v3.0.188/aliyun-cli-linux-3.0.188-amd64.tgz | sudo tar xzC /usr/local/bin
ちなみに Github 上にも詳細な情報がありますので、こちらも併せてご確認ください。
■ Github
■ 公式マニュアル
動作確認
下記のコマンドを実行して、インストールした Alibaba Cloud CLI のバージョンを確認します。
aliyun version
今回だと「3.0.188」と表示されるはずで、これが確認できればOKです!
RAMユーザー作成
ただ、このままでは、まだCLI経由で必要な情報を取得できませんので、ひとまず Administrator 権限を持つユーザーを作成してください。
また、その際出力される、下記の3点の情報をメモしておいてください。
- AccessKey ID
- AccessKey Secret
- Default Region ID
※ ユーザー作成時に CSV で取得する事も出来ます!
Profile の作成
上記3点を控えたら、WSL で Almalinux8 を開いて下記のコマンドを実行してください。
aliyun configure --profile default
そうすると、下記の図1の様に、対話形式で先ほどの情報を聞かれますので、順次入力していきます。
■ 図1
■ 入力順
- AccessKey ID → 個人の情報を入力
- AccessKey Secret → 個人の情報を入力
- Default Region ID → ap-northeast-1
- Default Language → en
最後に「Configure Done !!!」と出れば完了です。
イメージIDの取得
とは言え、このままでは実際に実行するコマンドが分からないのでhelpを確認して、使用できるオプションを確認します!
■ 実行コマンド
aliyun --help
■ 実行結果
長いので、一部抜粋しておりますが、aliyunコマンドで使用できるオプションや、リソースが一覧で表示できるので、今回の要件である「ECS」のリソースを指定して、更に特定のサービスに関する help を調査していきます。
■ 実行コマンド
aliyun ecs --help
■ 実行結果
ここから使用可能なAPIリストが表示されますので、この中で一番該当してそうな「DescribeImages」を使用して、JSON 形式で結果を取得します。
■ 実行コマンド
aliyun ecs DescribeImages
■ 実行結果
長いので一部抜粋してますが、こんな感じでJSON形式の結果が出力されます。「"ImageId"」の部分で今回知りたかった情報が取得できることが分かりますね!
個人的には grep を組み合わせて「欲しい部分だけ抜く」のでも良い気がしてるんですが、今回は公式ドキュメントにイイ感じにまとまっている「--output」を使って、必要な部分を取得していきます!
蛇足ですが、「aliyun ecs DescribeImages」コマンドのhelpも、下記の様に確認する事が出来ますので、実際に CLI から ECS に対して何かを行いたい場合は、以下の様な他のパラメーターも参考にしてみてください!
■ 実行コマンド
aliyun ecs DescribeImages help
■ 実行結果
--output を使用した情報の取得
Alibaba Cloud CLI では、前述のコマンドの出力結果を、もっと直観的で分かりやすくするために、「-- output」のオプションを提供していて、このオプションと以下3つの「Field」を指定する事で、自分が興味のある部分だけを抽出する事が出来ます。
■ Field
⓵ | cols |
フィールドに存在する行の名前の事で、 「aliyun ecs DescribeImages」の結果で例えるなら 「ImageId」や「OSNameEn」、「Status」が該当します。 |
⓶ | rows |
フィルターしたいフィールドが存在するパスをJAMESPATH を使って指定します。 「aliyun ecs DescribeImages」の結果で例えるなら「Images」や「Image」が該当します。 |
⓷ | num |
結果の左側に0から始まる行数を出力してくれます。デフォルトでは出力しません。 |
上記を踏まえて、実行したコマンドが下記になります。
この末尾に「num=true」と入れると、左側に行数が出力されます。
■ 実行コマンド
aliyun ecs DescribeImages --PageSize 100 --output cols="ImageId,OSNameEn,Status" rows="Images.Image[]" aliyun ecs DescribeImages --PageSize 100 --output cols="ImageId,OSNameEn,Status" rows="Images.Image[]" num=true
■ 実行結果
「rows」の部分はJAMESPATHを使って指定する必要がありますが、段違いに結果が見やすくなりましたね!
これでひと安心です!
まとめ
いかがでしたでしょうか。
JAMESPATH の部分とかは、個人的にドキュメントを読むのに時間がかかってしまったので、少し手こずりましたが、これで安心して Terraform でリソースを構築する事が出来ます!
最後になりますが、弊社は深圳にオフィスを開設し、AlibabaCloud や Tencent Cloudなどの、中国系クラウドをはじめとする、様々なクラウドベンダーのサービスを通じて、お客様のシステムを設計構築から運用保守まで、サポートする事が可能です。
是非今回の記事と併せて、弊社ビヨンドの中国オフィス「必友得科技(深圳)有限公司」についてもご興味を持っていただければ幸いでございます!
引き続き、AlibabaCloud 関連の記事を中心に書いていきますので、是非チェックしてみてください!