はじめに
AWS の管理、ブラウザ(マネジメントコンソール)だけで行っていませんか? クリック操作は視覚的で分かりやすい反面、繰り返しの作業や大量のファイル操作、スクリプトによる自動化には不向きです。
そこで必須となるツールが AWS CLI(Command Line Interface)です。 Ubuntu 環境に AWS CLI を導入すれば、S3 へのファイルアップロードや EC2 インスタンスの起動・停止、ステータス確認などを、すべてターミナルからコマンド一発で実行できるようになります。
本記事では、Ubuntu Desktop(20.04 / 22.04 / 24.04 LTS 対応)を対象に、AWS CLI のインストールから、現場でよく使う S3 操作や EC2 接続までの手順を解説します。
- 最新のインストール手順: 公式インストーラーを使った AWS CLI v2 の導入
- 初期設定:
aws configureによる認証情報の設定 - S3 操作: バケット一覧表示やファイルのアップロード・同期(
s3 sync) - EC2 操作: インスタンス情報の取得と、Session Manager を使った安全な接続
AWS CLI とは
AWS CLI(Command Line Interface)は、コマンドラインシェル(ターミナル)を使って AWS サービスを操作するための統合ツールです。 裏側では AWS の API を叩いており、ブラウザで行う操作のほとんどをコマンドだけで実行できます。

ブラウザ(マネジメントコンソール)との違い
| 特徴 | マネジメントコンソール(GUI) | AWS CLI(CUI) |
| 操作方法 | ブラウザでのクリック操作 | ターミナルでのコマンド入力 |
| メリット | ・直感的で、初心者でも扱いやすい ・構成の全体像を把握するのに最適 | ・コマンド一発で処理が完了する ・スクリプト化して自動化(Cron 実行など)が可能 |
| デメリット | ・繰り返し作業や大量の操作は手間 (例: S3 のファイル100個を一括削除など) | ・コマンドやオプションを覚える学習コストが必要 |
前提条件(curl, unzip の確認)
AWS CLI v2 のインストールには、インストーラーをダウンロード・解凍するために curl と unzip が必要です。 以下のコマンドでインストール状況を確認し、入っていなければインストールしてください。
# 存在確認(パスが表示されればOK)
which curl unzip
# インストールされていない場合(何も表示されない場合)
sudo apt update && sudo apt install -y curl unzipAWS CLI v2 のインストール
Ubuntu の apt コマンドでも AWS CLI はインストールできますが、バージョンが古かったり(v1)、最新機能が含まれていなかったりすることがあります。 そのため、AWS 公式が提供しているインストーラーを使って 最新の v2 を導入することを推奨します。
公式インストーラーのダウンロードと実行
以下のコマンドを順に実行して、最新の AWS CLI v2 をインストールします。
# 1. インストーラー(zipファイル)をダウンロード
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
# 2. 解凍する
unzip awscliv2.zip
# 3. インストールスクリプトを実行
sudo ./aws/install
すでに古いバージョンが入っている場合は、sudo ./aws/install --update とすることで上書き更新が可能です。
パスの確認とバージョン確認
インストールが完了したら、正常にコマンドが認識されているか確認します。
# コマンドの場所を確認(通常は /usr/local/bin/aws)
which aws
# 出力例: /usr/local/bin/aws
# バージョンを確認
aws --version
# 出力例: aws-cli/2.15.30 Python/3.11.6 Linux/5.15.0-97-generic exe/x86_64.ubuntu.22 prompt/offこのように aws-cli/2.x.x と表示されればインストール成功です。ダウンロードした zip ファイルなどは不要なので削除して構いません。
rm -f awscliv2.zip
rm -rf awsインストールはできたはずなのに aws コマンドが認識されない、あるいは AccessDenied などのエラーが出る場合は、以下のトラブルシューティング記事を参考にしてください。時刻ズレや権限周りの解決策をまとめています。


認証情報の設定(初期設定)
AWS CLI を使うには、「誰が操作するのか」という認証情報(アクセスキー)を設定する必要があります。 事前に AWS マネジメントコンソール(IAM)で作成した アクセスキー ID と シークレットアクセスキー を手元に用意してください。
aws configure による基本設定
以下のコマンドを実行すると、対話形式で設定が進みます。
aws configure聞かれる内容は以下の 4 つです。
アクセスキー ID を入力
シークレットアクセスキーを入力
よく使うリージョン(東京なら ap-northeast-1)
出力形式(見やすい json や table、テキスト処理用の text など。通常は json でOK)
実行例
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【重要】セキュリティに関する注意点
aws configure で設定した認証情報は、ホームディレクトリ配下の ~/.aws/credentials というファイルに保存されます。 中身を確認すると分かりますが、これらは 平文(暗号化されていない状態) で保存されています。
cat ~/.aws/credentials
# 注意:誰でも読める状態でキーが保存されています!個人の学習用環境であればこれでも動きますが、本番環境や会社のPC、あるいは GitHub 等に誤って公開してしまうリスクを考えると、この管理方法は推奨されません。
より安全な管理方法(aws-vault)
セキュリティを重視する場合、OS の暗号化キーストアを利用してアクセスキーを安全に管理できるツール 「AWS Vault」 の導入を強くおすすめします。 以下の記事で Ubuntu への導入手順を詳しく解説していますので、ぜひ合わせてご覧ください。


