• ホーム
  • dx
  • AWS CLI完全活用マニュアル:非エンジニアでもわかる自動化とエラー対応法
dxdx

AWS CLI完全活用マニュアル:非エンジニアでもわかる自動化とエラー対応法

AWS CLI完全活用マニュアル:非エンジニアでもわかる自動化とエラー対応法
AWSを運用する上で、作業ミスや手間の多さに課題を感じていませんか?AWS CLIなら、繰り返しの操作を自動化し、各種サービスへのアクセスやコントロールを効率的に実現できます。 本記事は、システム・アプリ開発を行っているGMOデザインワンDX事業本部の事業責任者・泉川学監修のもと、AWS CLIの基本からインストール方法、活用できるコマンド例、自動化スクリプトやトラブル対応のポイントまで、現場で即使えるノウハウを分かりやすく解説します。AWSの運用をよりスマートに、省力化したい全てのクラウド担当者に向けた実践ガイドです。

目次

1. AWS CLIとは?

AWS CLI(エー・ダブリュー・エス・シー・エル・アイ)は、Amazon Web Services(以下AWS)が提供するクラウドサービスを、コマンドベースで操作できるツールです。マウスでの操作に慣れている方にも、少しずつ習得していくことで業務効率が大幅に向上します。GUI(グラフィカル・ユーザー・インターフェース)とは異なり、CLI(コマンド・ライン・インターフェース)はスクリプトなどを使った自動化に向いているのが特徴です。インフラ管理を少人数で行う現場では、CLIを活用することで作業ミスの減少や運用の仕組み化が期待できます。

1-1 AWS CLIの概要と目的

AWS CLIとは、「コマンドを打つだけでAWSのさまざまなサービスを操作できるツール」です。通常、AWSの操作はWebブラウザを使ってマウスポチポチで行うことが多いですが、それを一つひとつ手でやっていると手間がかかります。CLIを使えば、「S3にファイルセットをアップする」「仮想サーバー(EC2)を起動する」といった動作を、一撃で行うことができます。目的は明確で、AWS上の操作を速く・自動で・正確に行えるようにするためのものです。

1-2 GUIとの違いとCLIの特徴

GUIが「画面で見る説明書」だとしたら、CLIは「手紙で渡す指示書」です。GUIではマウス操作で直感的に設定できますが、同じ作業を繰り返そうとしたときに手間がかかったり、人によって操作が微妙に違っていたりすることがあります。一方のCLIでは、一度コマンドを記録しておけば、何度でも同じ処理を高速かつ正確に行えます。決まったルールで同じ作業を何度も行うなら、CLIのほうが便利です。

1-3 対応する主要なサービス一覧

AWS CLIは、AWSが提供するほぼすべての主要サービスに対応しています。例として、以下のようなものがあります:

- S3(エス・スリー):ファイル保存用のサービス

- EC2(イー・シー・ツー):仮想マシン(クラウド上のサーバー)

- Lambda(ラムダ):関数ベースでコードを実行する仕組み

- IAM(アイ・エー・エム):ユーザーや権限の管理

- CloudWatch(クラウドウォッチ):ログの可視化とモニタリング

これらをCLIで操作できるようになると、手動操作を大幅に減らせます。

2. AWS CLIを使うメリット

AWS CLIを使えるようになると、日常の運用タスクが劇的に効率化します。特に、定期的に実行する処理、ミスが許されない設定変更など、手作業では管理が難しかったタスクも、CLIで自動化することができます。また、CLIを活用して他のツールと連携することで、社内のワークフローも洗練されたものに進化していきます。

2-1 作業自動化による効率化

CLIの最大のメリットとして「作業の自動化」が挙げられます。例えば、毎朝9時にテスト用のEC2インスタンスを起動し、夜22時には自動的に停止させるといったルーチン作業がCLIなら簡単に実現できます。自動化することで、操作ミスを限りなくゼロに近づけつつ、社員の手間も減らすことができます。

2-2 スクリプトでの一括操作

