Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Amazon Qを使ってIaCを触ろう!
Search
Maruto
November 06, 2024
Programming
0
750
Amazon Qを使ってIaCを触ろう!
「JAWS-UG初心者支部#62 オンラインLT大会」で発表したLT資料です。
https://jawsug-bgnr.connpass.com/event/334459/
Maruto
November 06, 2024
Tweet
Share
More Decks by Maruto
See All by Maruto
手を動かしてレベルアップしよう!
maruto
0
350
技術に触れたり、顔を出そう
maruto
1
280
AWS re:Invent 2024で発表された コードを書く開発者向け機能について
maruto
0
370
Other Decks in Programming
See All in Programming
Go1.25からのGOMAXPROCS
kuro_kurorrr
0
250
Perplexity Slack Botを作ってAI活用を進めた話 / AI Engineering Summit プレイベント
n3xem
0
650
レガシーシステムの機能調査・開発におけるAI利活用
takuya_ohtonari
0
590
Javaに鉄道指向プログラミング (Railway Oriented Pro gramming) のエッセンスを取り入れる/Bringing the Essence of Railway-Oriented Programming to Java
cocet33000
2
540
Blueskyのプラグインを作ってみた
hakkadaikon
1
520
ktr0731/go-mcpでMCPサーバー作ってみた
takak2166
0
160
複数アプリケーションを育てていくための共通化戦略
irof
10
3.8k
TypeScript LSP の今までとこれから
quramy
1
500
データベースコネクションプール(DBCP)の変遷と理解
fujikawa8
1
250
機械学習って何? 5分で解説頑張ってみる
kuroneko2828
0
210
XSLTで作るBrainfuck処理系
makki_d
0
200
ワイがおすすめする新潟の食 / 20250530phpconf-niigata-eve
kasacchiful
0
300
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
4 Signs Your Business is Dying
shpigford
184
22k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
Navigating Team Friction
lara
186
15k
Speed Design
sergeychernyshev
31
990
Documentation Writing (for coders)
carmenintech
71
4.9k
Being A Developer After 40
akosma
90
590k
Bash Introduction
62gerente
614
210k
Transcript
2024/11/6 @ JAWS-UG初⼼者⽀部#62 オンラインLT⼤会 まると Amazon Q を使って IaC を触ろう!
⾃⼰紹介 2 • 名前 ◦ まると • 所属 ◦ クラスメソッド
AWS事業本部コンサルティング部 (2024/9 〜) • AWS歴 ◦ 個⼈で1年+、業務で1ヶ⽉+ • SNS ◦ X/Twitter: @MaruDevG • 趣味 ◦ ソフトダーツ ◦ ⾃宅サーバー
本プレゼンテーションのアジェンダ 3 1. IaC、Amazon Q について 2. Amazon Q を利⽤した
IaC コードの作り⽅ 3. 公式ドキュメントを読むコツ 4. 終わりに
IaC または、Amazon Q 触っていますか?
IaC (Infrastructure as Code) とはざっくり 5 サーバー、ネットワークをはじめとしたインフラストラクチャの 構成や設定値をコードとして記述する⼿法
IaC を利⽤することで嬉しいこと(⼀例) 6 ⼀貫性と再現性の向上 ⼿動ではなくコードから環境構築を⾏えるため、簡単に環境の再現ができる。 例: 開発環境、本番環境など複数の環境を作りたい ⾃動化‧効率化 1度コードを作成することで⾃動的にインフラの構築‧管理が可能に。 ⼿動による環境構築と⽐べミスの低減、⾃動化による構築の⾼速化
構成のモジュール化 構築した構成をモジュール化することに、他プロジェクト等で同じ設定を再利⽤が可能に。 etc…
Amazon Q とは? 7 ⽣成AIを活⽤したサービス 企業のデータや情報を利⽤した Amazon Q Business コーディングなど開発者向けに特化した
Amazon Q Developer など、Amazon Q でも様々なサービス‧機能がある。
Amazon Q でできること(抜粋) 8 Amazon Q Developer Amazon Q Business
上記以外にも、Amazon QuickSight、Amazon Connect、AWS Supply Chain などに特化したサービスがございます。 コード⽣成 技術的なトラブルシューティング AI エージェント コードのアップグレード インフラストラクチャの最適化 操作を IaC 化 (Console-to-Code) データソースに基づく Q&A AI エージェント 出典や参考⽂献の提⽰ 外部アプリケーションとの接続 ユーザ情報に基づく回答 ユースケースに基づく回答
AWS で IaC を⾏うには? 9 ※その他、Terraform by HashiCorp 等のツールもございますが、本プレゼンテーションでは AWS
CloudFormation を中⼼にお話しします。 AWS CloudFormation AWS Cloud Development Kit (AWS CDK) 今⽇はこっち
2サービスのざっくりとした違い 10 AWS CloudFormation AWS CDK 定義⽅法 YAML または JSON
TypeScript, JavaScript, Python, Java, C#, Go 抽象化レベル 低(リソースを直接定義) ⾼(コンストラクトなどによるリソースの抽象化) デプロイ⽅法 CloudFormation スタックを直接デプロイ CloudFormation テンプレートを⽣成しデプロイ 記述例 コードは2024/4/25に発表した「IaC触ってみた」より https://www.docswell.com/s/morikapu/KM1MWG-letsstartIaC#p14
(⾃⾝の感想)IaC、初記述は結構⼤変だった。 11 1. 公式ドキュメントをひたすら確認しながら⼟台の作成 2. ⼟台を作成後、各種プロパティの指定 3. デプロイできるように調整 ⽣成 AI
が出てくるまで 1. 公式ドキュメントをひたすら確認しながら⼟台の作成 2. ⼟台を作成後、各種プロパティの指定 3. デプロイできるように調整 ⽣成 AI の活⽤により... より⾼速かつ効率良く 書けるようになった
Amazon Q を使って IaC コードを書いてみよう!
Amazon Q を使⽤していい感じに IaC コードを⽣成するまで 13 1. 構成を定める 2. 構成の分解し⼿順の作成
3. お気に⼊りのエディタにプラグインをインストール、有効化 4. Amazon Q にいい感じにコードを⽣成してもらう 5. ⽣成されたコードの確認、デプロイできるように調整 本プレゼンテーションでは、Visual Studio Codeを利⽤します。また、プラグインのインストール、有効化は完了しているものとします。
想定する構成 14 リソース 個数 VPC 1 Internet Gateway 1 サブネット
1 セキュリティグループ 1 Amazon EC2 1
分解して⼿順にしてみる 15 リソース 個数 VPC 1 Internet Gateway 1 サブネット
1 セキュリティグループ 1 Amazon EC2 1 1. VPC を作る 2. Internet Gateway を作る 3. Internet Gateway を VPC にアタッチ 4. VPC にサブネットの作成 5. サブネットにルートテーブルを作成 6. ルートの定義、ルートテーブルに割当 7. 作成したルートテーブルをサブネットにアタッチ 8. セキュリティグループを作成 9. EC2 の作成
Amazon Q で IaC コードを書いてみる 16 VPC: と⼊⼒するだけで提案を出してくれる!(灰⾊で表⽰されているのが提案)
ちなみに...どこまで提案された? 17 1. VPC を作る 2. Internet Gateway を作る 3.
Internet Gateway を VPC にアタッチ 4. VPC にサブネットの作成 5. サブネットにルートテーブルを作成 6. ルートの定義、ルートテーブルに割当 7. 作成したルートテーブルをサブネットにアタッチ 8. セキュリティグループを作成 9. EC2 の作成 (調整は置いておいて)ほとんどの⼿順が完了している! ⼊⼒が同じであっても、図のように必ず同⼀の提案が⾏われるわけではありません。(VPC のみが提案されるなど) 確定後、InternetGateway: など関連するキーワードを⼊⼒することでリソースに関する提案を受け取れます。
⽣成されたものを公式ドキュメントで確認、調整する 18 ⽣成されたプロパティやパラメータの意味、参照されている値が本当に存在するか? VPC の CIDR 範囲は CidrBlock というパラメータを参照しているけど実在しない Name
パラメータを参照しているけど、Internet Gateway でも同じ値を参照している 実在しないパラメータ Name タグの割り当てが不適切なパターン その他、よくあるもの... • セキュリティグループの設定(SSH を全開放したら怖いよね) • ⼀緒に使えないプロパティが使われている(特にセキュリティグループ周り) • 互換性観点から残している⾮推奨のプロパティを使⽤している ⽣成 AI は便利ですが、100% 正しい答えを出してくれるわけではありません。 ⼟台を作ってくれるものという認識で、プロパティを1つ1つ⾒直してみると更に理解が深めることができます。
(個⼈的な)公式ドキュメントを読むコツ 19 前提として、IaC コードを書くことに焦点を当てます。 1. IaC 化したい構成図を考える(なるべくシンプルな構成図がベスト) 2. まずはAWS マネジメントコンソールを介してリソースを作る
3. 作りたい各リソースについて、どんなプロパティがあるのかドキュメントを確認する a. AWS マネジメントコンソールで設定しているプロパティが何に該当するのか⾒てみよう b. 各ページの最下部にサンプルがあるので⾒てみよう 4. 複数リソースが存在する場合は、まずは1つだけ IaC 化をやってみる すごく要約すると • 最初はシンプルに考える • AWS マネジメントコンソールで設定したプロパティ、サンプルをまずは読んでみよう!
先ほどの構成なら... 20 Amazon VPC と Amazon EC2 に分解!
⽣成 AI サービスを使⽤することで IaC の記述が楽になり、よりハードルが低くなりました。 これから使う⽅も、すでに使っている⽅も 新しい記述⽅法に触れてみませんか? 終わりに 21
None