Cloud Service
AWS Command Line Interface (CLI)
AWS の各サービスをターミナルから操作・自動化できる公式コマンドラインツール。スクリプト化で繰り返し作業を再現でき、コンソール操作を自動化する CLI(Azure CLI や gcloud に相当)。
- 1.1つのコマンド体系で AWS のほぼ全サービスを操作でき、シェルスクリプトで自動化できる
- 2.認証はプロファイルや IAM ロール・SSO で行い、出力は JSON などから選べて --query で絞り込める
- 3.v2 が現行版で、SSO 連携やページネーション・自動補完など運用に便利な機能を備える
AWS Command Line Interface(AWS CLI)は、AWS の各サービスをコマンドラインから操作するための公式ツールです。マネジメントコンソールでの手作業を、再現可能なコマンドやスクリプトに置き換えられます。aws service command という統一された構文で、ほぼすべての AWS サービスの API を呼び出せます。
解決する課題
マネジメントコンソールでの操作は直感的ですが、同じ手順を何度も繰り返したり、多数のリソースを一括で扱ったりする場面では手間がかかり、操作ミスや手順のばらつきも生じます。AWS CLI なら:
- 操作をコマンドやスクリプトとして保存でき、同じ作業を再現性高く繰り返せる
- 複数リソースの一括処理やループ処理をシェルで記述でき、大量操作を効率化できる
- CI/CD パイプラインや cron などの自動化基盤に組み込める
- コンソールに出ていない新機能や細かなパラメータにも、API ベースで早期にアクセスできる
主要概念と用語
- コマンド構造:
aws <サービス> <操作> [オプション]の形をとる(例:aws s3 ls)。サービス名は API の名前空間に対応する - プロファイル: 認証情報や既定リージョンなどの設定をまとめた名前付きの設定。
--profileで切り替える - 認証情報チェーン: CLI が認証情報を探す優先順位。環境変数、設定ファイル、IAM ロールなどの順に解決される
- IAM Identity Center(SSO)連携: ブラウザログインで一時的な認証情報を取得する仕組み。長期キーを持たずに済む
- 出力形式: 実行結果のフォーマット。JSON・テキスト・テーブルなどから選べる
- --query: 出力から必要な部分だけを抽出するための式(JMESPath を使う)
- ページネーション: 結果が多いときに分割取得する仕組み。CLI が自動でまとめて取得する
- 名前付き設定ファイル: 認証情報を置く
credentialsと、設定を置くconfigの2ファイルに分かれる
仕様・制限・クォータ
- 現行のメジャー版は v2 で、SSO 連携・自動補完・分割取得などの機能が標準で利用できる
- Linux・macOS・Windows に対応し、コンテナイメージとしても配布される
- リクエストはいずれかのリージョンを対象に発行され、既定リージョンはプロファイルや環境変数で指定する
- CLI 自体には独自の上限はほぼなく、実際の制限は背後の各サービス API のスロットリングやサービスクォータに従う
- 大量のリクエストを連続発行するとサービス側でスロットリングされることがあり、CLI 側に自動リトライの仕組みがある
CLI のバージョンや対応プラットフォームの細部は時期によって変わるため、最新の対応状況は公式ドキュメントで確認してください。
内部の仕組み
AWS CLI はコマンドを解析し、対応するサービス API への HTTPS リクエストに変換して送信します。リクエストには認証情報チェーンで解決した資格情報による署名(SigV4)が付与されます。
- 認証情報は、コマンドラインオプション、環境変数、
credentialsファイル、コンテナや EC2 のインスタンスメタデータから取得する IAM ロールの順で解決される - レスポンスは指定した出力形式に整形され、
--queryを指定すると JMESPath 式で必要部分だけを抽出する - 一覧系の操作では結果が多いと API がトークンを返すが、CLI が自動で続きを取得してまとめて表示する
- リトライ可能なエラー(スロットリングなど)には、待ち時間を空けて再試行するリトライ機構が働く
EC2 や ECS 上で動かすなら、アクセスキーをファイルに置かず IAM ロールに任せるのが安全です。ローカル開発では IAM Identity Center(SSO)連携を使うと、長期キーを持たずに一時認証情報で操作できます。
設計パターン / ベストプラクティス
- プロファイルで環境を分離: 開発・本番などをプロファイルで分け、誤操作を防ぐ
- 長期キーより一時認証情報: SSO や IAM ロールで一時認証情報を使い、漏えいリスクを下げる
--queryと出力形式の活用: 必要な値だけを抽出し、テキスト出力をスクリプトのパイプにつなぐ--dry-runで事前確認: 対応する操作では実行前に権限や効果を検証する- 冪等性を意識: 作成系コマンドは再実行時の重複を考慮し、存在確認やトークンを組み合わせる
- バージョンを固定: CI などでは利用する CLI のバージョンを固定し、挙動の差を避ける
運用・監視
- CLI から発行した API 呼び出しは CloudTrail に記録され、誰がいつ何を操作したかを監査できる
- スクリプトでは終了コードで成否を判定し、失敗時に処理を止めるよう組む
--debugオプションで署名やリクエストの詳細ログを出し、認証や権限の問題を切り分ける- 大量操作ではスロットリングを想定し、リトライ設定や同時実行数を調整する
CLI コマンドが失敗しても、終了コードを見ずに後続処理を進めると障害が連鎖します。自動化では各コマンドの終了コードを必ず確認し、失敗時に停止または通知する作りにしてください。
コスト
AWS CLI ツール自体は無料で利用できます。費用が発生するのは、CLI を通じて操作・作成した AWS リソースや、呼び出した API がもたらすデータ転送などに対してです。
- CLI 経由かコンソール経由かで料金は変わらない。課金されるのはあくまで背後のサービス
- 自動化スクリプトが意図せず多数のリソースを作成・起動しないよう、作成系コマンドはレビューする
- ポーリングなどで一覧 API を高頻度に呼ぶと、スロットリングの原因になり処理が遅延しうる
セキュリティ
- 長期アクセスキーを避ける: SSO や IAM ロールによる一時認証情報を優先し、キーの保管・ローテーション負担を減らす
- 最小権限: CLI を実行する主体の IAM 権限を必要な操作だけに絞る
- 認証情報ファイルの保護:
credentialsファイルの読み取り権限を制限し、リポジトリにコミットしない - MFA の活用: 重要な操作を行うロールには多要素認証を要求する
- 操作の証跡は CloudTrail に残るため、異常な API 呼び出しを検知・追跡できる
アクセスキーやシークレットをコードやドットファイルに平文で書き、リポジトリに含めるのは重大な漏えい原因です。一時認証情報(SSO・IAM ロール)に切り替え、誤ってコミットした場合は直ちにキーを無効化してください。
関連サービス・比較
ブラウザから操作する マネジメントコンソール と役割が対比されます。どちらも同じ AWS API を操作しますが、再現性と自動化の点で性格が異なります。
| 観点 | AWS CLI | マネジメントコンソール |
|---|---|---|
| 操作方法 | コマンド・スクリプト | ブラウザでの GUI 操作 |
| 再現性 | 高い(スクリプト化できる) | 手作業でばらつきが出やすい |
| 自動化 | CI/CD や cron に組み込める | 基本は手動操作 |
| 学習の入りやすさ | コマンドの習得が必要 | 視覚的で直感的 |
| 向く用途 | 繰り返し作業・大量操作 | 探索的な確認・初期設定 |
ハンズオン / CLI例
# 現在の認証情報(呼び出し元の IAM 主体)を確認
aws sts get-caller-identity
# プロファイルと出力形式を指定して S3 バケット一覧を取得
aws s3 ls --profile dev
# EC2 インスタンスの ID と状態だけを --query で抽出(テキスト出力)
aws ec2 describe-instances \
--query "Reservations[].Instances[].{Id:InstanceId,State:State.Name}" \
--output table
# IAM Identity Center(SSO)でログインしてプロファイルを使う
aws sso login --profile my-sso-profile
aws s3 ls --profile my-sso-profile
AWS Service
AWS Command Line Interface (CLI)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
開発者ツール
比較で見る軸
クラウド: AWS / カテゴリ: 開発者ツール / 難易度: basic
導入後に効く点
認証はプロファイルや IAM ロール・SSO で行い、出力は JSON などから選べて --query で絞り込める
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- AWS
- カテゴリ
- 開発者ツール
- 難易度
- basic
- 関連資格
- SAA-C03 / DVA-C02 / SOA-C02 / DOP-C02
- 設計柱
- operational / security
判断チェックリスト
- 自社の用途が「開発者ツール / operational」に近いか確認する。
- 強みである「1つのコマンド体系で AWS のほぼ全サービスを操作でき、シェルスクリプトで自動化できる」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。