Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
[LT]生成AIを使ったAWS CloudFormationの書き方
Search
Satoshi Kaneyasu
November 11, 2023
Programming
680
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
[LT]生成AIを使ったAWS CloudFormationの書き方
Satoshi Kaneyasu
November 11, 2023
More Decks by Satoshi Kaneyasu
See All by Satoshi Kaneyasu
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
400
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
400
【業務アプリのモダナイズ】このまま保守・改修し続けて大丈夫ですか?
satoshi256kbyte
1
84
今から学ぶベクトルデータベース基礎知識からAmazon Bedrock Knowledge Basesまで
satoshi256kbyte
2
29
Amazon Managed Grafana で Amazon DynamoDB のデータを可視化する Infinity Plugin + プライベート API 構成
satoshi256kbyte
1
49
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
900
AWS Transform Customによる Spring Boot 2.xから4.xへのVerUp
satoshi256kbyte
2
200
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
260
AWS CDK ExpressモードとCI/CDの組み合わせ
satoshi256kbyte
1
87
Other Decks in Programming
See All in Programming
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
420
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
220
우리의 Nitro Modules는 당신의 Turbo Modules보다 아름답다
l2hyunwoo
0
260
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
140
Vue.jsで作る空間解析アプリとCapacitorプラグインのData Bridge
hal_spidernight
1
170
Rails初心者がパスキーを実装してみて大変だったこと
ktombow
0
160
AI Augmentation Techniques with Liberty
ivargrimstad
1
440
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
240
AmebaブログはKMPから卒業します
kmars0605
0
340
作れる、でも消せるか?──安全に「枯らして消す」機能削除術 / Drain, Then Delete
chobishiba
3
1.5k
クラウドゲーミングのパフォーマンス最適化に挑む / Cloud Gaming Performance Tuning
vivion
0
330
Claude Code ハーネスDeep Dive – 君はどこまで制御する? -
takateeen_knj
6
5.2k
Featured
See All Featured
Accessibility Awareness
sabderemane
1
290
Docker and Python
trallard
47
4.3k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.8k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
550
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.3k
AI: The stuff that nobody shows you
jnunemaker
PRO
11
1.3k
Crafting Experiences
bethany
1
430
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
600
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
300
What the history of the web can teach us about the future of AI
inesmontani
PRO
3
800
Six Lessons from altMBA
skipperchong
29
4.6k
Transcript
[LT]⽣成AIを使ったAWS CloudFormationの書き⽅ Satoshi Kaneyasu 2023.11.11
2 ⾃⼰紹介 ⽒名︓兼安 聡 所属︓株式会社サーバーワークス 最近興味あるもの︓DevOps、CI/CDパイプライン 趣味︓サックス、筋トレ、CS ゲーム 資格︓ X(Twitter)︓@satoshi256kbyte
好きな⾔葉︓できらぁ︕ など
3 このLTについて • ⽣成AIの話に結びつけてInfrastructure as Codeを推すLTです。 • 本LTにおける⽣成AIは、下記ををイメージしています。 • ChatGPT
• GitHubCopilot • AWS CodeWhisper
4 Infrastructure as Codeのメリット ⾼い再現性によるトライ&エラーのしやすさ 1 差分の可視化によるトレーサビリティの向上 2 ツール連携による⾃動化への道 3
ちなみに、コードのインフラ化をしても設計書は作っています。
5 AWS CloudFormationとは • AWS CloudFormationは、AWSのリソースをコードで書いて、 ⾃動的に展開するためのサービスです。(略称CFn) • 真⾯⽬に書くのはかなり⼤変。 •
Teraform、AWS CDKの話は今回はスキップします。
6 ⽣成AIを⽤いてCFnを書く流れ STEP1 ChatGPTで質問し、全体像を書いてもらう 1 STEP3 GitHub Copilotの⼊⼒補完を使って埋めていく 3 STEP2
書いてもらった全体像から、キーワードを拾って公式を⾒る 2 ⼤体こんな 感じです
7 [STEP1]ChatGPTに質問を投げる • [第⼀段階] • [第⼆段階] ALB+EC2+RDSで、Wordpressを実⾏する環境のCloudFormationを書いてください。 EC2はS3にアクセスすることもあります。 各リソースの繋がりの部分を教えてください。
8 [STEP1]回答してくれた全体像で構造とキーワードを掴む AWSTemplateFormatVersion: '2010-09-09' Parameters: テンプレートに渡す引数の定義 Resources: EC2Instance: Type: AWS::EC2::Instance
Properties: SecurityGroupIds: - Ref: EC2SecurityGroup IAMInstanceProfile: !Ref EC2RoleInstanceProfile ・・・ EC2Role: Type: AWS::IAM::Role Properties: ・・・ EC2RoleInstanceProfile: Type: AWS::IAM::InstanceProfile Properties: Roles: - !Ref EC2Role 以下略 ここで押さえたキーワードは、 後で公式を⾒に⾏くのに役⽴ちます
9 [STEP2] キーワードを拾ってAWS公式サイトを⾒る • ChatGPTが作ったCFnは通る時も通らない時もある。 • 通らない時、⽣成AIに改善を促しても改善しないことがある。 • こうなったら、こだわらずにAWS公式サイトを⾒に⾏くのが吉。 Resources:
EC2Instance: Type: AWS::EC2::Instance Properties: SecurityGroupIds: - Ref: EC2SecurityGroup IAMInstanceProfile: !Ref EC2RoleInstanceProfile ・・・ EC2Role: Type: AWS::IAM::Role Properties: ・・・ EC2RoleInstanceProfile: Type: AWS::IAM::InstanceProfile このあたりのキーワードで検索し、 AWS公式サイトなどを⾒に⾏く
10 [STEP2]リソースのプロパティは精度が低め EC2Instance: Type: AWS::EC2::Instance Properties: ImageId: !FindInMap ・・・ KeyName:
!Ref KeyName InstanceType: !Ref InstanceType SecurityGroups: - !Ref Ec2SecurityGroup BlockDeviceMappings: - DeviceName: /dev/sda1 Ebs: VolumeSize: 50 - DeviceName: /dev/sdm Ebs: VolumeSize: 100 MyDB: Type: AWS::RDS::DBInstance Properties: DBSecurityGroups: - Ref: MyDbSecurityByEC2SecurityGroup - Ref: MyDbSecurityByCIDRIPGroup AllocatedStorage: '5' DBInstanceClass: db.t2.small Engine: MySQL MasterUsername: MyName ManageMasterUserPassword: true MasterUserSecret: KmsKeyId: !Ref KMSKey DeletionPolicy: Snapshot CFnはリソースごとにプロパティの書き⽅がまちまち 似て⾮なる記述が多いので、質問の精度が低いと答え を出しきれないのだろう
11 [STEP3] GitHub Copilotの⼊⼒補完を使って埋めていく • AWS公式サイトを⾒に⾏くのは正確な属性名・構⽂を確認するため • 属性名が正しいと、Copilotの⼊⼒補完がよく効く (正確な属性名を⼊れる=質問の精度が上がってる︖) MyDB:
Type: AWS::RDS::DBInstance Properties: DBSecurityGroups: - Ref: MyDbSecurityByEC2SecurityGroup - Ref: MyDbSecurityByCIDRIPGroup MyDbSecurityByEC2SecurityGroup: Type・・・
12 [PLUS]テンプレート同⼠の連携も⽣成AI • 実際のCFnはレイヤーごとに分割する • CFn同⼠の連携設定の記述もCopilotの⼊⼒補完がとても効く (今となってはないと⾟い) ネットワーク Resources: VPC:
Type: AWS::EC2::VPC PublicSubnet1: Type: AWS::EC2::Subnet Outputs: VPC: (略) PublicSubnet1: Value: !Ref PublicSubnet1 Export: Name: !Sub ${Project}-public-subnet-1 アプリケーション WEBServer: Type: AWS::EC2::Instance Properties: InstanceType: !Ref Ec2InstanceType SubnetId: !ImportValue 'Fn::Sub': '${Project}-public-subnet-1ʼ (略) vpc.yml ec2.yml
13 まとめ 1. チャット形式でやりたことを質問 2. 詰まったらキーワードを拾って公式サイトへ︕ 3. 公式サイトで属性名を押さえて、コード補完に期待に切り替える • コードで環境が作れると、感動を覚えますよ︕
• こわくないよ︕ Infrastructure as Code︕
None