IaC触ってみた

1K Views

April 25, 24

スライド概要

profile-image

色々なサーバーを運営しています。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

IaCを触ってみた #AWS CloudFormation #AWS CDK もりかぷ 2024/4/25 Cloud LT Vol.8

2.

自己紹介 森尾 孟倫 Takenori Morio a.k.a もりかぷ 所属 株式会社セゾンテクノロジー since 2020 (会社名変わりました!) 役割 データ連携ソフトウェアの開発 趣味・その他 ソフトダーツ、3Dプリント、SNS運営、音楽ゲーム、旅行 SNS ActivityPub @[email protected] X (Twitter) @GoMori_Blue (最近作った) Qiita @tkapu AWS community builders 2

3.

みなさんIaC触っていますか? 3

4.

僕は触っていないです 4

5.

IaCとは? サーバーやネットワークをはじめとしたインフラストラクチャをコードとして扱う手段 コードとして扱うことにより、リソースのデプロイを自動化したり、環境の再現性を向上できる 他、コードとして保存されるのでバージョン管理が容易 5

6.

AWSでIaCをするには? AWS CloudFormation ・YAML、またはJSONでリソースの定義が可能 ・サポートする全てのリソースが利用可能 ・リソースの依存関係をより明確にできる AWS Cloud Development Kit (AWS CDK) ・様々な種類のプログラミング言語でリソースの定義が可能 ・高レベルの抽象化や、再利用可能なコンポーネントによりベストプラクティスやリソースの定義をより簡単に ・ユニットテストを作成することにより、リソースのデプロイや動作などを検証可能 6

7.

さっそく書いてみよう 7

8.

要件 シンプル構成のVPC+EC2(パブリックサブネットにEC2を配置) AWS Cloud Virtual private cloud (VPC) Public subnet Amazon Elastic Compute Cloud (Amazon EC2) 8

9.

要件 こんなイメージ Standard Component EC2Instance EC2Instance Standard Component PublicSubnet PublicSubnet SubnetRouteTableAssociation RouteTable Standard Component TestVPC TestVPC AttachGateway InternetGateway Standard Component AllowSSHSecurityGroup AllowSSHSecurityGroup 9

10.

AWS CloudFormationの場合 まずはVPCから 1. VPCを作成 2. パブリックサブネットを作成 3. ルートテーブルを作成 4. サブネットにルートテーブルを紐づけ 5. インターネットゲートウェイ作成 6. インターネットゲートウェイを紐づけ 10

11.

AWS CloudFormationの場合 続いてEC2 1. EC2インスタンス作成 2. SSHアクセスを許可するセキュリティグループを作成 11

12.

AWS CDKの場合 Stackの定義 VPCに関わる部分 EC2に関わる部分 12

13.

記述の違い VPC ※テンプレートは要件を満たすための記述です。 13

14.

記述の違い EC2 ※テンプレートは要件を満たすための記述です。 14

15.

ちなみに… AWS CDKは内部でAWS CloudFormationのテンプレートを作成している AWS Cloud Development Kit (AWS CDK) Template AWS CloudFormation Stack cdk synth を実行後 cdk.out/<AppId>.template.json で生成されたものが確認できる 15

16.

どう使い分けるか? AWS CloudFormation ・リソースの依存関係や設定を細かく定義したい時 ・インフラストラクチャの定義で複雑な条件式を入れない場合 AWS Cloud Development Kit (AWS CDK) ・抽象化やオブジェクト指向の概念が強いため、同様のリソースを繰り返して使える ・複雑な条件分岐が必要となるリソース定義が必要な場合 ・コード志向によるインフラストラクチャの定義を行いたい時 16

17.

どっちから学ぶ? 個人的には… スキルセットだったりも考慮する必要がありますが、AWS CDKも内部では AWS CloudFormationのテンプレートを作っているので、生成されたテンプレートを読めるようになる観点から まず AWS CloudFormation の次に AWS Cloud Development Kit (AWS CDK) がおすすめ! 17

18.

まとめ ・IaCにより同一リソースのデプロイがより簡単、正確に! ・AWS CDKでは高度な抽象化により、テンプレートの記述量が少なくなる!(※) ・特に自分でテンプレートを記載することにより、依存関係をより深く理解できる ※細かな設定値などを入れる場合、記述量がAWS CloudFormationと同じになる場合がございます。 18

19.

是非皆さんも触ってみてください! 19