インターパーク技術ブログ
技術ブログです
https://www.wantedly.com/stories/s/interpark_tech
この記事はインターパークの技術職がお届けする技術ブログです。
システム部開発ユニットの木村です
今年の4月頃、AWS環境を構築する必要がありまして、いろいろ調べたり、思い出しながら構築していたのですが、手動での構築が非常に煩雑でした。手順書にまとめたのですが、もっと簡単に構築できないかと考えました。
そこで、AWS CDKとCloud Formationに目を向けました。
Cloud FormationはAWSのサービスをコードで管理するためのツールです。JSONやYAML形式のテンプレートを使用して、AWSリソースを準備、更新、削除できます。これにより、手動での構築よりも迅速かつ再現性のある環境構築が可能になります。
まず、Cloud Formationを触ってみようとしましたが、JSONやYAML形式での記述が複雑で、初学者には難解なこともあります。また、AWSのコンソール上でビジュアルに操作できるデザイナーも提供されていますが、ちょっとうまく作成する自信がありませんでした。
少し調べると、AWS CDKというものがあり、プログラムからAWSのサービスを操作でき、さらにCloud Formation用のYAMLファイルを生成できることがわかりました。
AWS CDKを活用して、AWSのコンソールから簡単に環境構築できるようにすることにしました。
AWS CDK(AWS Cloud Development Kit)は、AWSのリソースをプログラムで定義し、管理するためのフレームワークです。手動での設定や複雑なCloud Formationテンプレートの作成を回避し、プログラミング言語でAWSリソースを定義できる利点があります。
AWS CDKを利用するためには、以下の前提条件が必要でした
AWS CDKはNode.jsで動作します。
Node.jsとnpm(Node.jsのパッケージ管理ツール)をインストールを行いました。
sudo apt update
sudo apt install nodejs
sudo apt install npm
今回はWindows Subsystems For LinuxのUbuntu22.04.3を使用しました。
AWS CDKはAWS CLIと連携して動作します。
AWS CLIを使用して、AWSアカウントとの認証情報の紐づけが必要でした。
aws configure
このコマンドを実行すると、AWS Access Key ID、Secret Access Key、デフォルトのリージョンなどの情報を入力できます。
今回、AWSCDKで記載する際に、一番文献が多かったので、TypeScriptで開発することにしました。
そのため、下記でインストールを行いました。
npm install -g typescript
最後に、AWS CDKをインストールしました。
以下のコマンドを使用します。
npm install -g aws-cdk
前提の作業が終わったので、記述したプログラムの構成について説明していきます。
簡単に記述したプログラムの構成について説明します。
environment/
|-- bin/
| `-- environment.ts
|-- lib/
| |-- environment-stack.ts
| |-- resource/
| | |-- alb.ts
| | |-- ec2.ts
| | |-- elasticIp.ts
| | |-- iamRole.ts
| | |-- internetGateway.ts
| | |-- natGateway.ts
| | |-- rds.ts
| | |-- routeTable.ts
| | |-- secretsManager.ts
| | |-- securityGroup.ts
| | |-- subnet.ts
| | `-- vpc.ts
| |-- script/
| | `-- ec2/
| | `-- userData.sh
|-- output.yml
environment-stack.ts ファイルから各resourceディレクトリのファイルを呼び出し、各サービスの構築や更新を行っています。
また、userData.sh ファイルでWebサーバの初期起動時の実行処理を定義し、初期設定やカスタマイズが行えるようにしています。
上記のプログラムの記述した後、CloudFormationテンプレート(YAML形式)へ以下の手順で変換しました。
まず、AWS CDKプロジェクトをビルドした後に、Cloud Formationのテンプレートを行いました。
cdk build
cdk synth > output.yml
テンプレートファイルの生成が行えたので、ここからはCloud Formationでの実行となります。
AWSコンソールにログインし、Cloud Formationからスタックの生成を実行します。
下記画面で、生成したテンプレートファイルをアップロードし、次に進みます。
必要なパラメータなどは全てテンプレートに記載済みなので、そのまま名称だけ決めて確認画面で送信ボタンを押します。
全てのスタックが完了で、作業終了です。
簡単に生成されたサーバーや設定について確認します。
AWS CDKを使用してAWSリソースを定義して、Cloud Formationから簡単かつ再現可能な形で環境構築を行うことができるようになりました。
ALBのHTTPS接続のためのSSL情報の設定やAutoScaringの設定、DBサーバへのセキュアな接続方法の設定等もう少しブラッシュアップが必要で、実際に運用するには対応が必要かなという所感でした。
久々の勉強会でテーマ決めからいろいろと大変でしたが、いい勉強になりました。
▼技術ブログ
▼採用資料