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は利用してください
世界が変わります