S3 バケットとファイルの操作
AWS CLI を使う最大のメリットの一つが、S3 の操作です。 ブラウザでファイルを一つずつアップロードするのは手間ですが、CLI ならコマンド一つで大量のファイル転送や同期が可能です。
バケット一覧の表示(s3 ls)
まずは自分のアカウントにある S3 バケットの一覧を表示してみましょう。
aws s3 ls特定のバケットの中身を見たい場合は、バケット名を指定します。
# 書式: aws s3 ls s3://<バケット名>
aws s3 ls s3://my-sample-bucketファイルのアップロード・ダウンロード(s3 cp)
ファイルのコピーには cp コマンドを使います。 Linux の cp コマンドと同様に 「コピー元(Source)」→「コピー先(Destination)」 の順で指定します。
ローカルのファイルを S3 にアップロード
# local_file.txt を S3 バケットへアップロード
aws s3 cp local_file.txt s3://my-sample-bucket/S3 のファイルをローカルにダウンロード
# S3 上の remote_file.txt をカレントディレクトリへダウンロード
aws s3 cp s3://my-sample-bucket/remote_file.txt .※ フォルダごとコピーしたい場合は --recursive オプションを付けます。
フォルダごとの同期(s3 sync)
実務で使える便利なのが sync コマンドです。 これは変更があったファイルだけを転送する「増分バックアップ」のような機能です。Web サイトのデプロイやログのバックアップによく使われます。
# ローカルの「website」フォルダの中身を、S3 バケットと同期(アップロード)させる
aws s3 sync ./website s3://my-sample-bucket/
# S3 バケットの中身を、ローカルの「backup」フォルダと同期(ダウンロード)させる
aws s3 sync s3://my-sample-bucket/ ./backupEC2 インスタンスの確認と接続
以前は SSH で接続していましたが、最近はセキュリティの観点から Session Manager を使った接続が主流です。 ポート 22(SSH)を開ける必要がなく、非常に安全です。
インスタンス情報の取得・フィルタリング
まずは接続先となるインスタンス ID を調べる必要があります。 describe-instances コマンドは情報量が多すぎるため、--query オプションで見やすく整形するのがコツです。
起動中(running)のインスタンス ID と名前を表示
aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=running" \
--query "Reservations[].Instances[].{Instance:InstanceId, Name:Tags[?Key=='Name']|[0].Value, IP:PrivateIpAddress}" \
--output table出力例
-------------------------------------------------------
| DescribeInstances |
+---------------------+----------------+--------------+
| IP | Instance | Name |
+---------------------+----------------+--------------+
| 10.0.1.123 | i-0123456789 | Web-Server |
+---------------------+----------------+--------------+Session Manager プラグインのインストール(Ubuntu版)
CLI で接続機能(start-session)を使うには、追加のプラグインが必要です。 Ubuntu 用のパッケージ (.deb) をインストールします。
# 1. プラグインのダウンロード
curl "https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb" -o "session-manager-plugin.deb"
# 2. インストール
sudo dpkg -i session-manager-plugin.deb
# 3. 動作確認
session-manager-plugin
# 出力: The Session Manager plugin was installed successfully...start-session による接続
プラグインが入れば、あとはコマンド一発で接続できます。SSH 鍵ファイル(.pem)は不要です。
# 取得したインスタンスIDを指定して接続
aws ssm start-session --target i-0123456789以下のようにシェルが切り替われば接続成功です。
sh-4.2$
# ここはすでに EC2 インスタンスの中です


接続するには、EC2 インスタンス側に適切な IAM ロール(AmazonSSMManagedInstanceCore 等)がアタッチされている必要があります。
アンインストール方法
環境を移行する場合や、何らかの理由で AWS CLI を削除したい場合は、以下の手順でクリーンにアンインストールできます。
クリーンに削除する手順
AWS CLI v2 はパッケージマネージャー(apt)ではなく、直接ファイルを配置する形式でインストールされているため、フォルダとシンボリックリンクを手動で削除します。
通常は /usr/local/aws-cli にインストールされています。
以下のコマンドを実行して、プログラム本体と実行コマンドへのリンクを削除します。
# プログラム本体の削除
sudo rm -rf /usr/local/aws-cli
# 実行リンク(コマンド)の削除
sudo rm /usr/local/bin/aws
sudo rm /usr/local/bin/aws_completer認証情報や設定ファイル(~/.aws フォルダ)も削除したい場合は、以下のコマンドを実行します。
rm -rf ~/.aws


※ 注意: これを削除すると、設定していたアクセスキー情報もすべて消えます。
まとめ
本記事では、Ubuntu 環境における AWS CLI のインストールから、現場で役立つ実践的な使い方までを解説しました。
- 繰り返し作業や大量のファイル操作は、マネジメントコンソールよりも CLI が圧倒的に早いです。
aws s3 lsやsyncは、日々の運用で最も頻繁に使うコマンドの一つです。- SSH キー管理から解放される Session Manager (
start-session) は、現代の AWS 運用のスタンダードです。
以上、最後までお読みいただきありがとうございました。


