AWSの設定・操作はブラウザから行っている方が大半だと思いますが、
今回はコマンドラインからAWSの操作が出来る「AWS CLI」にフォーカスして、
AWS CLIを触って1週間の素人が、メリットや使いどころを紹介していきます。
- 普段AWSを使っているけど、AWS CLIは触ったことがない
- AWS CLIを触ったことはあるが、活用しきれていない
こんな方にとって、少しでも参考になれば幸いです。
AWS CLIとは
Amazonさんの紹介文章を引用します
サービスを管理するための統合ツールです。ダウンロードおよび設定用の単一のツールのみを使用して、コマンドラインから複数の AWS サービスを制御し、スクリプトを使用してこれらを自動化することができます。
https://aws.amazon.com/jp/cli/
手元のパソコンに「AWS CLI」というものをインストールすれば、
コマンドラインからAWS各サービスの制御が出来るよ、というものです。
Pythonが入っていれば、このコマンドだけでインストール出来ちゃいます。
$ sudo pip install awscli
「AWS CLI」を導入すれば、通常ブラウザで操作しているような、
・ローカルPCにある画像ファイルをS3にアップロードする
・起動しているEC2インスタンスを停止する
こんなことがコマンドベースで行えます。
イメージをもう少し具体的にするため、S3へのファイルアップ方法を書いてみます。
ローカルPC上にこういうファイルがあったとします。
$ ls -l
-rw-r--r-- 1 local_user staff 0 12 14 07:47 access.log
-rw-r--r-- 1 local_user staff 0 12 14 07:47 error.log
試しにこの中のerror.logをS3にアップロードしてみましょう。
AWS CLIのコマンドは、アップしたいファイル名とアップ先のバケットを指定するだけ。
$ aws s3 cp error.log s3://otameshi201712
upload: ./error.log to s3://otameshi201712/error.log
この通り、error.logがS3上にアップロードされていますね。
AWS CLIのメリットや使いどころ
ブラウザで出来る操作を、わざわざ「AWS CLI」を使ってやるメリットは何なのか。
ざっくり触った感想としては下記の2点で、
・AWS上でやっている操作を自動化したい
・AWS上のサービスと連携したツールを作りたい
「一定のルールに従ったAWS上の繰り返し作業をシェルスクリプト化出来る」点がメリットのように感じます。
「AWS CLI」を使ってEC2インスタンスを作成をすることも出来ますが、
設定することが多い=コマンドの引数が多くて辛い。。。となってしまうので、
AWS各サービスの構築作業はブラウザ経由で、繰り返し作業が発生する際に、
「AWS CLI」の利用を検討するのが良さそうです。
サンプルスクリプト
1.ログファイルをzip化してバックアップ
S3のlogsディレクトリに溜まっているログをzip化し、S3のbackupディレクトリにバックアップを取ります。
このスクリプト自体の実用性は低いですが、zip化する箇所を応用すれば、Adobe製品のスクリプトと組み合わせて、画像や動画加工も出来そうです。
#!/bin/bash
# S3からログファイルをダウンロード
aws s3 cp s3://otameshi201712/logs ./temp --recursive
# ダウンロードしたログファイルをzip化
for LOG_NAME in ./temp/*.log
do
zip $LOG_NAME.zip $LOG_NAME
rm $LOG_NAME
done
# zip化したログファイルをS3にアップロード
aws s3 cp ./temp s3://otameshi201712/backup --recursive
rm ./temp/*
2.EC2/RDSインスタンスの立ち上げ・停止
EC2もRDSも従量課金なので、使わない時間帯は止めておくと節約できますね。
AWSのlamdaを使えば、定時間にインスタンスの起動・停止が行えますが、
これらのコマンドをまとめておくことで、任意のタイミングでコントロールができます。
▼インスタンス立ち上げ用
#!/bin/bash
aws ec2 start-instances --instance-ids インスタンスID
aws rds start-db-instance --db-instance-identifier インスタンス名
▼インスタンス停止用
#!/bin/bash
aws ec2 stop-instances --instance-ids インスタンスID
aws rds stop-db-instance --db-instance-identifier インスタンス名
まとめ
「AWS CLI」を使うことで、サービスや業務における効率化の幅が広がりそうですね。
導入もとってもカンタンなので、一度お試しあれ!