CLIでAWSをコマンド管理するには

AWS CLI(Command Line Interface)を利用すれば、AWSをコマンド入力で操作・管理できるようになります。AWSの設定や管理作業のために、画像やボタンなどによる直観的に操作がしやすいGUI(Graphic User Interface)として、AWSマネジメントコンソールが提供されておりますが、AWS CLIをあえて利用することにはどのようなメリットがあるのでしょうか。今回は、AWS CLIの概要や登録方法、さまざまなオプションについて解説します。

CLIとは

そもそもCLIとはどのようなものなのでしょうか。

CLIの概要

CLIとは、サーバーなどの操作をコマンド入力で行うことができるユーザーインターフェースです。AWSにおいても、主に設定や管理のために、AWS CLIとして提供されています。AWSのサイトからAWS CLIインストーラをダウンロードしてインストールすることで使用できるようになります。

Windows OSのコマンドプロンプトもしくはPowerShell(コマンドプロンプトのようなWindows管理用のコマンドシェル)などでCLIでの操作ができるのと同様に、AWS CLI では、AWSマネジメントコンソールを使ってできることと同様の操作をすることができます。例えば、パソコンに保存されている画像をAmazon S3にアップロードしたり、起動しているAmazon EC2のインスタンスを停止したりするなどの操作が可能です。

AWS CLIを利用するメリット

AWSマネジメントコンソールを利用すれば直感的な操作が可能であるにもかかわらず、あえてコマンドベースのAWS CLIが提供されているのはなぜでしょうか。それは、AWS CLIにはAWSマネジメントコンソールとは異なるいくつかのメリットが存在するからです。AWS CLIを利用する主なメリットを5つ紹介します。

  • 第三者に管理操作手順を説明する際に、コマンドベースだと説明資料作成の手間が軽減できる(例えば、ビジネス利用におけるAWSマネジメントコンソールの独自の操作マニュアルは、画面毎にスクリーンショット(画像)などを撮って貼りつけたものがすることが多いが、コマンドベースの資料の場合では、実際のコマンド(スクリプト)をテキスト情報として残しておけばよいのでマニュアル作成の負担軽減が期待できる)
  • 一定のルールに沿った繰り返し作業などをあらかじめプログラミング言語で記述しておくことで、作業の自動化ができるうえ、自動化による手間の軽減だけでなく、人的ミスの予防も期待できる
  • 毎回、AWSマネジメントコンソール画面にアクセスやログインしなくてもAWSのリソース(EC2やS3など)を操作できる(コマンド入力で操作を行うことができる)
  • キーボード入力だけでコマンドを実行できるので、慣れれば作業スピードが向上する
  • AWS上のリソース間を連携した管理や設定のための独自のサービスやツールを作成できる(AWS CLIを使用すれば一定ルールに従った作業のスクリプト化により自動化できるので、AWS上のリソース間の自動連係ツールを作成することができる。例えば、Amazon EC2からAmazon S3に次々とファイルを自動的にアップロードしてくれるような自動化スクリプトを作成することができる)

AWS CLIを利用するケース

AWS CLIの利用が想定される主なケースは、以下のとおりです。

自分自身のパソコン以外からアクセスするケース(AWS IAMユーザーでアクセス)

専用のAWS IAMユーザーを発行してアクセスキーを入力すれば、AWS CLIを使って自分のパソコン以外の端末からでもAWSにログインすることができます。

Amazon EC2のインスタンスから利用するケース

IAMロールをAmazon EC2インスタンスに割り当てれば、IAMユーザーを使用せずにAWSにアクセスすることができます。この場合では、アクセスキーの管理が不要で、セキュリティ面の安全性が増します。

AWS CLIのインストール方法

AWS CLIを利用するためには、パソコンにAWS CLIをインストールする必要があります。インストール手順はOSによって異なります。

AWS CLIのインストール手順

インストールする端末がWindows OSかMac OSかで、インストールの手順が異なります。

Windows OSの場合

Windows OSの場合には、以下の手順でAWS CLIインストーラをダウンロードする必要があります。

1.以下のいずれかのファイルをあらかじめダウンロードします。

2.AWSマネジメントコンソールからIAMユーザーを作成します。

3.ユーザー追加画面で、ユーザー情報やアクセスの種類、パスワードなどの情報を設定します。(必要に応じてグループの作成や設定なども同時に行います)

4.ダウンロードしたインストーラを実行してセットアップし、IAMユーザーをひも付けします。

以上の流れによってWindowsでAWS CLIを使用できるようになります。

なお、AWS CLIの更新バージョンがリリースされた場合には、最新のバージョンを入手するために、上記の手順を繰り返す必要があります。

Mac OSの場合

Mac OSにAWS CLIをインストールは若干手順が異なります。ここではMac OSにバンドルされたインストーラを使用してインストールする方法を紹介します。

1.使用するMacにインストールされているPythonのバージョンを確認し、AWS CLIに対応しているか否か(Python 2 バージョン 2.6.5+ または Python 3 バージョン 3.3+以降の場ジョーンであるか否か)をチェックします。古いバージョンの場合やインストールされていない場合には対応したバージョンのものをインストールします。

2.以下のコマンドを入力して、AWS CLIをインストールすることができます。

$ pip3 install awscli --upgrade --user
Pythonは、フリーで提供されているプログラミング言語です。Macには通常プリインストールされていますが、バージョンが古い場合などがあるので注意してください。

AWSアクセスキーの取得

