KNOWLEDGE - COLUMN ナレッジ - コラム

【エバンジェリスト・ボイス】クラウドのすゝめ ~AWS自動化(CloudFormation)編~

関連するソリューション

ID-Cross/クラウドサービス

サイバー・セキュリティ・ソリューション(CSS)部
エバンジェリスト 松岡 政之     matsuoka2_274x380

あけましておめでとうございます。 CSS 部エバンジェリストの松岡です。

昨年 6 月にこちらのコラムに執筆を始めてまだ半年程ですが、ご質問をいただけるなど私にとって実りのある期間となりました。
お付き合いいただきました皆様に感謝を申し上げます。
本年も様々なトピックをまったりお届けできればと考えておりますので、引き続きお付き合いいただけば幸いです。

さて、 2019 年に入り今年もコンシューマ技術の見本市である CES が開催されました。
今年は 8k のテレビやデジカメ、 1TB SD カード、 dynabook の復活など気になる話題でもちきりです。
本稿のタイトルに関連する Amazon については、スマートスピーカー「 Amazon Echo 」の頭脳である Amazon Alexa を使用した様々な製品(タブレット、自動車、ヘッドフォン etc... )が各社から発表されています。
そんな中、私が個人的に注目していたのは CPU に関する発表です。
Intel からは現行の第 9 世代 Core i プロセッサの追加のラインナップや 10nm プロセス製品の量産予定などが発表されましたが、個人的に注目したいのが高性能プロセッサと省電力の Atom プロセッサを同一パッケージ内に 3D に積層した Lakefield (開発コードネーム)です。
異なる性能のコアを使用することはスマートフォンではすでに一般的(例: Android 8 コアと宣伝しているものは高性能 4 コア+省電力 4 コアの組み合わせ)ですが、パソコンでも実現すれば高性能でバッテリー持ちのいいノートパソコンが実現するはずです。
現状ではパソコンの OS 側が想定していない構成のため、まだスケジューリング(コアへのプロセスの割り振り)の面などで課題はありそうですが今後に期待が出来そうな技術です。
一方、 AMD からは Zen 2 アーキテクチャ(昨年藤井七段が注目していることで少し話題となったことが記憶に新しいですね)を用いた第 3 世代 Ryzen プロセッサ(開発コードネーム: Matisse )の概要発表とテスト中の ES 品のデモンストレーションが行われました。
製品の登場は今年の夏ごろになるとのことです。デモンストレーションでは 8 コア 16 スレッドの Ryzen プロセッサでまだ ES 品であることを強調しつつ CINEBENCH (画像のレンダリングの速度を評価するベンチマーク)を使用し、 Core i9-9900K と比べて 30% 程省電力で性能では上回ることを実演しました。
壇上で掲げられた実物製品では 14nm プロセスの I/O ダイと 7nm プロセスの 8 コア chiplet が確認できますが、 chiplet が偏った位置に配置されており不自然に隙間があけてあります。
ここからは想定になりますが、この隙間の用途として、一つは GPU を配置して 8 コアの APU とするもの、そしてもう一つは chiplet をもう一つ配置して 16 コアとするものが考えられます。
Intel がさらに高性能な CPU を出してきた場合の対抗手段としてさらにそれを超える高性能な 16 コアとして準備をしていそうです。また、 Matisse では APU の計画はないとの話ですが、通例 APU は異なるコードネームで開発されるので Zen2 を用いた APU の計画自体はあるのではないかと私は考えています。(今年中には出ないと思いますが
CES 2019 では他にも様々な分野の革新的な製品が発表されていますので、気になる方はぜひ情報を覗いてみてはいかがでしょうか。

前置きが長くなってしまい一体何のコラムだったか忘れてしまいそうですが、本題の AWS の自動化の話題に入ります。
AWS の自動化というと真っ先に Lambda が思い浮かびそうですが、今回は CloudFormation を取り上げます。
CloudFormation はロールや VPC EC2 などの AWS 内のリソースについて、テンプレートと呼ばれるスクリプトを準備し、スタックという実行セットのようなものを作成することで、自動的に構成してくれるサービスです。
スタックの作成時にパラメータを入力するように作ることもできるため、例えばユーザ作成のテンプレートを作成しユーザ名等のパラメータを入力して実行するだけで、組織の方針に沿ったユーザが自動的に作成されるといったことを実現することができます。

CloudFormation を使うメリットはいくつかあると思いますが、私は以下の 4 つが主なものだと考えています。
①繰り返し実施される日々の運用作業を自動化することによる作業時間の軽減
②煩雑な作業を自動化することによるヒューマンエラーの排除
③リソース変更の管理
④リソース間依存関係の管理

まず、 ①② について例を挙げて見てみましょう。
例として以下のような環境を想定します。(企業としては一般的な環境かと思いますがいかがでしょうか?)
IAM ユーザには接続元 IP アドレスを制限するポリシーを割り当てることが必須である
IAM ユーザには直接サービスを利用するポリシーを割り当てることは禁止である
・プロジェクトが立ち上がるたびに各プロジェクト用の開発・本番等の用途に応じたロールが作成され、各ロールに対して必要なサービスの利用権限が割り当てられる
IAM ユーザには利用可能なロールを引き受けることが出来るポリシーを割り当てる
・利用者は IAM ユーザでログイン後、利用目的に応じてロールを切り替えてサービスを利用する

上記を実現するためには、ユーザ追加の申請があるたびに、 IAM ユーザの作成、 IP アドレス制限ポリシーの割り当て、ロール引き受けポリシーの作成・割り当て等複数の作業を実施する必要があります。
これを、テンプレートを作成して自動化することで、必要な作業はユーザ名等のパラメータの指定とスタックの作成のみになります。
また、ポリシーの作成などが自動化されることでタイプミス等によりポリシーが反映されていないといった問題を防ぐこともでき、まさに一粒で二度美味しいといえるでしょう。
また、作成したスタックを削除することで、そのスタックによって作成されたリソースをすべて削除して元通りにしてくれるため、ユーザ削除作業についても負荷を軽減することができます。

続いて について、 CloudFormation を使うことでなぜリソース変更を管理しやすくなるか説明します。
CloudFormation には変更セットという機能があります。
これは、一度作成されたスタック(およびそれによって作成されたリソース)に対して、パラメータやテンプレートを変更した差分を作成できる機能です。
変更セットを作成した時点ではすぐには実行されず明示的に実行する必要があるため、変更作業前の再鑑作業も行いやすくなります。
※変更履歴を追いたい場合は AWS Config の利用をお勧めします。

ここで 1 点注意なのですが、 CloudFormation を使って作成したリソースは極力直接変更を加えず、できるだけ CloudFormation の変更セットを使用して変更するようにして下さい。
その理由として、リソースの依存関係によっては、手動で加えた変更が原因で変更セットの実行やスタックの削除に失敗してしまう場合があるためです。
念のため、ドリフトの検出という機能でスタックと現在のリソース状態の乖離状態を確認することができるので、変更セットの実行やスタックの削除をする前にスタックと現在のリソースとの乖離がないか確認しておいた方がいいかもしれません。

最後にメリット についてですが、 CloudFormation にはデザイナーという機能があります。
これは、テンプレートを入力することで作成されるリソースの依存関係を自動的に図にしてくれる機能です。
テンプレートの作成時にスクリプトのみを眺めていてもイメージが湧きづらいかと思いますので、ぜひデザイナーを活用してみてください。
また、構文レベルのエラーはチェックをしてくれるため、スタック作成前には一度デザイナーで開いてみるのがいいと思います。

逆に、 CloudFormation でもう一歩だなと思う点が一つあります。
それは、テンプレートや変更セットを実行した結果のエラーチェックを事前に行うことができない点です。
前述にて変更セットを作成できることをメリットとしてあげましたが、構文等にエラーがなければ実行した結果エラーになる変更セットでも作成できてしまいます。
そのため、設定しようとしている内容が正しいかは CloudFormation を使った場合でも変わらずしっかり確認の上作業を行ってください。

今回は CloudFormation をお勧めする内容を記載しましたが、実際の使い方については AWS のユーザーズガイドや実際に触っている方の技術ブログなどで詳しく解説されているため、こちらでは割愛します。
外部サイト: AWS CloudFormation ユーザーズガイド

AWS 上での自動化を実現するには CloudFormation のほかにも Lambda CloudWatch Events など様々なサービスがありますが、今回はその中でも一番根っこの部分であるリソースの作成・管理についてクローズアップしてみました。
AWS は設定するものが多くて煩わしい!」と敬遠していた方、「運用しているけどそろそろ管理がつらくなってきた」という方、 CloudFormation で自動化してみてはいかがでしょうか。

それではよいクラウドライフを!

当サイトの内容、テキスト、画像等の転載・転記・使用する場合は問い合わせよりご連絡下さい。

エバンジェリストによるコラムやセミナー情報、
IDグループからのお知らせなどをメルマガでお届けしています。

メルマガ登録ボタン

松岡 政之

株式会社インフォメーション・ディベロプメント デジタルソリューション営業部 エバンジェリスト

この執筆者の記事一覧

関連するソリューション

ID-Cross/クラウドサービス

関連するナレッジ・コラム

ITエンジニアの現地作業 ミスを減らす!作業本番のポイントとは

NTTのIP網移行と、通信の未来とは

ITエンジニアの現地作業 ミスを減らす!事前準備のポイントとは