CLIは、人間の代わりにコンピューターが操作手順を守ってくれる「スクリプト」(指示書)に非常に向いています。複数の手順をまとめて実行したいとき、例えば「S3にファイルをアップロードして結果をメールで報告する」といった処理も一つのスクリプトにまとめることで、1行のコマンドで実行可能になります。属人化しやすいAWS運用の安定化に寄与します。

2-3 DevOpsとの親和性

最近主流となっているDevOps(デブオプス)という用語を聞いたことがあるでしょうか?

これは「開発(Development)」と「運用(Operations)」を一体化して進める考え方です。CLIはこのDevOpsと非常に相性が良く、CI/CD(継続的インテグレーション/継続的デリバリー)パイプラインの一部に組み込むことで、AWSを軸とした自動化されたアプリ・インフラ提供が可能になります。

3. AWS CLIのインストール手順

「導入のハードルが高そう」と思われがちなCLIですが、実際にはインストール自体はそこまで難しくありません。OSによって手順が違いますので、自分の環境に合わせた方法でセットアップしましょう。

3-1 Windowsでのインストール方法

Windowsユーザーの場合、以下のステップでCLIを導入できます。

1. AWS公式サイトから「AWS CLIインストーラー(Windows用)」をダウンロードする

2. インストーラーをダブルクリックして指示に従いインストール

3. コマンドプロンプトで「aws --version」と入力して、インストール確認する

インストール直後は再起動が必要な場合がありますので注意してください。

3-2 macOSでのインストール方法

macOSでは、ターミナルというMacに標準で入っているコマンド入力ツールを使います。

1. Homebrew(ホームブルー)というパッケージ管理ソフトを導入していることを確認

2. ターミナルで brew install awscli と打ち込む

3. インストールが終わったら aws --version でバージョン確認します

最新のmacOSに対応しているv2が導入されます。

3-3 Linuxでのインストール方法

Linuxはディストリビューションによってパッケージ管理システムが異なります。以下はUbuntuの例です。

1. sudo apt update && sudo apt install awscli を実行

2. aws --version でインストールが成功したか確認

また、Amazonの公式ドキュメントには、RedHatやFedoraなど他ディストリ向けの導入手順も用意されています。

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

CLIのバージョンが古いと新しい機能が使えないため、定期的に最新版か確認しましょう。

- aws --version で現在のバージョンを確認

- Windows/macOSではインストーラーやbrewで再インストールするだけでアップデート可能です

- Linuxでは再インストールまたは上書き更新で対応します

4. 初期設定と認証

インストール完了後、すぐに使いだせるわけではありません。まずはAWSアカウントにCLIツールを認識させるための「認証設定」が必要です。AWS CLIでは、「どのユーザーが、どんな権限で、どのサービスを操作するか」を明確に設定します。

4-1 AWSアカウントの準備

事前にAWSアカウントが必要です。もし持っていなければ、AWS公式ページから登録できます。登録後、管理上の安全のため「IAMユーザー」(個別の利用者)を作るのが基本です。

4-2 IAMユーザーの作成と適切な権限

AWSでは「誰に、どこまでの操作を許すか」をIAMで管理します。CLI利用時は、このIAMユーザーに「プログラムによるアクセス権限」が必要です。最低限、S3操作ならS3フルアクセスなどのポリシー(権限ルール)を付けておきましょう。

4-3 aws configureコマンドの使い方

CLIを初めて使うときは、aws configure というコマンドで設定を行います。

入力する内容は以下の4つです:

- AWS Access Key ID(アクセスキー・ユーザー固有のID)

- AWS Secret Access Key(アクセスの秘密鍵)

- Default region(リージョン:東京は ap-northeast-1)

- Output format(出力:基本は json)

この設定でCLIがアクセス用情報を記憶してくれます。

4-4 プロファイルの活用方法

複数のプロジェクトを同じクライアント環境で扱う場合、プロファイル機能を使うのが便利です。aws configure --profile プロジェクト名 の形式で複数の設定を保存でき、それぞれを切り替えながら作業できます。

