AWS CLIとは?導入手順からよく使うコマンドまで徹底解説【最新版】

AWS CLIとは?導入手順からよく使うコマンドまで徹底解説

NordVPN Campaign Timer

記事内に広告を含みます

s

「EC2インスタンスの起動やS3へのファイルアップロード、毎回マネジメントコンソールにログインして画面をクリックしていませんか?」

AWS CLIを使えば、こうした日常的なクラウド操作をコマンド1行で完了できます。さらに、シェルスクリプトと組み合わせれば定型作業の完全自動化も可能です。

AWS CLI(AWS Command Line Interface)は、AWSが公式に提供する無料のコマンドラインツールです。Windows・Mac・Linuxのすべてに対応しており、200以上のAWSサービスをターミナルから直接操作できます。

本記事では、AWS CLIの基本から導入方法、現場ですぐに使える実践コマンドまでを、初心者にもわかりやすく解説します。

Contents CLOSE

1. AWS CLIとは?基本をわかりやすく解説

1-1 AWS CLIの概要と役割

AWS CLI(AWS Command Line Interface)は、Amazon Web Servicesが公式に提供しているコマンドラインツールです。ターミナル(コマンドプロンプト)からAWSの各サービスを直接操作できます。

通常、AWSの操作はブラウザ上の「マネジメントコンソール」から行いますが、AWS CLIを使うことで同じ操作をコマンド1行で実行できるようになります。

現在の最新バージョンはAWS CLI v2です。v1は2024年にメンテナンスモードへ移行しており、新規導入の場合はv2を選択しましょう。

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-1234567890abcdef0

2-2 人的ミスの削減

手作業によるGUI操作では、クリックする場所や入力値を間違えるリスクが常に存在します。AWS CLIでは、事前にテスト済みのコマンドをそのまま実行するため、オペレーションミスを大幅に削減できます。

bash

# 本番実行前にdry-runで確認
aws ec2 run-instances --dry-run --image-id ami-12345678 --instance-type t3.micro

2-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 text

3. AWS CLIのインストール方法【OS別】

3-1 Windows環境へのインストール

Windowsへのインストールは、公式のMSIインストーラーを使用するのが最も簡単です。

インストール手順
  1. AWS CLI公式ダウンロードページにアクセス
  2. 「Windows」セクションからMSIインストーラーをダウンロード
  3. ダウンロードしたファイルをダブルクリックして実行
  4. インストールウィザードに従って進める(デフォルト設定でOK)
  5. コマンドプロンプトを開き、インストールを確認

bash

aws --version
# 出力例: aws-cli/2.x.x Python/3.x.x Windows/10 exe/AMD64
ポイント:インストール後にコマンドプロンプトを新しく開き直してください。既に開いているウィンドウではawsコマンドが認識されない場合があります。

3-2 Mac環境へのインストール

方法①:公式PKGインストーラー(推奨)

bash

# PKGファイルをダウンロードしてインストール
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
方法②:Homebrewを使用

bash

brew install awscli

3-3 Linux環境へのインストール

bash

# インストーラーをダウンロード
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

# 解凍してインストール
unzip awscliv2.zip
sudo ./aws/install

# インストール確認
aws --version

3-4 バージョン確認とアップデート方法

OSアップデート方法
Windows最新のMSIインストーラーを再実行
Mac(PKG)最新のPKGを再ダウンロードして実行
Mac(Homebrew)brew upgrade awscli
Linuxsudo ./aws/install --update

4. AWS CLIの初期設定(aws configure)

4-1 IAMユーザーの作成とアクセスキーの取得

AWS CLIを使用するには、認証情報(アクセスキー)が必要です。以下の手順でIAMユーザーを作成し、アクセスキーを取得します。

アクセスキー取得手順
  1. マネジメントコンソールでIAMサービスを開く
  2. 「ユーザー」→「ユーザーの作成」をクリック
  3. ユーザー名を入力し、「プログラムによるアクセス」を有効化
  4. 必要なポリシー(権限)をアタッチ
  5. 作成完了画面でアクセスキー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 IDIAMユーザーのアクセスキー取得したキーを入力
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 dev

4-4【推奨】IAM Identity Center(SSO)での認証

アクセスキーによる認証は手軽ですが、キーの漏洩リスクがあるため、AWSはIAM Identity Center(旧AWS SSO)を使った認証を推奨しています。

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 table

5-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 table

5-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.zip

5-5 CloudWatch操作

bash

# ロググループ一覧
aws logs describe-log-groups --query "logGroups[].logGroupName" --output table

# アラーム一覧
aws cloudwatch describe-alarms --query "MetricAlarms[].AlarmName" --output table

6. 実務で役立つ!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オプションで出力形式を変更する

形式用途メリット
jsonAPI連携・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' aws

7. 注意点とトラブルシューティング

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がプリインストールされています。

CloudShellの特徴
  • インストール・設定不要ですぐに使える
  • ログイン中のIAMユーザーの権限がそのまま適用される
  • 1GBの永続ストレージが無料で利用可能
  • リージョンごとに独立した環境

8. まとめ

本記事では、AWS CLIの基本概念から導入方法、実践的なコマンドまでを解説しました。ポイントをおさらいしましょう。

  • AWS CLIは、AWSが公式に提供する無料のコマンドラインツール
  • マネジメントコンソールでの手作業をコマンド1行で効率化できる
  • シェルスクリプトとの組み合わせで定型作業を完全自動化可能
  • セキュリティ対策としてIAM Identity Center(SSO)の利用を推奨
  • まずは試したい場合はAWS CloudShellがおすすめ

AWS CLIは、一度使い始めると手放せなくなるツールです。まずはS3のファイル操作やEC2の一覧取得など、簡単なコマンドから試してみてください。日々の運用業務が劇的に効率化されるはずです。

error: Content is protected !!