記事内に広告を含みます
s
「EC2インスタンスの起動やS3へのファイルアップロード、毎回マネジメントコンソールにログインして画面をクリックしていませんか?」
AWS CLIを使えば、こうした日常的なクラウド操作をコマンド1行で完了できます。さらに、シェルスクリプトと組み合わせれば定型作業の完全自動化も可能です。
AWS CLI(AWS Command Line Interface)は、AWSが公式に提供する無料のコマンドラインツールです。Windows・Mac・Linuxのすべてに対応しており、200以上のAWSサービスをターミナルから直接操作できます。
本記事では、AWS CLIの基本から導入方法、現場ですぐに使える実践コマンドまでを、初心者にもわかりやすく解説します。
1. AWS CLIとは?基本をわかりやすく解説
1-1 AWS CLIの概要と役割
AWS CLI(AWS Command Line Interface)は、Amazon Web Servicesが公式に提供しているコマンドラインツールです。ターミナル(コマンドプロンプト)からAWSの各サービスを直接操作できます。
通常、AWSの操作はブラウザ上の「マネジメントコンソール」から行いますが、AWS CLIを使うことで同じ操作をコマンド1行で実行できるようになります。
1-2 AWS CLIでできること(具体例)
AWS CLIでは、AWSが提供するほぼすべてのサービスを操作できます。代表的な例は以下のとおりです。
- S3:ファイルのアップロード・ダウンロード・バケット管理
- EC2:インスタンスの起動・停止・一覧取得
- IAM:ユーザー・ロール・ポリシーの管理
- Lambda:関数のデプロイ・実行・ログ確認
- CloudFormation:インフラのコード化(IaC)とスタック管理
- RDS:データベースインスタンスの作成・スナップショット管理
1-3 マネジメントコンソールとの違い
| 比較項目 | マネジメントコンソール | AWS CLI |
|---|---|---|
| 操作方法 | ブラウザでGUI操作 | ターミナルでコマンド入力 |
| 学習コスト | 低い(直感的) | やや高い(コマンド学習が必要) |
| 作業速度 | 遅い(クリック操作が多い) | 速い(コマンド1行で完了) |
| 自動化 | 難しい | 容易(スクリプト化可能) |
| 再現性 | 低い(手順ミスが起きやすい) | 高い(同じコマンドで同じ結果) |
| 一括操作 | 難しい | 容易(ループ処理で大量操作) |
「初めての操作はコンソール、繰り返す操作はCLI」という使い分けがおすすめです。
2. AWS CLIを導入する5つのメリット
2-1 運用作業の大幅な効率化
マネジメントコンソールでは、ログイン → サービス選択 → リソース検索 → 操作 → 確認と、多くの画面遷移が必要です。AWS CLIなら、これらをコマンド1行で実行できるため、作業時間を平均50〜70%短縮できます。
bash
# 朝9時に起動
aws ec2 start-instances --instance-ids i-1234567890abcdef0
# 夜8時に停止
aws ec2 stop-instances --instance-ids i-1234567890abcdef02-2 人的ミスの削減
手作業によるGUI操作では、クリックする場所や入力値を間違えるリスクが常に存在します。AWS CLIでは、事前にテスト済みのコマンドをそのまま実行するため、オペレーションミスを大幅に削減できます。
bash
# 本番実行前にdry-runで確認
aws ec2 run-instances --dry-run --image-id ami-12345678 --instance-type t3.micro2-3 スクリプトによる自動化・CI/CDとの連携
AWS CLIはシェルスクリプトやCI/CDパイプラインに組み込むことができます。GitHub ActionsやJenkinsなどのCI/CDツールと連携すれば、以下のようなワークフローを自動化できます。
- コードのpush → 自動テスト → S3へのデプロイ
- 定期的なバックアップの取得とS3への保存
- 異常検知時のインスタンス自動再起動
2-4 属人化の解消と引き継ぎの簡素化
GUI操作は「誰がどの画面でどのボタンを押したか」が記録に残りにくく、担当者の異動や退職で手順がわからなくなるリスクがあります。AWS CLIのコマンドはテキストベースなので、手順書やスクリプトとして保存・共有できます。
2-5 複数リソースの一括操作
「100個のS3バケットの設定を一括変更したい」といった大量操作は、マネジメントコンソールでは手間がかかりますが、AWS CLIとシェルスクリプトを組み合わせればループ処理で数百のリソースを一括操作できます。
bash
# すべてのS3バケット名を取得
aws s3api list-buckets --query "Buckets[].Name" --output text3. AWS CLIのインストール方法【OS別】
3-1 Windows環境へのインストール
Windowsへのインストールは、公式のMSIインストーラーを使用するのが最も簡単です。
- AWS CLI公式ダウンロードページにアクセス
- 「Windows」セクションからMSIインストーラーをダウンロード
- ダウンロードしたファイルをダブルクリックして実行
- インストールウィザードに従って進める(デフォルト設定でOK)
- コマンドプロンプトを開き、インストールを確認
bash
aws --version
# 出力例: aws-cli/2.x.x Python/3.x.x Windows/10 exe/AMD64awsコマンドが認識されない場合があります。3-2 Mac環境へのインストール
bash
# PKGファイルをダウンロードしてインストール
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /bash
brew install awscli3-3 Linux環境へのインストール
bash
# インストーラーをダウンロード
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
# 解凍してインストール
unzip awscliv2.zip
sudo ./aws/install
# インストール確認
aws --version3-4 バージョン確認とアップデート方法
| OS | アップデート方法 |
|---|---|
| Windows | 最新のMSIインストーラーを再実行 |
| Mac(PKG) | 最新のPKGを再ダウンロードして実行 |
| Mac(Homebrew) | brew upgrade awscli |
| Linux | sudo ./aws/install --update |
4. AWS CLIの初期設定(aws configure)
4-1 IAMユーザーの作成とアクセスキーの取得
AWS CLIを使用するには、認証情報(アクセスキー)が必要です。以下の手順でIAMユーザーを作成し、アクセスキーを取得します。
- マネジメントコンソールでIAMサービスを開く
- 「ユーザー」→「ユーザーの作成」をクリック
- ユーザー名を入力し、「プログラムによるアクセス」を有効化
- 必要なポリシー(権限)をアタッチ
- 作成完了画面でアクセスキーIDとシークレットアクセスキーをメモ
4-2 aws configureコマンドで初期設定
bash
aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: ap-northeast-1
Default output format [None]: json| 項目 | 説明 | おすすめ設定 |
|---|---|---|
| Access Key ID | IAMユーザーのアクセスキー | 取得したキーを入力 |
| Secret Access Key | シークレットキー | 取得したキーを入力 |
| Default region | デフォルトのリージョン | ap-northeast-1(東京) |
| Default output | 出力形式 | json(加工しやすい) |
4-3 プロファイルの使い分け(複数アカウント管理)
開発環境・ステージング環境・本番環境など、複数のAWSアカウントを使い分ける場合は名前付きプロファイルを活用します。
bash
# 開発環境用プロファイルを作成
aws configure --profile dev
# 本番環境用プロファイルを作成
aws configure --profile prod
# 開発環境のS3バケット一覧を取得
aws s3 ls --profile dev4-4【推奨】IAM Identity Center(SSO)での認証
アクセスキーによる認証は手軽ですが、キーの漏洩リスクがあるため、AWSはIAM Identity Center(旧AWS SSO)を使った認証を推奨しています。
- アクセスキーをローカルに保存しないため、漏洩リスクが低い
- 一時的な認証情報を使用するため、セキュリティが高い
- 組織のID管理と統合できるため、ガバナンスが強化される
5. AWS CLIよく使うコマンド一覧
5-1 S3操作
S3はAWS CLIで最も頻繁に操作するサービスの一つです。
bash
# バケット一覧を表示
aws s3 ls
# ファイルをアップロード
aws s3 cp ./local-file.txt s3://my-bucket/
# ファイルをダウンロード
aws s3 cp s3://my-bucket/remote-file.txt ./
# フォルダごとアップロード(再帰的)
aws s3 cp ./local-dir/ s3://my-bucket/dir/ --recursive
# ローカルとS3を同期(差分のみ転送)
aws s3 sync ./local-dir/ s3://my-bucket/dir/cpはファイル単位のコピー、syncは差分のみを転送する同期コマンドです。大量ファイルの定期バックアップにはsyncが最適です。5-2 EC2操作
bash
# インスタンス一覧を取得
aws ec2 describe-instances
# インスタンスを起動
aws ec2 start-instances --instance-ids i-1234567890abcdef0
# インスタンスを停止
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
# 実行中のインスタンスのみ表示(IDと名前)
aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=running" \
--query "Reservations[].Instances[].[InstanceId, Tags[?Key=='Name'].Value | [0]]" \
--output table5-3 IAM操作
bash
# IAMユーザー一覧
aws iam list-users
# ユーザーの所属グループを確認
aws iam list-groups-for-user --user-name example-user
# ロール一覧
aws iam list-roles --query "Roles[].RoleName" --output table5-4 Lambda操作
bash
# Lambda関数一覧
aws lambda list-functions --query "Functions[].FunctionName" --output table
# 関数を同期実行
aws lambda invoke --function-name my-function --payload '{"key": "value"}' response.json
# 関数コードを更新(ZIPファイルからデプロイ)
aws lambda update-function-code --function-name my-function --zip-file fileb://function.zip5-5 CloudWatch操作
bash
# ロググループ一覧
aws logs describe-log-groups --query "logGroups[].logGroupName" --output table
# アラーム一覧
aws cloudwatch describe-alarms --query "MetricAlarms[].AlarmName" --output table6. 実務で役立つ!AWS CLI活用テクニック
6-1 –queryオプションでJSON出力を絞り込む
AWS CLIの多くのコマンドは大量のJSON情報を返します。--queryオプションを使うと、JMESPath構文で必要な情報だけを抽出できます。
bash
# EC2インスタンスのIDと状態だけを取得
aws ec2 describe-instances \
--query "Reservations[].Instances[].[InstanceId, State.Name]" \
--output table| JMESPath構文 | 説明 | 使用例 |
|---|---|---|
[] | 配列の全要素 | Buckets[] |
. | ネストされた値 | State.Name |
[?条件] | フィルタリング | [?State=='running'] |
| [0] | 最初の要素を取得 | Tags[].Value | [0] |
6-2 –outputオプションで出力形式を変更する
| 形式 | 用途 | メリット |
|---|---|---|
json | API連携・jqでの加工 | 構造化されたデータ |
table | 目視確認・レポート | 見やすい表形式 |
text | シェルスクリプト | awkやcutで加工しやすい |
6-3 シェルスクリプトで定型作業を自動化
bash
#!/bin/bash
# タグ未設定のEC2インスタンスを検出するスクリプト
echo "=== タグ未設定のEC2インスタンス一覧 ==="
aws ec2 describe-instances \
--query "Reservations[].Instances[?!Tags].[InstanceId, State.Name, LaunchTime]" \
--output table
echo "=== チェック完了 ==="6-4 コマンド補完を有効にする
bash
# bash の場合(~/.bashrc に追加)
complete -C '/usr/local/bin/aws_completer' aws
# zsh の場合(~/.zshrc に追加)
autoload bashcompinit && bashcompinit
complete -C '/usr/local/bin/aws_completer' aws7. 注意点とトラブルシューティング
7-1 アクセスキーの管理とセキュリティ対策
AWS CLIのアクセスキーが漏洩すると、第三者にAWSリソースを不正利用されるリスクがあります。過去には、GitHubに誤ってアクセスキーをpushしたことで、数百万円の不正利用被害が発生した事例もあります。
- アクセスキーをソースコードに直接記述しない
- GitリポジトリにAWSの認証情報をcommitしない
.gitignoreに認証情報ファイルを追加する- アクセスキーは定期的にローテーションする(90日推奨)
- IAMポリシーで最小権限の原則を適用する
- 可能であればIAM Identity Center(SSO)を使用する
7-2 よくあるエラーと対処法
| エラーメッセージ | 原因 | 対処法 |
|---|---|---|
Unable to locate credentials | 認証情報が未設定 | aws configureを実行 |
AccessDenied | 権限不足 | IAMポリシーを確認 |
Could not connect to the endpoint URL | リージョン設定ミス | aws configureでリージョン修正 |
ExpiredToken | 認証情報の期限切れ | aws sso loginで再認証 |
7-3 AWS CloudShellという選択肢
「インストールが面倒」「ローカル環境を汚したくない」という方には、AWS CloudShellがおすすめです。マネジメントコンソール上でブラウザから直接使えるシェル環境で、AWS CLIがプリインストールされています。
- インストール・設定不要ですぐに使える
- ログイン中のIAMユーザーの権限がそのまま適用される
- 1GBの永続ストレージが無料で利用可能
- リージョンごとに独立した環境
8. まとめ
本記事では、AWS CLIの基本概念から導入方法、実践的なコマンドまでを解説しました。ポイントをおさらいしましょう。
- AWS CLIは、AWSが公式に提供する無料のコマンドラインツール
- マネジメントコンソールでの手作業をコマンド1行で効率化できる
- シェルスクリプトとの組み合わせで定型作業を完全自動化可能
- セキュリティ対策としてIAM Identity Center(SSO)の利用を推奨
- まずは試したい場合はAWS CloudShellがおすすめ
AWS CLIは、一度使い始めると手放せなくなるツールです。まずはS3のファイル操作やEC2の一覧取得など、簡単なコマンドから試してみてください。日々の運用業務が劇的に効率化されるはずです。


