技術メモ置き場

とあるSIerのインフラエンジニアが主に技術メモを書き残すブログです。

AWS CLIの使い方について学ぶ

はじめに


最近、AWSのクラスルームトレーニングであるSystems Operations on AWSを受講し、AWSの運用管理について学習しました。運用においてAWS CLIの利用は欠かせないものであり、今までマネジメントコンソールでポチポチやってた状況から脱却しなければならなかったため、学習したことを以下にまとめます。

AWS CLIとは


AWS公式ドキュメントがわかりやすいので以下引用です。

AWS Command Line Interface (AWS CLI) は、コマンドラインシェルでコマンドを使用して AWS サービスとやり取りするためのオープンソースツールです。WS CLI を使用すると、最小限の設定で、任意のターミナルプログラムのコマンドプロンプトから、ブラウザベースの AWS マネジメントコンソール で提供される機能と同等の機能を実装するコマンドを実行できます。

AWS CLIは、WindowsMacLinuxなど様々なプラットフォーム向けに展開されているツールで、普段GUIベースでポチポチ作業している内容をコマンドで実行できるため、スクリプトなどで運用業務を自動化することが可能です。研修の中でも、繰り返し行う作業についてはAWS CLIを使って自動化していくことが重要だと述べられていました。
ちなみに昨年12月にAWS CloudShellがリリースされており、AWS環境の操作方法がさらに増えたみたいです。こちらは公式のブログを参照すると良いと思います。
AWS CloudShell – AWS リソースへのコマンドラインアクセス

AWS CLIの書式


まだ使い始めたばかりで書式などになれていないため、備忘録として簡単に以下にまとめておきたいと思います。

# コマンド書式
aws <サービス名> <オペレーション> <パラメータ> <オプション>

例として、EC2を停止するコマンドを実行する場合は以下のフォーマットで記述します。

# EC2インスタンスを停止するコマンド例
aws ec2 stop-instances --instance-id i-987654321oiuytr1 --output json

上記のコマンド書式に記載している引数の意味はそれぞれ以下になります。

  • サービス名: どのAWSサービスを呼び出すか指定
  • オペレーション: そのAWSサービスで実行する操作を指定
  • パラメータ: オペレーションの実行に必要な引数を指定
  • オプション: 特定の値のみフィルターしたり、出力フォーマットを変更するオプションを指定

AWS CLIで利用可能なオプション


  • --query: コマンド実行結果をクライアント側でフィルタリングして表示するオプション
aws ec2 describe-instances --query 'Reservations[0].Instances[*].InstanceId'
  • --filter: コマンド実行結果をサーバ側でフィルタリングして表示するオプション
    ※ --queryも似たオプションなのでややこしいが、以下の組み合わせで利用することでなんとなくイメージが掴めました。
aws ec2 describe-instances --filter 'Name=instance-type,Values=t2.micro' --query 'Reservations[*].Instances[*].InstanceId'
  • --output: コマンドの出力形式を指定できるオプション
    json、text、tableが指定可能で、デフォルトはJSON形式になっています。
aws ec2 describe-instances --query "Reservations[0].Instances[0]"

{
    "Monitoring": {
        "State": "disabled"
    },
    "PublicDnsName": "ec2-18-183-174-135.ap-northeast-1.compute.amazonaws.com",
    "Platform": "windows",
    "State": {
        "Code": 16,
        "Name": "running"
以下省略

おわりに


AWS CLIの概要とコマンド書式について簡単にまとめてみました。名前は聞いたことあるけど全く触ったことない…という方のお役に立てば幸いです。私は実務でAWSに触れる機会がなく、すぐに忘れてしまいそうですが運用自動化のためには避けて通れない部分だと思うので定期的に振り返りたいと思います。

参考文献


AWS CLI Command Reference
AWSブログ - AWS CloudShell – AWS リソースへのコマンドラインアクセス