新年、あけましておめでとうございます!今月末の学期末考査におびえている、たいがーです。単位が欲しい。卒業したい。
気が付いたら年が明け、2019年がやってきました。来年には、東京オリンピックが開催されますね。決まった時には、まだまだ先だと思っていたのになぁ・・・
私個人の今年の抱負は、”真面目にコツコツできるようになる”です。
毎年、色々なことをやるぞ!と決めるのですが、結局習慣化しないままで終わってしまったりするので、小さいことから何か習慣づけしたいなと考えています。
早く慣れたい、AWS CLIとAWS Lambda
今日の課題はAWS Lambdaを使って、関数と同じアカウント・リージョンのすべてのインスタンスを停止する関数を作成すること。
前回までで、インスタンスを指定し、停止することまではできるようになっていました。そこまでで課題ができたと思い込んでいると、実際はリージョン内のインスタンスすべてを停止するようにすることだったので、振り出しに戻りました。
とりあえず同じような事例がないか、検索してみました。
停止、再起動はたくさん出てきますが、実際見てみると時間指定で起動停止を切り替えるもの。調べてもまったくわからず、社員さんにわからないと相談すると、ヒントが送られてきました。
1, リージョンのインスタンスの情報を取得する
2, 取得したインスタンスを一つずつ停止する
この二点が必要である。1についてはEC2のdescribe instances APIを使うことになるので、調べてみて.
APIの使用方法はAWS CLIを使うと動作のイメージがつかめるかもしれないとおっしゃっていただいたので、とりあえずAWS CLIをインストールするところから始まります。
AWS Command Line Interface(CLI)のインストール、ただインストーラを起動するだけでいいだけだったのに、pipからしなければならないのかな、などと色々検討した結果、結局遠回りになっていたことに気づきました。
慣れてないから最初はしょうがないよ、と励ましてもらい、軽く元気を出し、課題に進みます。
戦いは続く・・・
ここからは、エラーとの戦いでした。
色々なものを試し、保存。テスト、そしてエラー。この繰り返しです。
とりあえず、インスタンスを指定するのではなく、リージョン内のすべてのインスタンスということは、リージョン内にあるインスタンスのIDを取ってくる必要があります。
https://qiita.com/t_wkm2/items/bdb6890e23a6d0bc9ce7
この記事を見ていたのもあり、きっとFilterを使ってIDだけに絞って取ってくるのだろうと思っていたので、打ってみました。こちらに書いてあるものではIPアドレスを指定してするものだったので、もう少し工夫が必要でした。
また、jqタグを使っているものもあったので、こちらも試してみました。
https://qiita.com/toshiro3/items/37821bdcc50c8b6d06dc
AWS CLIでイメージがつかめるかも、とヒントをいただいていたので、やってみました。jqタグがどのようなものに使えるかわからなかったのですが・・・
その後も、構文や定義されていないというエラーが何回も起こりました。
結局、今日のところは途中でタイムオーバーでした。もう一度ヒントをもらい、インスタンスIDを取ってくることはできるようになりました。ですが、まだ最終形態ではないそうです。ひたすら出る構文エラーと戦いましたが、最後まで倒せませんでした・・・
慣れていけば、もっとすんなり解決策も浮かぶのだと思います。早くその地点に到達したいです。
Lambdaは以前、使った時も何となくで過ごしてしまったので、もっと理解を深めて使いこなせるようになりたいです。トリガーは分かるのですが、IAMロールでポリシーを追加して出来ることを増やしていく、あの感じに未だ慣れません。
AWS CLIに関しては、恥ずかしながらコマンドだということすら初めて知りました。何の略かもわからず、名前だけ聞いたことがある状態でした。今日はそこまで使うことがなかったのですが、今後使う機会が増えてくるのではないかと思われるので、こちらも慣れていきたいと思います。
世の中のサービスで名前だけ知っているものの、実際は何も知らないというものが、世の中にはまだまだあふれています。もっといろいろなものに興味を持たないといけないですね。
最後に
ついに、トラのいい感じの画像のネタが尽きてしまいました…
いい感じの画像サイト、どこからか探してこなければなりません。知っている方は、こっそり教えてください。