AWS CLIをインストールための最も簡単な方法であるAWS configureコマンド入力時にはAWSアクセスキーの情報が必要です。以下の手順でAWSアクセスキーを確認してください。

1.AWSマネジメントコンソールにログインして、右上の「AWSへようこそ」のプルダウンメニューから、「セキュリティ認証情報」をクリックします。

2.プルダウンメニューの中の「アクセスキー」をクリックして、「新規にアクセスキーを取得」を選択します。

3.自動的にアクセスキーが記載されたCSVファイルがダウンロードされますので、CSVファイルの中を見てアクセスキーを確認してください。

aws-shellを使って作業効率を高める

一つひとつをコマンド入力するのは手間がかかり、また、誤入力により正確な記述ができなかったりすることがあります。コマンドの誤入力があると意図した操作が実行されず、さらに修正箇所の発見のために作業効率が大きくダウンしてしまうおそれがありますが、aws-shellという支援ツールを使用すれば作業効率を高めることができます。

2019年8月時点では、本機能は開発者プレビューのものです。

aws-shellとは

aws-shellは、コマンド入力をサポートしてくれるCLIの支援ツールです。aws-shellはAWS CLI初心者にとってはもちろんのこと、上級者にとっても有用なツールです。aws-shellを利用するためには、Pythonとpipをインストールしたうえで、以下のコマンドを実行してaws-shellをインストールします。

$ pip install aws-shell

また、aws-shellを最新のバージョンに更新する際にはpip install --upgradeコマンドを実行してバージョンアップをします。

aws-shellの具体的な機能

aws-shellには以下のような機能が備わっています。コマンド入力のミスを防止し、作業を効率化してくれるメリットがあります。

あいまい検索(ファジー検索)
サジェスト検索
動的インラインドキュメント
OSのシェルコマンドの実行

CLIのコマンドラインオプション

コマンドオプションを利用することで、取得する情報を選択したりフォーマットを変更したりすることができ、必要な情報だけを取得して作業の効率化を図ることができます。

profileオプション

profileオプションは、複数のアカウントを管理する際に使用します。例えば、本番環境のアカウントとテスト環境のアカウントを使い分けているようなときに便利です。

filtersオプション

filtersオプションは、ある特定の条件に合致する数値のみを抽出(フィルタリング)する際に使用します。
例えば、AWS CLIでAWSのサブネットを一覧表示するdescribe-subnetsをそのまま実行した場合には、すべてのサブネットが表示されますが、filtersオプションを使用するとキーワードやフィールドによって抽出する情報を絞り込むことができるため、必要な情報を探しやすくなります。

queryオプション

queryオプションは、describe-subnetsで情報を検索した際に、サービスやリソースの中から欲しい情報だけ出力させることができるオプションです。例えば、出力する情報の中からPrivateIpAddressのみを出力するといった使用方法が可能です。

outputオプション

outputオプションは、出力形式を指定できるコマンドです。JSON、TEXT、Table形式のなかから好みのものを選ぶことができます。コマンドの形式によって見やすさや情報の検出しやすさが異なるので、使い慣れた出力形式を設定しましょう。

regionオプション

regionオプションは、出力するregionを選択することができます。指定しない場合には、デフォルトのregionが指定されています。

endpoint-urlオプション

リクエストを送信するurlを指定します。通常、AWS CLIと指定したサービスによりurlが自動的に生成されるのでエンドポイントurlオプションを設定する必要はありませんが、一部のコマンドではアカウント固有のurlを指定する必要があります。
例えば、Amazon EC2とAmazon VPCの外側にあるAmazon S3を連携させるために通信したいとき、エンドポイントを設定すればS3との通信が可能になります。

versionオプション

リクエストを送信するurlを指定します。通常、AWS CLIと指定したサービスによりurlが自動的に生成されるのでエンドポイントurlオプションを設定する必要はありませんが、一部のコマンドではアカウント固有のurlを指定する必要があります。
例えば、Amazon EC2とAmazon VPCの外側にあるAmazon S3を連携させるために通信したいとき、エンドポイントを設定すればS3との通信が可能になります。

環境変数をセットする

AWS CLIコマンドに環境変数をセット(定義)すれば、フルパス(ファイルの場所を漏れなくすべて記載した情報)でコマンドを指定しなくとも、認証情報と設定ファイルを実行することができます。具体的な環境変数の例を記載すると以下のようになります。

アクセスキーID……AWS_ACCESS_KEY_ID
シークレットアクセスキー……AWS_SECRET_ACCESS_KEY
リージョン……AWS_DEFAULT_REGION
出力……AWS_DEFAULT_OUTPUT
プロファイル……AWS_DEFAULT_PROFILE

コマンドを実行する前に環境変数をセットすれば、コマンドオプションを使用して認証情報や設定ファイルを使用しなくてもコマンドが実行できるため、操作が非常にスムーズになります。すでに認証情報や設定ファイルが作成されている場合でも、環境変数が優先されます。

まとめ

AWS CLIを使って、AWSのサービスをコマンド入力で使用できるようになると、業務効率の向上や人的ミスの軽減などが期待できます。操作手順のマニュアル作成の際や担当引き継ぎの際にもコマンド情報を残しておけばすむので非常にスムーズです。また、AWSはAPIと相性も良く、プログラミング言語で作成したスクリプトにより更なる自動化も期待できます。

AWS CLIには自動化をさらに助けてくれるオプションや、入力補助ツールもありますので、積極的に活用し管理の効率性を高めていきましょう。

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る