大畑です。
皆様は「AWSCLI」を使ったことはございますでしょうか。
私はインフラ部門に所属し、AWSを主に使っているのですが、クラウド基盤の構築は基本コンソールを使って行うことが多いです。
またAWSCLIを初めて触った時も、
「ドキュメントでコマンドを調べて入力するの面倒だなあ、コンソールしか勝たん」
のような状態でした。
しかし、現場でShellを使い始めてから、
「AWSCLIやるやん、ShellScriptと組み合わせたら最強やん」
と意見が反転し、謎の関西弁が出るようになりました(*'▽')
ということで今回は
「AWSCLI+ShellScriptでクラウド基盤構築を効率化する」
をお送りします。
AWSCLIとは?
AWSCLIとは、AWSコマンド(C)ライン(L)インターフェース(I)の略称で、コマンドの入力を通じてAWSサービスの管理を行える公式ツールです。
使用するためには
1.CloudShellを使う
2.AWSCLIをお使いのパソコンにインストールして使用する
のどちらかを選択できます。事前のインストール、およびセットアップ等面倒な方は1.CloudShellを使うをおすすめします。コンソールにサインインするだけで使用することができます。
2を行う場合は、以下をご参考にしてください。
※ちなみにOSがAmazonLinuxのEC2には標準でAWSCLIがインストールされています。
ShellScriptとは
ShellScriptとはOSを操作するためのshell上で実行できる簡単なプログラミング言語です。操作基本的な条件分岐(IF文,CASE文)、繰り返し処理(FOR,WHILE)などを搭載しています。
shellの詳しい解説は以下に任せます。
インフラ系であれば避けては通れない道だと思いますので、学びたい方はこちらを参照してください。
なぜAWSCLI+ShellScriptで効率化できるのか
結論、ShellScriptはFor文が使えるから効率化できます。
例えば、
・100個のLambdaのランタイムを変更する
・100個のロググループをKMSで暗号化する
・100個のIAMユーザを作成する
など作業自体はコンソールでできるものの、単純作業で時間がかかる作業がある場合に、ShellScriptでFor文を書き、その中の処理にAWSCLIを記述すれば、構築は数分で終了します。
次の章で先ほどの例を実践してみます。
AWSCLI+ShellScriptを使った構築
今回は「100個のロググループをKMSで暗号化する」をやってみたいと思います。
まずAWSコンソールにログインし、トップ画面に移動します。右上のほうにあるこのマークをクリックします。
CloudShellのサービス画面に移るので、以下のコマンドを入力し、viエディタを起動します。
vi CreateLogGroup.sh
キーボードのiを押してinsertモードにし、以下を入力します。
#bin/bash
echo "CreateLogGroup.sh Start!"
for i in `seq 100`; do
aws logs create-log-group --log-group-name logGroup${i}
echo Created logGroup${i}
done
echo "CreateLogGroup.sh Finish!"
[esc]->[:wq]コマンドで保存して終了します。
以下のコマンドで、先ほど作成したCreateLogGroup.shを実行します。
sh CreateLogGroup.sh
実行結果
CreateLogGroup.sh Start!
Created logGroup1
Created logGroup2
・・・
・・・
Created logGroup100
CreateLogGroup.sh Finish!
コンソールで確認してみます。
ロググループが作成されていることが確認できました。
次にKMSキーで暗号化してみたいと思います。
先ほどと同様にCloudShellを起動し、以下のファイルを作成します。
#bin/bash
echo "EncryptLogGroup.sh Start!"
for i in `seq 100`; do
aws logs associate-kms-key --log-group-name logGroup${i} --kms-key-id ccbede20-2792-4942-a34e-96d16c429e40
echo Encrypted logGroup${i}
done
echo "EncryptLogGroup.sh Finish!"
※ --kms-key-idは自分のKeyIDを入力してください。
作成したEncryptLogGroup.shを実行します。
sh EncryptLogGroup.sh
実行結果
EncryptLogGroup.sh Start!
Encrypted logGroup1
Encrypted logGroup2
・・・
・・・
Encrypted logGroup100
EncryptLogGroup.sh Finish!
コンソールで確認してみます。
KMSキーIDの欄に指定した暗号化キーのARNが入っており、KMSで暗号化できました。
終わりに
この方法は応用すればどのようなAWSサービスにも活用することが可能です。
AWSCLIのリファレンスを載せておきますので、自分に合った用途でカスタマイズしてみてください。
単純作業はAWSCLI+ShellScriptでおさらばしちゃいましょう!
最後までご覧いただきありがとうございました。
以上、「AWSCLI+ShellScriptでクラウド基盤構築を効率化する」でした。