5. 基本的なコマンド例

AWS CLIでは、日々の運用に欠かせない基本コマンドをマスターすることで、作業のスピードと正確性が大きく向上します。ここでは代表的なAWSサービスを対象とした、実践的なコマンド例をご紹介します。最初はコピー・ペーストしながら学んでも構いません。少しずつ慣れていきましょう。

5-1 S3の操作:アップロード・ダウンロード・削除

S3(Simple Storage Service)は、クラウド上にファイルを保存するストレージサービスです。CLIでは次のように操作します。

- アップロード(ローカル→S3)

aws s3 cp ./sample.txt s3://my-bucket/

- ダウンロード(S3→ローカル)

aws s3 cp s3://my-bucket/sample.txt ./

- 削除

aws s3 rm s3://my-bucket/sample.txt

オプションとして --recursive を使えば、フォルダ単位で一括アップロード・ダウンロードも可能です。

5-2 EC2の操作:インスタンスの起動・停止

EC2は仮想サーバーのこと。CLIを使えば次のような操作ができます。

- 起動

aws ec2 start-instances --instance-ids i-0123456789abcdef0

- 停止

aws ec2 stop-instances --instance-ids i-0123456789abcdef0

インスタンスIDはマネジメントコンソールや describe-instances コマンドで確認可能です。

5-3 CloudWatchのログ取得

AWS CloudWatchは、アプリやサーバーのログを収集・監視するサービスです。

- ログ取得の例

aws logs get-log-events --log-group-name "/aws/lambda/my-function" --log-stream-name "yyyy/mm/dd/[version]..." --limit 100

これにより、ログの中身を直接ターミナルで確認できます。

5-4 その他よく使われるサービスの実例

- IAMユーザー一覧取得

aws iam list-users

- DynamoDBのテーブル一覧を見る

aws dynamodb list-tables

- Lambda関数の呼び出し

aws lambda invoke --function-name MyFunction out.txt

AWS CLIの魅力は、上記のような操作を同じ構文でサービス横断的に扱える点です。

6. よく使うコマンドオプションとフィルタ

実務では、出力結果が多すぎて読みづらくなったり、情報を素早く抽出したいシーンが多く発生します。CLIでは、便利なオプションを活用することでより効率的に作業ができます。

6-1 queryオプションでのJSON整形

CLIは標準でJSONという形式でデータを出力します。しかしこのままでは見づらいので、--queryオプションで必要な部分だけを抽出できます。

例:EC2インスタンスのIDだけを取り出す

aws ec2 describe-instances --query "Reservations[*].Instances[*].InstanceId" --output text

クエリ文は少しややこしいですが、慣れれば自由自在に情報を扱えます。

6-2 --outputや--regionオプションの活用

CLIの出力形式は自由に変更可能です。

- --output json(デフォルト):構造化されたデータ

- --output table:表形式でわかりやすい

- --output text:1行ずつのテキストで抽出

また --region オプションで操作対象のリージョンを明示することも重要です。例:

aws ec2 describe-instances --region ap-northeast-1

6-3 条件付きフィルタでの効率的な抽出

describe系のコマンドでは、--filters オプションで条件を絞り込めます。

例:特定のタグが付いたインスタンスを検索

aws ec2 describe-instances --filters "Name=tag:Environment,Values=dev"

大量のリソースがある環境では、必須とも言える使い方です。

7. AWS CLIでスクリプトを組もう

CLIの真の実力は、自動処理にこそ発揮されます。単体コマンドだけでなく、複数のCLI命令を「スクリプト」として1つにまとめることで、より高度な自動化を実現できます。

7-1 BashやPowerShellからの操作自動化

UNIX系(macOSやLinux)の場合はBash(バッシュ)、WindowsではPowerShellを使ってCLIを実行できます。例えば、次のようなスクリプトを作成すれば、複数の処理が一括で実行されます:

#!/bin/bash

aws s3 sync ./backup/ s3://my-backup-bucket/

aws sns publish --topic-arn "arn:aws:sns:..." --message "Backup complete!"

