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
430
Amazon Qを使ってIaCを触ろう!
「JAWS-UG初心者支部#62 オンラインLT大会」で発表したLT資料です。
https://jawsug-bgnr.connpass.com/event/334459/
Maruto
November 06, 2024
Tweet
Share
Other Decks in Programming
See All in Programming
C++でシェーダを書く
fadis
6
4.2k
ActiveSupport::Notifications supporting instrumentation of Rails apps with OpenTelemetry
ymtdzzz
1
260
[Do iOS '24] Ship your app on a Friday...and enjoy your weekend!
polpielladev
0
150
Modular Monolith Monorepo ~シンプルさを保ちながらmonorepoのメリットを最大化する~
yuisakamoto
10
2.8k
Jakarta EE meets AI
ivargrimstad
0
550
Nurturing OpenJDK distribution: Eclipse Temurin Success History and plan
ivargrimstad
0
1.3k
AWS Lambdaから始まった Serverlessの「熱」とキャリアパス / It started with AWS Lambda Serverless “fever” and career path
seike460
PRO
1
270
「天気予報があなたに届けられるまで」 - NIFTY Tech Talk #22
niftycorp
PRO
0
120
cmp.Or に感動した
otakakot
3
300
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
6
1.2k
イベント駆動で成長して委員会
happymana
1
350
Amazon Bedrock Agentsを用いてアプリ開発してみた!
har1101
0
360
Featured
See All Featured
Teambox: Starting and Learning
jrom
133
8.8k
Embracing the Ebb and Flow
colly
84
4.5k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
Building Flexible Design Systems
yeseniaperezcruz
327
38k
Documentation Writing (for coders)
carmenintech
65
4.4k
Fireside Chat
paigeccino
34
3k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
Producing Creativity
orderedlist
PRO
341
39k
Into the Great Unknown - MozCon
thekraken
33
1.5k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
Designing the Hi-DPI Web
ddemaree
280
34k
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