本トピックでは、Alibaba Cloud CLI のレガシーバージョン (3.3.0 未満) からプラグインベースのバージョンに移行する方法について説明します。
このガイドは、Alibaba Cloud CLI の 3.3.0 より前のバージョンをご利用のユーザーを対象としています。 お使いの CLI のバージョンが 3.3.0 以降の場合 (aliyun version を実行して確認できます)、すでにプラグインベースのバージョンを使用しているため、移行する必要はありません。
プラグインベースバージョンとレガシーバージョンの違い
バージョン 3.3.0 でプラグインアーキテクチャが導入されました。このバージョン以降、CLI はプラグインを介してクラウドサービスのコマンドを実行します。本トピックでは、3.3.0 未満のバージョンを「レガシー」バージョンと呼びます。
レガシー CLI は OpenAPI パススループロキシです。コマンド名は DescribeInstances のように API アクション名を直接使用し、パラメーターは --RegionId のように API パラメーターと一致します。プラグインベースの CLI では、各クラウドサービスが独立したプラグインを通じてコマンドを提供します。両方のバージョンは同じクラウドサービスの操作を実行しますが、コマンド名、パラメーター名、出力形式は異なります。
下位互換性: バージョン 3.3.0 以降にアップグレードした後も、レガシーコマンドの構文は引き続き機能します。一度にすべてを書き直す必要はなく、ご自身のペースでスクリプトをプラグインベースのコマンドに移行できます。
比較例
DescribeRegions API を例に、プラグインベースのコマンドは次のとおりです。
aliyun ecs describe-regions --accept-language zh-CN
レガシーコマンドは次のようになります。
aliyun ecs DescribeRegions --AcceptLanguage zh-CN
この例では、唯一の違いは命名規則です。しかし、より複雑なコマンドの場合、プラグインベースのバージョンではパラメーター名が完全に再設計されている場合があります。たとえば、一部のコマンドでは --region-id ではなく --biz-region-id が使用されます。これは、従来の --RegionId の単純な大文字/小文字の変換ではありません。移行する際は、常に <command> --help を実行するか、OpenAPI Explorer で検索して、正しいパラメーター名を確認してください。
主な違い
|
項目 |
レガシー (< 3.3.0) |
プラグインベース (≥ 3.3.0) |
|
ヘルプ出力 |
メタデータから自動生成され、パラメーター名のみがリスト表示されます。 |
各プラグインに組み込まれており、値の範囲や使用例が含まれます。 |
|
サービス更新 |
CLI コアのリリースに連動するため、新しいクラウドサービス機能の採用が遅くなります。 |
プラグインは独立して更新されるため、新しいクラウドサービス機能の採用が速くなります。 |
|
プラグインの更新 |
CLI 全体のアップグレードが必要です。 |
個々のプラグインが他のサービスに影響を与えることなく独立して更新されます。 |
|
コマンド名 |
API アクション名 ( |
統一されたケバブケーススタイル ( |
|
パラメーター名 |
API パラメーター名、表記はさまざまです ( |
統一されたケバブケーススタイル( |
現在のバージョンの確認
次のコマンドを実行して、バージョン番号を確認します。バージョンが 3.3.0 以降の場合、お使いの CLI はプラグインベースのコマンドをサポートしています。3.3.0 未満の場合は、まず CLI をアップグレードする必要があります。
aliyun version
特定のコマンドがプラグインベースかレガシーバージョンかを確認するには、aliyun <command> <sub-command> --help を実行します:
-
プラグイン版:ヘルプ出力にはグローバルパラメーターセクションが含まれ、パラメーター名には通常、ケバブケーススタイル (例:
--region-id) が採用されています。 -
旧バージョン: ヘルプ出力にはパラメーターセクションのみが含まれており、パラメーター名には通常、パスカルケーススタイル (例:
--RegionId) が使用されます。
プラグインベースのコマンド構文の検索
プラグインベースのコマンドは、レガシーコマンドの単純な名前変更ではありません。大文字と小文字を変換するだけでは移行できません。次の方法を使用して、レガシーコマンドに対応するプラグインベースのコマンドを見つけます。
OpenAPI Explorerを使用した検索
レガシーコマンド名 (API アクション名) がわかっている場合、これが最も直接的なアプローチです。
-
OpenAPI Explorerを開きます。
-
検索ボックスにレガシーコマンド名 (例:
DescribeInstances) を入力すると、一致する API が検索結果に一覧表示されます。 -
対象の API をクリックして詳細ページに移動し、必須パラメーター値を入力してから、右側の [CLI Example] タブに切り替えます。
-
プラグインベースのコマンドは [CLI Style (New)] に、レガシーコマンドは [API Native Style (Old)] に表示されます。新しいコマンドをコピーして、スクリプト内の古いコマンドを置き換えてください。
一部のクラウド製品には、複数の API バージョンがあります。プラグインベースの CLI は、--api-version パラメーターを使用して、呼び出す API バージョンを指定します。OpenAPI Explorer で新しいコマンドと従来のコマンドを比較する場合は、現在使用しているバージョンと一致する API バージョンを必ず選択してください。
CLIホームページの参照
OpenAPI ExplorerのCLIホームページには、サポートされているすべてのプラグインベースのコマンドがクラウドサービスごとに整理されています。パラメーターの説明も記載されています。
--help でコマンドを確認する
クラウドサービス プラグインのインストール後、各レベルで --help を使用して、利用可能なコマンドとパラメーターを参照できます。たとえば、すべての ECS プラグインコマンドを表示するには:
aliyun ecs --help
特定のコマンドの使用法とパラメーターを表示するには、次のようにします。
aliyun ecs describe-instances --help
CLI Skillsを使用したクエリ
CLI Skillsにアクセスし、スキルをインストールして、エージェントを介して自然言語で要件を記述すると、対応するプラグインベースのコマンドを取得できます。
移行の実行
ステップ1:CLIのアップグレード
現在のバージョンを確認します。
aliyun version
バージョンが 3.3.0 より前の場合、Alibaba Cloud CLI のインストールと更新 を参照してアップグレードしてください。旧バージョンをアンインストールする必要はなく、既存の認証情報設定 (~/.aliyun/config.json) に影響はありません。
アップグレード後も、レガシーコマンドは引き続き機能し、既存のスクリプトに影響はありません。新しい機能のサポート、更新、セキュリティ修正は、プラグインベースのバージョンでのみ提供されます。
ステップ2:プラグインのインストール
必要なクラウドサービスプラグインをインストールします。
# 単一のプラグインをインストール
aliyun plugin install --name ecs
# 複数のプラグインをインストール
aliyun plugin install --names ecs oss vpc
または、環境変数を介して自動インストールを有効にすることもできます。まだインストールされていないプラグインのプラグインベースのコマンドを実行すると、CLIが自動的にダウンロードしてインストールします。
export ALIBABA_CLOUD_CLI_PLUGIN_AUTO_INSTALL=true
export は現在のシェルセッションでのみ有効です。この設定を永続化するには、コマンドをシェル設定ファイルに追加します。
-
Bash:
~/.bashrc -
Zsh:
~/.zshrc
編集後、source ~/.bashrc (または source ~/.zshrc) を実行して変更を適用します。
ステップ3:コマンドの検証
プラグインベースのコマンドを実行して、正常に機能することを確認します。
aliyun ecs describe-regions
出力にリージョンのJSONリストが表示されれば、プラグインベースのCLIが正しく機能していることが確認できます。
ステップ4:スクリプトの更新
スクリプト内のレガシーコマンドを、プラグインベースの構文に徐々に置き換えます。
-
スクリプト内のレガシーコマンドを特定してください。一般的な特徴として、2 番目の引数に PascalCase が使用されていることが挙げられます (例:
aliyun ecs DescribeInstances)。 -
OpenAPI Explorerでレガシーコマンド名を検索し、対応するプラグインベースのコマンドを見つけます。
-
レガシーコマンドをプラグインベースのコマンドに置き換え、それに応じてパラメーター名を更新します。
-
更新したスクリプトをテストします。
レガシーコマンドは新しいバージョンでも機能するため、優先度に基づいてバッチで移行できます。
JSONパラメーター値内のフィールド名は変換する必要はありません。これらのフィールド名はAPIによって定義されており、CLIのパラメーター命名規則とは独立しています。
特殊なケース
CI/CDパイプライン
非インタラクティブ環境では、CLI はプラグインのインストールを促すプロンプトを表示しません。次のいずれかの方法で対処します。
-
パイプラインスクリプトにプラグインをプリインストールします。
aliyun plugin install --names ecs oss vpc -
または、環境変数を設定して自動インストールを有効にします。
export ALIBABA_CLOUD_CLI_PLUGIN_AUTO_INSTALL=true
すべてのビルドで有効になるように、環境変数をパイプラインのグローバル環境設定 (Jenkinsfile の environment ブロックや GitHub Actions の env セクションなど) に追加することをお勧めします。
出力解析スクリプト
プラグインベースのコマンドの JSON 出力は、従来のバージョンとは異なる場合があります。 従来の CLI は未加工の API レスポンスを返しますが、プラグインベースのバージョンは出力を処理する場合があります。 スクリプトで jq、grep、またはその他のツールを使用して CLI 出力をパースする場合、コマンドを切り替えた後に出力形式を確認してください。
複雑なコマンドの移行
複雑なパラメーターを持つコマンドは、移行中に最もエラーが発生しやすいシナリオです。
複雑なJSONパラメーターを持つコマンド
レガシー:
aliyun slb AddBackendServers \
--LoadBalancerId lb-xxx \
--BackendServers '[{"ServerId":"i-aaa","Weight":100},{"ServerId":"i-bbb","Weight":80}]'
プラグインベース:
aliyun slb add-backend-servers \
--load-balancer-id lb-xxx \
--backend-servers '[{"ServerId":"i-aaa","Weight":100},{"ServerId":"i-bbb","Weight":80}]'
複数行のヒアドキュメントによるパラメーター渡し
長いJSONパラメーターの場合は、ヒアドキュメントを使用して可読性を向上させることができます。
aliyun ecs run-instances \
--region cn-hangzhou \
--instance-type ecs.g7.large \
--image-id ubuntu_22_04_x64_20G_alibase_20230China.vhd \
--security-group-id sg-xxx \
--vswitch-id vsw-xxx \
--system-disk "$(cat <<'EOF'
{"Size":40,"Category":"cloud_essd","PerformanceLevel":"PL1"}
EOF
)"
パイプコマンド
レガシー出力を jq でパイプ処理するスクリプトの場合、次の例では実行中のすべてのインスタンスの ID を取得します。
aliyun ecs DescribeInstances --RegionId cn-hangzhou \
| jq -r '.Instances.Instance[] | select(.Status=="Running") | .InstanceId'
プラグインベースの出力構造は異なる場合があるため、必要に応じてjq パスを調整してください:
# プラグインベースのバージョン:まず出力構造を確認してから、jq式を調整してください。
aliyun ecs describe-instances --region cn-hangzhou \
| jq -r '.Instances.Instance[] | select(.Status=="Running") | .InstanceId'
パイプコマンドを移行する際は、まずプラグインベースのコマンドを単独で実行して完全な出力を確認します。JSON 構造が想定どおりであることを確認してから、jq/grep 式を調整してください。
レガシーヘルプの表示
製品プラグインのインストール後は、aliyun <command> --help はデフォルトでプラグインのヘルプを表示します。一時的に従来のヘルプを表示するには、次の環境変数を設定します。
export ALIBABA_CLOUD_ORIGINAL_PRODUCT_HELP=true
よくある質問
アップグレード後もレガシーのパスカルケースのコマンドを使用できますか?
はい。CLI バージョン 3.3.0 以降は下位互換性があります。ただし、最新のサポートを受けるために、最新バージョンにアップグレードすることを推奨します。
移行後に認証情報を再設定する必要がありますか?
いいえ。プラグインベースの CLI は、旧バージョンと同じ認証情報設定 (~/.aliyun/config.json) を使用します。設定済みのすべての profile エントリと環境変数による認証情報は、アップグレード後も引き続き機能します。
同じスクリプト内でレガシーコマンドとプラグインベースのコマンドを混在させることはできますか?
はい。両方のコマンド形式は同じスクリプト内に共存できます。優先度に基づいて、レガシーコマンドを徐々に置き換えることを推奨します。
プラグインのインストールに失敗した場合はどうすればよいですか?
次の順序でトラブルシューティングを行ってください。
-
お使いのネットワークが
aliyuncli.alicdn.comにアクセスできるかどうかを確認してください。 -
プラグインのインストールディレクトリ (
~/.aliyun/plugins/) に書き込み権限があることを確認してください。 -
aliyun versionを実行して、CLI のバージョンが 3.3.0 以降であることを確認してください (以前のバージョンはプラグインをサポートしていません)。