Blogブログ

AWSをコマンドラインでいろいろする

AWSっていいですよね

ほんと、AWSってすごいですよね

ひと昔前はサーバといえばオンプレミス
いや、もちろんレンタルサーバはあったけど、ほとんどはWebサイト公開向けで
業務システムやサービスを動かすのはオンプレミスが多かったです

あ、オンプレミスっていうのは、自社内にサーバを置いて稼働させるやつです
自社内なので、ネットワークの構築も必要ですし、サーバの物理的なメンテナンスも必要です
磁気テープにバックアップしたり、懐かしいですね

それが今ではブラウザからちょいちょいって数クリックするだけで仮想サーバが立ち上がって利用できる
もう簡単に立てれちゃうからどんどん立てて請求でなくとか、あるあるですね

そんなAWS、ブラウザからでもいいんですけど、いちいちインスタンスを立ち上げるためにブラウザ立ち上げてログインしてごにょごにょにょ~って、すごくめんどくさいんですよね

やっぱりエンジニアなら黒い画面で操作したいところです

AWSを黒い画面から操作する

みんな、黒い画面大好きですよね
最近はWindowsでもWSLがあるのでもう最強です、最強

そんな黒い画面からAWSを操作しましょう

awscliを使います

まずはセットアップ

あ、Ubuntu 20.04でやってます
Macとかは知りません


$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install
$ aws --version
aws-cli/1.20.47 Python/3.8.8 Linux/5.4.72-microsoft-standard-WSL2 botocore/1.21.47

なんというかもうあれですね

ジャスティス

簡単にセットアップ完了です

このまま接続するための設定を行いましょう


$ aws configure

あ、事前にIAMの設定が必要です
アクセスキーとシークレットキーを入手しておいてください

いろいろ聞かれるので入力してください

ちなみに、下記のように –profile を用いると、環境を複数作成できます
複数アカウントを持っている人は –profile を指定したほうがよさそうですね

私はもちろん指定しています


$ aws configure --profile {hogehoge}

設定が終わると、下記コマンド試してみてください


$ aws iam list-users

ユーザ一覧が表示されると思います

すごい

alias

さて、それではec2インスタンスの一覧を見てみましょう
こんな感じで入力してください


aws ec2 describe-instances --output table --query 'Reservations[].Instances[].{ID: InstanceId,State: State.Name,Name: Tags[?Key==`Name`].Value | [0],Type: InstanceType, Platform: Platform || `Linux`}'

たぶんテーブル形式でec2インスタンスの一覧が表示されたと思います

でも、だるいですよね
毎回こんなん打つんかいって

覚えられるかいって

でも、さすがAmazon、ちゃんとawsコマンドでalias設定できるような仕組みを用意してくれています

下記のディレクトリにファイルを作ってvimやらなんやらで開きましょう

~/.aws/cli/alias

こんな感じで書いてみてください


all-instances = ec2 describe-instances \
    --output table \
    --query 'Reservations[].Instances[].{ID: InstanceId,State: State.Name,Name: Tags[?Key==`Name`].Value | [0],Type: InstanceType, Platform: Platform || `Linux`}'

running-instances = ec2 describe-instances \
    --filter Name=instance-state-name,Values=running \
    --output table \
    --query 'Reservations[].Instances[].{ID: InstanceId,Hostname: PublicDnsName,Name: Tags[?Key==`Name`].Value | [0],Type: InstanceType, Platform: Platform || `Linux`}'

書いたら叩いてみましょう


$ aws all-instances

はい、同じ結果が出ましたね


$ aws running-instances

はい、立ち上がっているインスタンスだけ出てきましたね
すばらしい

インスタンスの起動と停止

最後に、すでにあるインスタンスの起動と停止です

先ほどの aws all-instances でinstance idを調べておきましょう

起動


$ aws ec2 start-instances --instance-ids {instance id}

停止


$ aws ec2 stop-instances --instance-ids {instance id}

はい、これでブラウザで操作しなくてもインスタンスを立ち上げたり止めたりできました

ちなみに私はAWS上に開発用のサーバを構築しているので、作業時のみ立ち上げて、終了時には停止しています
(お金がもったいないから、、、)

頻繁に操作するため、上記コマンドでもめんどくさいです
なので、bashのalias設定をしています


alias start-dev="aws ec2 start-instances --instance-ids {hogehoge} --profile {fugafuga}"
alias stop-dev="aws ec2 stop-instances --instance-ids {hogehoge} --profile {fugafuga}"

こうしておくと、[start-dev],[stop-dev]だけでインスタンスを立ち上げたり停止したりできます

こんな感じでコマンドで操作できるようにしておくと、なんかのタイミングで自動的にインスタンスを立ち上げるスクリプトを書いたり、ってことができるので非常に便利です

皆さんもぜひ、awscliは利用してください

世界が変わります

牧長 心

執筆者

CEO

牧長 心