これだけ読めば迷わない!AWS CLIの導入・設定・応用まで徹底解説
目次
1. AWS CLIとは
AWS CLI(コマンドラインインターフェース)は、AWS(Amazon Web Services)をコマンドベースで操作できるツールです。GUI(グラフィカルな操作画面)での操作に比べて、繰り返し作業の自動化やスクリプトによる環境構築に適しています。インフラエンジニアやクラウド管理者にとって、AWS CLIを習得することは、チーム内での作業の再現性やミスの防止、標準化を図るうえでも非常に重要です。
1-1 AWS CLIの概要と役割
AWS CLIは、AWSが公式に提供しているコマンドライン形式の操作ツールです。これにより、クラウド上のサービス(S3、EC2、IAMなど)をウェブの管理コンソールを使わずに直接操作できます。主な役割としては、以下のようなものがあります。
- サーバやネットワークなどの仮想リソースをコマンドで作成する
- スクリプトを使用して、自動化された処理が実現できる
- 手動だと時間がかかる一括管理や操作を高速に実現
開発チームやインフラ担当が共通の手順で構成作業を行うことが可能になり、スキル差があるチーム内でも再現性をもって作業の自動化・標準化がしやすくなります。
1-2 AWS CLIを使うメリット
AWS CLIを活用することで、インフラ操作の自動化やミスの削減、作業の効率化が実現します。例えば、複数台のサーバを一括で構築したり、ストレージ上のファイルを定期的に同期するなど、手動だと時間がかかる操作もスクリプトで瞬時に処理できます。
また、CLIはバージョン管理システム(Gitなど)と組み合わせて使用することで、「いつ誰が、どの操作を行ったか」を履歴として残すことが可能です。これはISOやISMSなどのセキュリティ管理にも適応できます。
「AWSに詳しい人しかGUIで操作できない」という状態から脱却し、CLIを使えば「手順化されたものを誰でも使えるようにする」ことが可能になります。
1-3 AWS Management Consoleとの違い
AWS Management Console(グラフィカル画面)とAWS CLI(コマンド形式)は、どちらもAWSを操作する手段です。しかし、それぞれ得意とする場面が異なります。
- Console:視覚的にわかりやすいが、変化が多いUIにより操作ミスの可能性も
- CLI:一度書いたコマンドは再利用可能で、手順としてドキュメント化しやすい
チームでの対応やシステムとしての再現性を求められる場面では、CLIによる構成管理が強力なツールになります。CLIを使いこなすことで、環境が変わっても同じ状態を素早く回復できるという「Infrastructure as Code(コードによるインフラ管理)」の思想に近づけます。
2. AWS CLI の前提条件と環境確認
AWS CLIの導入を始める前に、まずはCLIが正常に動作可能な環境か確認する必要があります。特に、使用するOSの種類やアーキテクチャ(CPUの構成など)、事前にインストールが必要なソフトウェアがあるか把握しておくことが重要です。ここでは、代表的なOS別に前提条件や確認ポイントを紹介します。
2-1 対応プラットフォーム(Windows/Mac/Linux)
AWS CLIはクロスプラットフォーム対応のツールであり、以下の主要なOSで動作保証されています。
- Microsoft Windows(8以降、特にWindows 10 推奨)
- macOS(Mojave以降を推奨)
- 各種Linux(Amazon Linux、Ubuntu、Debian、Red Hat Enterprise Linux、CentOS など)
それぞれのOSには、インストール手順やコマンドが異なりますので、後ほどOS別に丁寧に解説します。
なお、CLIバージョン2ではPythonが同梱されており、Python環境の事前準備が不要になりました。これによりインストール時の複雑さが緩和されています。
2-2 必要な依存パッケージ・バージョンの確認方法
CLIインストール時に、環境によっては事前に他のソフトウェアが必要なことがあります。例えば、Linuxの一部ディストリビューションでは unzip や curl、sudo などのコマンドが必要です。
それらのバージョンや存在を確認するには、以下のコマンドを端末(ターミナル)で実行します。
- curl --version
- unzip -v
- python3 --version(CLI v1 利用時)
これらの情報を事前にチェックすることで、後のトラブルを未然に防げます。とくに社内の閉じた環境やプロキシ配下での作業を見越す場合は、事前の確認が非常に重要になります。
2-3 システムアーキテクチャ(x86_64/ARM)確認方法
システムアーキテクチャとは、使用しているコンピュータのCPU構造を指します。近年では、Apple Silicon(M1/M2など)のような「ARMアーキテクチャ」も増えており、CLIの実行バイナリを正しく選ぶ必要があります。
OSごとの確認方法:
- Linux/macOS:uname -m
- Windows(PowerShell):echo $env:PROCESSOR_ARCHITECTURE
出力された内容が「x86_64」や「arm64」であれば、それに対応したAWS CLIパッケージを選びましょう。正しいアーキテクチャを選ばないと、「コマンドが動かない」「Error: exec format error」などのエラーが発生します。
3. AWS CLI のダウンロードとインストール
ここでは、AWS CLI をさまざまなOS環境へインストールする方法を分かりやすく説明します。どのOSでもCLIの基本的な機能は共通ですが、インストール手順は異なるため、お使いのOSにあわせた操作を行うことが重要です。インストール前に、必要な権限(管理者権限など)があることを確認しましょう。
3-1 Windowsへのインストール手順
Windowsでは、公式が配布しているインストーラーを使用するのが一般的です。手順は以下のとおりです。
① 下記URLから AWS CLI v2 の Windows インストーラー(.msiファイル)をダウンロードします。
https://aws.amazon.com/jp/cli/
② msiファイルを実行して、画面に従ってインストールを進めます。途中で特別な設定は不要です。
③ インストール後、コマンドプロンプトを開いて以下のコマンドで確認
aws --version
表示例:
aws-cli/2.13.10 Python/3.11.4 Windows/10 exe/x86_64
これでインストール完了です。PowerShell や Windows Terminal 上でも同様に CLI が使えるようになります。
3-2 macOSへのインストール手順
macOSにはいくつかの導入方法がありますが、推奨はHomebrew(パッケージ管理ツール)を使ったインストールです。Homebrewが未インストールの場合、先にインストールしましょう。
① ターミナルを開いて、HomebrewでCLIを導入
brew install awscli
② インストールが完了したら、確認コマンドを実行
aws --version
③ 出力にバージョンが表示されれば成功です。
brew upgrade awscli で定期的にバージョン更新も可能です。M1チップ対応のパッケージも自動的に選定されます。
3-3 Ubuntu / Debianへのインストール手順
Ubuntu や Debian系 OSでは、公式のバイナリファイルを使用するか、APTではなくcurl + unzip を利用してインストールします。
① 必要なツールのインストール
sudo apt update
sudo apt install unzip curl -y
② バイナリをダウンロード
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
③ 解凍してインストール実行
unzip awscliv2.zip
sudo ./aws/install
④ インストール確認
aws --version
開発用インスタンスやCI環境にも同様の手順で展開できます。
3-4 Red Hat / CentOSへのインストール手順
RPMベースのディストリビューションでは、バイナリインストーラーかyumで導入します。
① 事前に必要なパッケージをインストール
sudo yum install unzip curl -y
② CLIバイナリを取得・展開
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
③ インストール確認
aws --version
Red Hat系はスクリプトの自動化やジョブ運用と相性が良く、CLI導入による効率化が特に有効です。
4. AWS CLI のアップグレードとアンインストール
AWS CLIは定期的に新機能や修正が加えられるため、アップグレード対応も把握しておく必要があります。また、古いバージョンを削除して入れ替えるケースや、不要時のアンインストール手順も覚えておくと便利です。
4-1 最新バージョンへのアップグレード方法
CLIバージョン2以降は、通常のインストール手順と同様に再インストールすることでアップグレードが可能です。インストールスクリプトは既存ファイルを自動で上書きしてくれます。
macOS + Homebrew の場合:
brew upgrade awscli
Linux の場合(バイナリ上書き):
sudo ./aws/install --update
Windows の場合、公式サイトから新しい.msiファイルをダウンロードして再度実行することで上書き可能です。
4-2 古いバージョンの削除・再インストール
再構築や不具合対応で一度CLIを削除したい場合:
macOS (Homebrew環境):
brew uninstall awscli
Linux(手動インストール環境):
sudo rm -rf /usr/local/aws
sudo rm /usr/local/bin/aws
再インストール後は、再度 aws --version の確認を忘れずに。
4-3 インストール確認(aws --version)
CLIが正しく動作しているか確認するには、以下のコマンドを端末で実行します。
aws --version
成功例:
aws-cli/2.13.10 Python/3.11.4 Linux/x86_64
インストールが成功していれば、CLIのバージョン、Pythonのバージョン、OS情報などが確認できます。バージョン番号によって、対応しているコマンドの仕様や挙動が微妙に異なるため、CLIで自動化を試みる場合は常に最新バージョンにしておくのが理想的です。
5. 初期セットアップ:aws configure の使い方
インストールが無事完了したら、次は使用準備として初期設定を行います。「aws configure」コマンドを使って認証情報(アクセスキー・リージョン・出力形式)を対話的に登録できます。このステップを行うことで、毎回認証を入力せずにCLIからAWS操作が可能になります。
5-1 アクセスキーとシークレットキーの入力
AWSアカウントから発行した IAM(ユーザー管理)情報を使います。
① AWS マネジメントコンソールで IAM → ユーザー → 認証情報を表示
② 「アクセスキーの作成」を実行して、アクセスキーIDとシークレットアクセスキーを控えておく
③ ターミナルで以下のコマンド入力
aws configure
すると、以下の4項目の入力が求められます:
- AWS Access Key ID:
- AWS Secret Access Key:
- Default region name: (例:ap-northeast-1)
- Default output format: (例:json)
これらを入力すると、CLIの設定ファイルに保存されます。
5-2 デフォルトリージョンと出力形式の設定
「リージョン」はAWSが各地域に展開しているデータセンターのエリアです。例えば日本では「ap-northeast-1(東京リージョン)」が一般的です。CLIを通じてどのリージョンを操作対象にしたいか、ここで指定します。
「出力形式」は、CLIのレスポンスをどんな形式で表示したいかを指定します。一般的な選択肢は:
- json(汎用的で推奨)
- table(表形式、視覚的に見やすい)
- text(軽量)
使用目的に応じて出力形式は切り替え可能です。
5-3 設定ファイル(~/.aws/config)の構造
設定済みのCLI情報は、LinuxやmacOSでは「~/.aws/config」や「~/.aws/credentials」といったファイルに記録されます。
例:
~/.aws/config
[default]
region = ap-northeast-1
output = json
~/.aws/credentials
[default]
aws_access_key_id = ****************
aws_secret_access_key = ****************
Windowsでは「C:\Users\ユーザー名\.aws」フォルダ内に同様のファイルが作成されます。CLIのトラブル発生時にはこのファイルを確認・修正することで、動作改善が図れることもあります。
6. プロファイルと認証の管理
AWS CLIでは、複数の環境やユーザーごとに異なる認証情報を使いわけられる「プロファイル機能」があります。例えば開発用・本番用・検証用といった用途に応じて別々の設定が保存できるため、チーム開発における運用ミスのリスクが減ります。ここでは、多様な認証方法への対応を解説します。
6-1 複数プロファイルの使い分け
AWS CLIは「default」プロファイル以外に、任意の名前で複数の設定を保存・管理できます。構成例は以下の通りです。
~/.aws/config
[default]
region = ap-northeast-1
output = json
[profile dev-user]
region = us-west-2
output = table
~/.aws/credentials
[default]
aws_access_key_id = ************
aws_secret_access_key = ************
[dev-user]
aws_access_key_id = ************
aws_secret_access_key = ************
CLIで特定プロファイルを使うには、以下のようにオプション指定します。
aws s3 ls --profile dev-user
これにより開発用のリソースに誤って本番設定でアクセスしてしまうリスクを避けられます。
6-2 IAMユーザーとロールによる認証
AWSの作業には通常、IAM(Identity and Access Management)を使った認証情報を利用します。IAMには「ユーザー」と「ロール」の2つがあり、それぞれ以下のような特徴があります。
- IAMユーザー:ユーザー毎にアクセスキーを発行してCLI操作できる
- IAMロール:一時的な権限を付与する仕組みで、信頼性が高い
特にセキュリティ要件が高い企業では、AWS CLIでIAMユーザーのアクセスを最小限にし、IAMロールをスイッチして作業を行う形(STS: Security Token Service)を採用するケースが増えています。
IAMロールでの認証は一時的なトークンを使うため、有効期限がある点には注意が必要です。
6-3 MFA(多要素認証)の設定と使用方法
AWSでは多要素認証(MFA: Multi-Factor Authentication)により、より安全にアカウントを保護できます。CLIでもMFA対応が可能です。
① IAMユーザーに仮想MFAデバイスを割り当て
② 次のコマンドで一時クレデンシャル(Temp Token)を生成
aws sts get-session-token --serial-number arn:aws:iam::123456789012:mfa/your-user-name --token-code 123456
③ 取得した3つの値を ~/.aws/credentials に一時プロファイルとして追記する
- AccessKeyId
- SecretAccessKey
- SessionToken
この一時プロファイルでAWS CLIを使うことで、より高度なセキュリティレベルで作業を進めることが可能になります。
7. よく使うAWS CLIコマンド実践例
ここでは、AWS CLIを使う際によく利用される操作コマンドの具体例を紹介します。これらは日常のインフラ運用やサーバ管理で頻繁に使われるものばかりです。実践的な例を通じて、スクリプトや手順書への組み込みも視野に入れましょう。
7-1 S3バケットの作成・一覧・アップロード例
S3(Simple Storage Service)は、AWSが提供するオンラインストレージです。
- バケット作成:
aws s3 mb s3://my-new-bucket
- バケット一覧:
aws s3 ls
- ファイルアップロード:
aws s3 cp report.txt s3://my-new-bucket/
拡張オプションや同期処理(sync)も可能で、バックアップ用途にも適しています。
7-2 EC2インスタンスの起動・停止・ステータス確認
EC2(Elastic Compute Cloud)は仮想サーバを扱うサービスです。
- 起動:
aws ec2 start-instances --instance-ids i-1234567890abcdef0
- 停止:
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
- ステータス確認:
aws ec2 describe-instance-status --instance-ids i-1234567890abcdef0
これにより、GUIに頼らず柔軟にインスタンス制御が可能です。
7-3 CloudWatch Logsの取得
CloudWatchはAWS上のリソースからログを収集・可視化するサービスです。
- ロググループ一覧:
aws logs describe-log-groups
- ログ取得(最新20行):
aws logs get-log-events \
--log-group-name "/aws/lambda/my-function" \
--log-stream-name "2023/10/10/[$LATEST]abcdef" \
--limit 20
トラブル時にはCLIで迅速にログを確認・対応できます。
7-4 IAMユーザーの作成と権限設定
作業用IAMユーザーの作成・管理もCLIから実行可能です。
- ユーザー作成:
aws iam create-user --user-name dev-user
- ポリシー(権限)のアタッチ:
aws iam attach-user-policy --user-name dev-user --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess
これで「操作は自動化したが、アクセス制御まできちんと管理したい」といった要件にも対応できます。
8. 自動化とスクリプト運用
AWS CLIの最大の強みのひとつが、「コマンドの自動実行」による運用の効率化です。定型業務をスクリプトにすることで、工数削減・再現性アップにつながります。ここでは、自動化に必要な基本知識と連携アイデアを紹介します。
8-1 シェルスクリプトでのバッチ処理
複数のAWS CLI操作を1つにまとめて自動化するには、shell(シェル)スクリプトが便利です。
例:EC2インスタンスを停止 → スナップショットを取得 → 再起動
```bash
#!/bin/bash
INSTANCE_ID="i-1234567890abcdef0"
aws ec2 stop-instances --instance-ids $INSTANCE_ID
aws ec2 create-snapshot --volume-id vol-0abcd1234efgh5678
aws ec2 start-instances --instance-ids $INSTANCE_ID
```
これにより、タイミングを決めて一括実行できます。
8-2 Cronジョブとの連携
LinuxやmacOSで定期実行を行いたい場合は、cron(クーロン)と呼ばれる設定でスクリプトを自動実行できます。
例:毎朝9時にS3のバックアップスクリプトを実行
crontab -e に以下を記述:
0 9 * * * /usr/local/bin/s3_backup.sh
CLIとcronの組み合わせは、定時バッチやレポート処理の自動化に非常に有効です。
8-3 AWS CLIと他のツールの統合(e.g., jq, sed)
CLIの出力をそのまま使用せず、整形処理やデータ抽出を行いたい場合、jq や sed などのツールと組み合わせることで、より高度な処理が可能になります。
例:S3バケットの名前だけを抽出
aws s3api list-buckets | jq -r '.Buckets[].Name'
このようにCLI単体だけで完結せず、Unix/Linuxの便利ツールと組み合わせることが、プロの現場で求められるスキルのひとつです。
9. トラブルシューティングとデバッグ
AWS CLIを利用する際、すべてがスムーズに進むとは限りません。プロジェクトや環境が複雑になるほど、さまざまなエラーに直面することもあるでしょう。ここでは、よくあるトラブルやその対処法について、エンジニア初心者にもわかりやすく具体的に解説します。
9-1 よくあるエラーと解決方法
以下は発生頻度が高い典型的なエラーとその解決法です。
- エラー①:Unable to locate credentials
原因:AWSに接続するための認証情報が設定されていない/消えている
対処:aws configure を再実行して正しいアクセスキーとシークレットキーを入力する
- エラー②:An error occurred (AccessDenied)
原因:IAMポリシーで操作がブロックされている
対処:該当ユーザーやロールに必要な権限(例:AmazonS3FullAccess)を追加する
- エラー③:SSL certificate verification failed
原因:プロキシ環境やSSL証明書のチェックに問題がある
対処:--no-verify-ssl オプションで回避可能だが、恒久的な対応が必要
こうしたエラーは、原因が単純な認証ミスにあることも多く、冷静にログを確認する姿勢が重要です。
9-2 --debugオプションの活用
CLIコマンドの実行時に --debug オプションを追加すると、内部の処理詳細や通信内容をログ形式で出力できます。これを活用することで「何が原因でエラーになったのか」が把握しやすくなります。
例:
aws s3 ls --debug
出力される情報には、HTTPヘッダーやエンドポイント、署名アルゴリズムの内容まで細かく記録されており、ネットワークトラブルやパーミッションエラーの特定に役立ちます。開発者同士のやりとりや、AWSサポートへの問い合わせ時にも有効です。
9-3 認証関連の失敗と対処法
最も多いトラブルが「認証エラー」です。原因は以下のいずれかに該当することが多いです。
- アクセスキーやシークレットキーの設定ミス
- 利用中のプロファイルにトークン切れがある
- AWS側でIAMユーザーが削除されている
解決法:
- ~/.aws/credentials を確認し正しい認証情報になっているか再確認
- 有効期限つきのトークンを再取得(MFA使用時)
- AWSコンソール側でユーザーが存在しているか確認
また、複数のプロファイルを切り替えている場合は、--profile オプションを正しく指定しなければ意図しない認証で実行される可能性もあります。
10. 最新情報と参考リンク
AWS CLIは常に改善・拡張が行われています。新しいコマンドやパラメータの追加、パフォーマンス向上の工夫など、活発な開発コミュニティによって支えられています。運用中に悩みを解決するためにも、公式情報やツールの違いを理解しておくことが重要です。
10-1 公式ドキュメント(AWS CLI Command Reference)
AWS公式サイトにはすべてのCLIコマンドのリファレンスが日本語・英語で掲載されています。コマンドの構文、パラメータ、使用例が細かく記載されており、実務に欠かせない資料です。
AWS CLI Command Reference
https://docs.aws.amazon.com/cli/latest/index.html
また「aws <サービス名> help」(例:aws s3 help)も、簡単にヘルプを表示する方法の一つです。
10-2 バージョンリリースノートへのアクセス
CLIの更新履歴や修正点は、リリースノートに公開されています。新機能が追加された場合や特定のエラーに対するパッチ情報がほしい時は、以下のページをチェックしましょう。
AWS CLI GitHubリリースページ:
https://github.com/aws/aws-cli/releases
頻繁なアップデートが行われるため、CLI関連のトラブル時にはまずバージョンとリリースノートを確認するクセをつけると良いでしょう。
10-3 AWS CLIとAWS SDKの違い
AWS CLIは、コマンドラインから直接AWSを操作するためのツールです。一方AWS SDK(Software Development Kit)は、PythonやJavaScriptなどのプログラミング言語からAWSサービスを呼び出すための「開発用ライブラリ」です。
用途の違い:
- CLI:操作を標準コマンドとしてスクリプトなどで使用、可視化・構築
- SDK:アプリケーション内からAWSリソースを制御・連携処理を組み込む
チームでCLIを用いた標準化や自動化を進めたい場合はCLI、業務アプリからAWSを制御したい場合はSDKの導入を検討しましょう。
dx