こんにちは。証券企画室の佐藤です。
企画室という名前ですが、エンジニアが何人か在籍していて、スマホにデザインが最適化された株アプリ、ferciを開発しています。
AWSのre:Invent
さて、今年もラスベガスではAWSのre:Inventにて色々なアップデートが発表されています。
EC2 Image Builderはその中でも、多くの方が利用するであろう追加機能ではないでしょうか。
基本的な機能や操作は触ってみればわかるので割愛し、実際の運用上どうなのかを評価してみたいと思います。
UserGuideを読んで
いきなりですがGUIコンソールを触り、UserGuideを一通り読んだ感想です。
APIでパイプラインの取得と作成ができるので、最新のレシピを使うようにパイプラインの新バージョンの作成を自動化すれば良さそうです。
こちらもAPIを使えば解決できます。
- パイプライン実行のトリガーがマニュアルか、定期実行しかない。
セキュリティ面のアップデートを最新にする目的で設計されているからだと思うのですが、コンポーネントのコードをバージョン管理し、コミットした時点でテストのために走らせたいところです。
IaCを徹底しようとするならば、APIでの作り込みが必要になるかなと感じました。
しかし、2,3ヶ月後くらいにはCloudFormationでリソースを記述できるようになると思うので、そうなると上記のほとんどの問題は解決されるかと思います。
今後のさらなるアップデートに期待したいです!
Image Builder考察
ここで記事を終えても良いのですが、何よりもSaaSの醍醐味は、公式が想定している以外にどう使えるかを考えることです。
Image Builderは事例紹介などでよく”ゴールデンAMI”と呼ばれるAMIの作成を支援するツールとして実装されているように見えますが、サーバの種類別や環境固有の設定もできないだろうか、ということについて考えてみます。
とはいえ皆様色々なAMI作成プロセスをお持ちだと思うので、今回は我々ferciチームの実装を元に考えてみます。
私たちのチームでは典型的ではありますが、下記のようにAMIを作成しています。これらをPythonスクリプトで自動化することで、作業ミスを無くしています。
- 開発環境で、ベースとなるAMIからEC2を起動。
- 起動したEC2内でAnsibleのPlayBookを実行し、OSの設定、ミドルウェアのインストールと設定、環境固有の設定を行う。
- EC2を停止してAMIを作成。
- AMIをステージング環境、本番環境のAWSアカウントに共有。
Packer使えばいいのではという意見が返って来そうですが、これだけのためにOSSやコミュニティ版のツールを増やしたくなく、Packerは利用していません。
代わりにPythonを書けるメンバーが何人かいるので、上記をPythonスクリプトで自動化して省力化しています。
これらをEC2 Image Builderで自動実行できれば、開発環境でスクリプト実行コマンドを打つ必要がなくなります。
すぐに思いつくのは、今あるAnsibleのPlayBookをそのままコンポーネント内で実行することです。
必要な要件をいくつか書き出してみます。
- PlayBookの実行結果を得たい。
ActionModulesのドキュメントを読むと、Bashコマンド実行時のstdoutを返してくれるようなので、何もせずとも結果を知ることができます。
セキュリティの観点から、gitリポジトリはアクセス元IPアドレスでの制限をかけています。パイプラインを実行するVPCとサブネットを指定できるため、NAT Gatewayを通すことでソースIPを限定することができ、要件は満たせそうです。
- GitHubへのアクセス用クレデンシャルを安全な場所に格納したい。
CodeBuildだとGitHubのクレデンシャルを設定できますが、Image Builderだと設定できなさそうです。
- AnsibleVaultのパスワードを暗号化して安全な場所に保管しておき、コンポーネントから参照したい。
SSMパラメータストアに格納できれば良いのですが、今の所SSMにアクセスすることはできなさそうです。
- Ansibleコードをコミットした時点で、AMIのビルドを走らせたい。
現状はマニュアル実行と定期実行しか無いようです。
まとめ
まとめると、Image Builderに下記の機能追加があると、我々ferciチームのAMI作成プロセスを改善するために利用できそうです。
- CloudFormationでのEC2 Image Builderサポート
- コンポーネント実行時のSSMパラメータストア参照
- パイプライン実行時のSCMトリガー追加
これらは他社さんでもニーズがあると思うので、今後のアップデートに期待したいです!
佐藤 俊介 証券企画室