【Ubuntu】AWS CLI インストールと基本的な使い方 | S3 操作と EC2 接続

  • URLをコピーしました!
目次

はじめに

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 のインストールには、インストーラーをダウンロード・解凍するために curlunzip が必要です。 以下のコマンドでインストール状況を確認し、入っていなければインストールしてください。

# 存在確認(パスが表示されればOK)
which curl unzip

# インストールされていない場合(何も表示されない場合)
sudo apt update && sudo apt install -y curl unzip
手順

AWS 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 つです。

AWS Access Key ID

アクセスキー ID を入力

AWS Secret Access Key

シークレットアクセスキーを入力

Default region name

よく使うリージョン(東京なら ap-northeast-1

STEP
Default output format

出力形式(見やすい jsontable、テキスト処理用の 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/ ./backup
実践

EC2 インスタンスの確認と接続

以前は 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)ではなく、直接ファイルを配置する形式でインストールされているため、フォルダとシンボリックリンクを手動で削除します。

STEP
インストール先の特定

通常は /usr/local/aws-cli にインストールされています。

STEP
関連ファイルとリンクの削除

以下のコマンドを実行して、プログラム本体と実行コマンドへのリンクを削除します。

# プログラム本体の削除
sudo rm -rf /usr/local/aws-cli

# 実行リンク(コマンド)の削除
sudo rm /usr/local/bin/aws
sudo rm /usr/local/bin/aws_completer
STEP
設定ファイルの削除(任意)

認証情報や設定ファイル(~/.aws フォルダ)も削除したい場合は、以下のコマンドを実行します。

rm -rf ~/.aws

注意: これを削除すると、設定していたアクセスキー情報もすべて消えます。

まとめ

本記事では、Ubuntu 環境における AWS CLI のインストールから、現場で役立つ実践的な使い方までを解説しました。

  • 繰り返し作業や大量のファイル操作は、マネジメントコンソールよりも CLI が圧倒的に早いです。
  • aws s3 lssync は、日々の運用で最も頻繁に使うコマンドの一つです。
  • SSH キー管理から解放される Session Manager (start-session) は、現代の AWS 運用のスタンダードです。

以上、最後までお読みいただきありがとうございました。


よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

インフラ(クラウド/NW/仮想化)から Web 開発まで、技術領域を横断して活動するエンジニア💻 コンシューマー向けエンタメ事業での新規開発・運営経験を活かし、実戦的な技術ノウハウを発信中

[ Certs ] CCIE Lifetime Emeritus / VCAP-DCA ✒️ [ Life ] 技術書・ビジネス書愛好家📖 / 小・中学校で卓球コーチ👟

目次