IaCはどうやるの? クラウドインフラの構築をしてみよう:架空事例で学ぶクラウドエンジニアのお仕事(3)(2/2 ページ)
クラウドエンジニアの仕事を学ぶ本連載。今回は、クラウド上でのインフラ構築を具体的に解説します。ここで重要なキーワードとなるのが「IaC」。実際に手を動かして設定し、やり方がイメージできるようにしていきます。IaCのメリットとデメリット、注意点についても触れます。
ここから、実際にVPCを作成するためのコードを修正していきます。libディレクトリ配下の「cdk-workspace-stack.ts」というファイルをエディタで表示しましょう。
まずは、VPCを作成するためのモジュールをインポートします。上の行にインポートの記述がありますので、同じように 'aws-cdk-lib/aws-ec2' モジュールのインポートを記述しましょう。
import * as ec2 from 'aws-cdk-lib/aws-ec2'
次に、VPCを作成します。「cdk-workspace-stack.ts」内の以下のコードでは、maxAzsやnatGatewaysなど、VPCに必要な設定を行ってec2.Vpcクラスのインスタンスを作成しています。
const vpc = new ec2.Vpc(this, 'CdkWorkVpc', { vpcName: "cdk-work-vpc", // 作成するVPCの名前 maxAzs: 3, // 使用するアベイラビリティゾーンの数 natGateways: 3 // NATゲートウェイの数(コスト観点でハンズオンでは0の指定を推奨) });
以上でコードの記述は完了です。最終的にこのようなコードになっていればOKです!
4. デプロイ
では、リソースのデプロイをしていきましょう。ここからの手順は、開発環境でお持ちのAWSアカウントに対する認証情報が設定されていることを前提とします。認証情報の設定方法が分からない場合は、公式ドキュメントをご確認ください。
認証情報の設定が完了したら、 作業ディレクトリに移動し、cdk bootstrapコマンドを実行してCDKのデプロイ環境を準備しましょう。
$ cd cdk-workspace $ cdk bootstrap
bootstrapが完了したらcdk diffコマンドで差分を確認してみましょう。
$ cdk diff
コマンドを実行すると、現在のスタックと、CDKアプリケーションで定義されたスタックの間の差分が表示されます。追加されるリソースは「+」、削除されるリソースは「-」、変更されるリソースは「~」で表示され、視覚的に変更差分を確認することが可能です。今回は新規構築のみなので、作成されるリソースが想定通りか確認しましょう。
cdk diffの結果が問題なければいよいよデプロイです! cdk deployコマンドを実行してAWSリソースを作成しましょう。
$ cdk deploy
コマンドを実行すると、作成されるリソースが表示された後に「Do you wish to deploy these changes (y/n)? 」という確認があります。デプロイして問題なければ「y」と入力してEnterキーを押下してください。以下のような表示がされれば成功です!
デプロイに成功したら、AWSコンソールで実際にVPCが作成されているかどうかも確認してみましょう。コンソールにログインし、検索窓で「VPC」と検索をしてVPCダッシュボードに移動します。VPCの一覧ページで作成したVPCを確認できるはずです。
後片付け
AWSのリソースは従量課金制です。作成するリソースによっては費用がかかってしまうため、ハンズオン後はcdk destroyコマンドでリソース削除をしましょう。ここでも途中で確認があるので、「y」と入力して続け、「destroyed」という表示がされれば後片付けも完了です!
$ cdk destroy
まとめ
第3回では、IaCの話を中心にクラウドインフラ環境の構築についてお話しし、実際にハンズオン形式でVPCの作成を行いました。AWS公式のワークショップでは、コンテナやデータベースのデプロイができるカリキュラムもあるため、興味のある方はぜひ挑戦してみてください。
次回はサービスのリリースや、リリース後のインフラ保守運用、トラブルシューティングなどについて取り上げます。
筆者紹介
小原夏々子
株式会社マイナビ
デジタルテクノロジー戦略本部所属
SIerなどでオンプレミスおよびクラウドのネットワーク構築を経験し、2023年にマイナビ入社。現在は新規プロダクトのインフラ開発や集約基盤の運用等を担当。
マイナビエンジニアブログでも技術紹介記事を発信。
Copyright © ITmedia, Inc. All Rights Reserved.