これを定期実行(cronやスケジューラ)すれば、完全自動化も可能です。

7-2 シェルスクリプトの記述例

仮想マシンの起動〜状態確認を自動実行する例:

#!/bin/bash

INSTANCE_ID="i-0123456789abcd"

aws ec2 start-instances --instance-ids $INSTANCE_ID

sleep 10

aws ec2 describe-instances --instance-ids $INSTANCE_ID --query "Reservations[0].Instances[0].State.Name" --output text

このように、数行のスクリプトで複雑なタスクも簡略化できます。

7-3 バッチ処理の自動化とTips

業務の処理を夜間バッチで実行する場合にもCLIは便利です。ログ出力、エラー検出、バックアップ処理をまとめて実行できます。Tipsとしては、作成したスクリプトの出力をファイルにリダイレクトしておくと、トラブル発生時の調査にも役立ちます。

8. エラー対処&デバッグ方法

CLIを本格的に使い始めると、避けられないのが「エラー対応」です。しかし焦らず、原因を順序だてて調べれば必ず解決できます。

8-1 よくあるエラーと対処法

- InvalidClientTokenId:アクセスキーが間違っている

- AccessDenied:権限が不足している

- ResourceNotFound:指定リソースが存在しない

まずは入力ミスやプロファイルの設定漏れがないかを見直しましょう。

8-2 debugログの有効化

CLIには --debug オプションがあり、詳細な動作ログを確認できます。

例:aws s3 ls --debug

実行時に裏側で何が行われているかが分かるので、原因特定が一気に進みます。

8-3 認証周りのトラブルシューティング

一番多いのが認証設定ミスです。credentialsファイルや設定パスを確認し、環境変数との競合などがないかも調べましょう。aws sts get-caller-identity で現在のアクセスユーザー情報が取得でき、検証に役立ちます。

9. AWS CLI v2の新機能と違い

AWS CLIは2020年頃よりv2系が主流となりました。v1からのアップグレードで何が変わったのか、そのポイントを押さえておきましょう。

9-1 CLI v1とv2の主な違い

- v2は単体ファイル形式でインストールが容易

- 一部コマンドでUI支援(インタラクティブモード)を提供

- WindowsやmacOSでの互換性が向上

v1の環境を使っている場合は、v2への移行を強くおすすめします。

9-2 セッションマネージャ・SSO対応

v2からは「セッションマネージャ」というサービスにCLI経由でアクセス可能になりました。これにより、キーペアなしでEC2インスタンスに接続できます。さらにSSO(シングルサインオン)対応により、企業内ID管理システムとも連携しやすくなっています。

9-3 v2によるセキュリティ強化ポイント

v2では暗号化方式や通信の堅牢性が強化されています。ログ出力形式の変更や一部コマンドの監査対応も進んでいます。セキュリティ要件が年々厳しくなる中で、最新版へのアップデートは運用リスク対策としても重要です。

10. より便利に使うためのツール・補助機能

CLIそのものも便利ですが、他のツールと組み合わせることでさらに使い勝手が飛躍的に向上します。効率を極限まで高めるためのベストプラクティスをご紹介します。

10-1 AWS CloudShellとの連携

CloudShellは、AWSサーバー上で使えるterminal(純正CLI環境)です。Webブラウザからアクセスでき、すぐにCLIを実行可能。個人PCへのインストールが不要なため、セキュリティ面でも安心です。

10-2 AWS CLIとTerraformやAnsibleとの併用

Terraform(クラウド管理の自動ツール)、Ansible(構成管理ツール)ともCLIとは好相性です。CLIで個別のタスクを実行し、複雑な構成はTerraformに任せる、というような使い分けが可能です。

10-3 jqやsedとの連携Tips

LinuxやmacOS周辺ツールと組み合わせることで、CLIの出力結果をその場で加工・抽出できます。例えば jq を使えばJSON出力を読みやすく整形できますし、sed や grep をセットで使えば、ログの中から必要な一行を探し出すことができます。



contact お気軽にご連絡下さい。