Technology部の山岡です。
今回は、AWSサービスを利用する上でよく用いられるAWS CLI(AWS Command Line Interface)について、インストール方法から基本的な使い方までを解説いたします。
AWSを用いたインフラ構築をおこなう上で、非常に有用なツールとなりますので、AWSをもっともっと便利に使いたい! という方は、ぜひご覧になってください。
目次
AWS CLIとは
AWS CLI(AWS Command Line Interface)とは、AWSサービスをコマンドライン上で利用することを目的とした、AWSサービスの統合管理ツールです。
GUIベース(マウスやクリックによる操作)の「AWS Management Console(Webブラウザを通じてAWSサービスを管理するインターフェース)」と比較して、直感的な操作が難しく、より上級者向けのツールとなります。しかしながら、構築した環境のスクリプト化や自動化、詳細な設定値の変更が可能なため、より実用的にAWSを運用していきたい方におすすめのツールです。
ここではさらに、AWS Management Consoleと比較した際のメリットについて解説していきます。
メリット1.環境構築の効率化
AWS CLIはコマンドライン上で操作するツールのため、環境構築の手順をスクリプト化することができます。
スクリプト化とは、繰り返し実行する操作を一つのファイルに記述・管理することです。スクリプトは再利用が可能で、環境構築の再現性が向上し、バージョン管理も容易になります。AWS Management Consoleでは、一つひとつの設定を人の手でおこなうため、同じ環境を複数用意したいとき(たとえば開発環境や本番環境を分けたいとき)には、操作ミスに気をつけなければなりません。
また、ほとんどのAWSサービスをコマンドライン上で管理できるため、GUI操作では複数のサービス画面を行き来する必要のあった大規模な環境の構築も、手軽におこなうことができます。
メリット2.独自のワークフローの構築が可能
AWS CLIはコマンドだけでサービスの利用を完結させることができるため、他業務ツールのコマンドの中にAWSリソースの実行を組み込むことが可能です。
たとえば特定のソフトウェアの操作手順の中で自動的にAWSサービスを実行するなど、業務に合わせた柔軟なワークフローを構築することができるようになります。
メリット3.詳細な設定の管理が可能
AWS CLIでは、AWS Management Consoleでは操作ができないような、詳細な設定項目の制御・編集が可能です。後ほど解説するIAMユーザーの設定により、あらかじめ「AWS CLIで何ができるのか」を決めておくこともできますので、安全な運用も可能となります。
【準備編】AWS CLIのインストール・セットアップ
ここからは、AWSアカウントをすでに持っている方に向けて、AWS CLIのインストール方法とセットアップ方法について解説していきます。まだアカウントを持っていないよという方は、公式サイトから新規登録が可能です。
AWS CLIはAWS アカウントを持つユーザーなら無料で利用することが可能ですので、不要な料金を気にすることなく利用することができます(実際のAWSサービスの運用にはお金がかかりますが、本記事では一年間無料枠の範囲で検証できるコマンドを扱っています)。
1.インストール方法
公式サイトからお使いのパソコン用のインストーラーを取得しましょう。インストーラーを起動したあとは、とくに設定する箇所はないため、「Next」「Install」ボタンをクリックするだけで大丈夫です。お使いのパソコンに合わせた環境の構築を自動でおこなってくれます。
2.IAMユーザーの作成
次に、AWS CLIを実行するために必要なIAMユーザーの作成をおこないます。
IAMユーザーとは、サービスへのアクセスなどを制限した個別のユーザーで、後ほどご紹介するアクセスキーの作成に利用します。IAMユーザー自体も、よりAWSサービスを安全に利用するためには必ず覚えておかなければならないサービスの一つです。これを期に、IAMユーザーの作成方法は必ずマスターしておきましょう。
まずは、AWSルートユーザー(AWSアカウントを開設した際に付与されたアカウント)、あるいはユーザー作成権限のあるIAMユーザーを用いて、AWS Management Consoleにアクセスをします。
ユーザー作成画面を開くために、左上の検索欄からIAM(Identity and Access Management)サービスを選択しましょう。
IAMでは、AWSルートユーザーに紐づいた複数のアカウントの作成・管理が可能です。左のサイトバーから「ユーザー」を選択後、「ユーザーを作成」をクリックして、新規ユーザーの作成を始めましょう。
ユーザーを作成する手順はユーザー名の入力、許可ポリシーの選択、設定の確認(+タグ付け)の3つです。
- ユーザー名の入力
- 許可ポリシーの選択
- 設定の確認
順番に見ていきましょう。
ユーザー名の入力
まずはユーザー名を入力します。利用目的に合わせた名前にしましょう。
許可ポリシーを選択
次に、許可ポリシーを選択します。今回はAWS CLIでS3(ストレージサービス)にアクセスが可能なユーザーの作成を目的としますので、「AmazonS3FullAccess」を選択してください。
このとき、S3ファイルの読み取りだけができるようにしたい場合や、読み取り・書き出しは可能だがファイルの削除はさせたくない場合など、IAMポリシーでは柔軟な許可設定が可能です。
さらに、右上のポリシーの作成を利用することで、どのS3バケットにのみアクセス権限を与えるかについても設定が可能です。利用目的に合わせたポリシーを選択しましょう。
S3に限らず、複数のAWSサービスを利用したい場合には、「AdministratorAccess」で、ルートユーザーと支払い・コスト管理以外の同権限を持たせることも可能です。
設定の確認(+タグ付け)
最後にユーザー情報を確認します。3つ目のタグは、IAMユーザーやAWSサービスに個別に付与できるもので、複数人開発や多くのサービスを使用する場合に、リソースの整理やコスト管理が可能となります。
3.アクセスキーの作成
ここからは、アクセスキーの作成をおこないます。アクセスキーはAWSサービスを利用するための認証方法の一種で、AWS CLIのように、ユーザーに代わってプログラムがAWS にアクセスする際に用いられるものです。
まずは、先ほど作成したユーザー名をクリックして、ユーザー個別情報のページに移行します。このページでは、許可ポリシー編集やセキュリティー管理が可能です。
次に「セキュリティ認証情報」のタブから「アクセスキー」に移行し、「アクセスキーの作成」を選択します。
アクセスキーは長期的に利用が可能な認証情報のため、利用目的によってはセキュリティを高めた別の認証情報が提案されます。今回はS3バケットの作成練習をおこなうだけですので、アラートは無視して「次へ」ボタンをクリックしましょう。
次に、説明タグ(アクセス時の目印となるもの)を設定し、アクセスキーを作成します。
このとき、アクセスキーIDとシークレットアクセスキーの両方が表示されますが、シークレットアクセスキーはこの画面でのみ表示され、忘れてしまうと同じアクセスキーでAWSサービスを利用することができなくなってしまいます。必ずCSVファイルとしてダウンロードをするか、メモをしておきましょう。忘れてしまった場合には、再度同じ手順でアクセスキーの作成が可能です。
4.コンフィグの設定
最後に、お使いのパソコンのAWS CLIからAWSサービスへアクセスするために、先ほど作成したアクセスキーとシークレットキーをAWS CLIに設定します。まずはコマンドソフト(WindowsならコマンドプロントやPowerShell, MacOSならターミナルなど)を開いて、次のコマンドを入力します。
aws configure
すると、AWSサービスを利用するための初期設定項目が出力されます。それぞれの項目に、先ほど作成したアクセスキーとシークレットキーを読み込ませましょう。
AWS Access key ID [None]: //アクセスキーを入力
AWS Secret Access Key[None]: //シークレットキーを入力
Default region name [None]: //サービスを利用したいリージョン名を入力(東京なら ap-northeast-1)
Default output format[None]: //AWS CLIを利用した際の出力形式を入力(JSONなど)
これで、AWS CLIの環境構築は完了しました。上記の設定により、実際にAWS Management ConsoleにIAMユーザーでログインをした際と同じように、AWSサービスの操作が可能となります。
また、AWS Configureでは現在の設定の確認やIAMユーザーの変更も可能です。現在のIAMユーザーの設定を知りたいときは、もう一度同じコマンドを入力しましょう。
以下のように、現在使用しているIAMユーザーの情報を表示してくれます。
AWS Access key ID [**************aaaa]:
AWS Secret Access Key [***********bbbb]:
Default region name [ap-northeast-1]:
Default output format [json]:
【実践編】AWS CLIの基本的な使い方
次に、実際にAWS CLIの利用方法について確認しましょう。AWS CLIはAWSサービス全般との連携が可能で、非常に多くのコマンドとオプションが用意されています。
本記事では、比較的簡単な操作で進めることのできるコマンドを紹介しますので、ぜひお試しください。
S3バケットの作成と操作
AWS S3(Simple Storage Service)はAWSの提供するストレージサービスで、専用のストレージをバケット、その中のフォルダやファイルをオブジェクトと呼ばれる形式で構築・管理することが可能です。
AWS CLIを用いると簡単にバケットの作成、およびオブジェクトの操作が可能です。実際にやってみましょう。
新規バケットの作成は、以下のコマンドで可能です。
aws s3 mb s3://{作りたいバケットの名前}
実行したコマンドがこちらです。
aws s3 mb s3://aws-cli-test-masa
次にローカルフォルダ内のファイルをこのバケットにアップロードしてみましょう。ファイルのアップロードはこちらのコマンドでおこなうことができます。
aws s3 cp {ローカル上のファイルのパス} s3://{バケット名}/{オブジェクト名}
実行したコマンドがこちらです。
aws s3 cp ./test.txt s3://aws-cli-test-masa/test.txt
以上のように、AWS CLIでは簡単なコマンドで、AWSサービスを利用することが可能です。
EC2インスタンスの作成と起動
次に、EC2(Elastic Compute Cloud)インスタンスの作成もしてみましょう。
EC2はAWSの提供する仮想サーバーの一種で、スケーラブルなサーバーの構築が可能です。また、OSや必要なサービスのインストールを済ませたAMI(Amazon Machine Image)を提供しており、環境構築についても自動でおこなってくれます。
1.IAMポリシーの設定
S3と同様に、EC2インスタンスを作成する際には、IAMの許可ポリシーのアタッチをおこなう必要があります。特定の操作のみをおこなうのであれば該当するポリシーを、EC2の全操作をおこないたい場合には、「AmazonEC2FullAccess」を選びましょう。
2.キーペアの作成
IAMポリシーのアタッチを済ませたら、公開鍵・秘密鍵の設定をおこないましょう。
公開鍵・秘密鍵はリージョンごとに管理される、EC2サーバーへの接続を暗号化する手法の一種で、AWS Configureで選択したリージョンのEC2サーバーに公開鍵が、ローカルに秘密鍵が保存されます。EC2インスタンスを構築したいリージョンであることをAWS Configureで確認したのち、下記のコマンドを実行してください。
aws ec2 create-key-pair --key-name {公開鍵の名前} --query 'KeyMaterial' --output text > {秘密鍵の名前}.pem
これにより、ローカルフォルダに{秘密鍵の名前}.pemが新規で作成されたはずです。
注意:この秘密鍵(.pem ファイル)は適切に管理し、他人に共有しないようにしてください。
リージョンにある公開鍵の一覧は、以下のコマンドで確認することができます。
aws ec2 describe-key-pairs
次のようなアウトプットの中に、先ほどのコマンドで設定した公開鍵の名前が確認できれば、公開鍵・秘密鍵の作成は成功となります。
{
"KeyPairs": [
{
"KeyPairId": //公開鍵のID,
"KeyFingerprint": //フィンガープリント,
"KeyName": //公開鍵の名前,
"KeyType": //暗号方式,
"Tags": [],
"CreateTime": //鍵の作成日時
}
3.EC2インスタンスの作成
次に、EC2インスタンスを作成します。このとき、作成先のリージョンは必ず秘密鍵を設定したリージョンと同じにしてください。また、AMI IDは同じサーバー構成でもリージョンによって異なりますので、利用したいサーバー構成とリージョンをよく確認してから打ち込むようにしましょう。
aws ec2 run-instances --image-id {AMIのID} --count {構築したいインスタンスの個数} --instance-type {構築したいインスタンスタイプ} --key-name {公開鍵の名前} --region {リージョン}
実際に打ち込んだコマンドはこちらとなります(リージョンはバージニア北部で検証しています。東京の場合は、–image-idの値を ami-061a125c7c02edb39、 –regionの値を ap-northeast-1に書き換えてください)。
aws ec2 run-instances --image-id ami-08a0d1e16fc3f61ea --count 1 --instance-type t2.micro --key-name { } --region us-east-1
4.AMIのコピー(オプション)
上記のコマンドは、すでにあるEC2インスタンスと同じものを構築したい場合などにも利用することができます。そのときは、EC2インスタンスのAMIを下記のコマンドで目的のリージョンにコピーすることで、構築が可能です。
下記のコマンドで、EC2インスタンスのAMIのコピーが可能です。
aws ec2 copy-image --region {目的のリージョン} --name ami-{コピー先のAMIの名前} --source-region {コピー元のリージョン} --source-image-id {コピー元のAMI ID}
出力されたAMI IDを ec2 run-instances の ーーimage-id {} に入力することで、コピー元とまったく同一のEC2インスタンスの構築が可能となります。
5.EC2インスタンスの管理
最後に、起動したインスタンスを停止しましょう。インスタンスの停止とは、サーバーにアクセスはできなくなるが、サーバーの情報はまだ残っている状態を指します。サーバー情報ごと削除されてしまうインスタンスの終了と混同しないように気をつけましょう。
まずはEC2インスタンスの情報を調べるコマンドを入力します。
aws ec2 describe-instance-status
すると次のようなJSON形式のアウトプットが表示されますので、インスタンスのIDの項目を確認しましょう。
{
"InstanceStatuses": [
{
"AvailabilityZone": //アベイラビリティーゾーン,
"InstanceId": //インスタンスId,
"InstanceState": {
"Code": 16,
........
},
........
}
]
}
次のコマンドの –instance-ids オプションに、先ほどのInstanceIdを打ち込めばインスタンスを停止することができます。
aws ec2 stop-instances --instance-ids {InstanceId}
まとめ
今回はAWS CLIの初期設定と基本的なコマンドについて解説をしました。
AWS CLIはAWSのサービスを効率的に管理する上で、非常に有用なツールとなっています。AWSのサービス運用をする上で、ぜひとも身につけておきたいスキルとなっていますので、一つずつコマンドとオプションの意味を確認しながら学ぶようにしましょう。