10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

大畑です。

皆様は「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コンソールにログインし、トップ画面に移動します。右上のほうにあるこのマークをクリックします。

スクリーンショット 2023-02-16 183926.png

CloudShellのサービス画面に移るので、以下のコマンドを入力し、viエディタを起動します。

vi CreateLogGroup.sh

キーボードのiを押してinsertモードにし、以下を入力します。

CreateLogGroup.sh
#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!

コンソールで確認してみます。

スクリーンショット 2023-02-17 9.32.54.png

ロググループが作成されていることが確認できました。

次にKMSキーで暗号化してみたいと思います。

先ほどと同様にCloudShellを起動し、以下のファイルを作成します。

EncryptLogGroup.sh
#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!

コンソールで確認してみます。

スクリーンショット 2023-02-17 9.57.44.png

KMSキーIDの欄に指定した暗号化キーのARNが入っており、KMSで暗号化できました。

終わりに

この方法は応用すればどのようなAWSサービスにも活用することが可能です。

AWSCLIのリファレンスを載せておきますので、自分に合った用途でカスタマイズしてみてください。

単純作業はAWSCLI+ShellScriptでおさらばしちゃいましょう!

最後までご覧いただきありがとうございました。

以上、「AWSCLI+ShellScriptでクラウド基盤構築を効率化する」でした。

10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?