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
[LT]生成AIを使ったAWS CloudFormationの書き方
Search
Satoshi Kaneyasu
November 11, 2023
Programming
650
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
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
0
28
AWS CDK ExpressモードとCI/CDの組み合わせ
satoshi256kbyte
1
38
AWS CDK ExpressモードとCI/CDの組み合わせ
satoshi256kbyte
0
16
AWS re:Invent 2025の少し振り返り + DevOps AgentとBacklogを連携させてみた
satoshi256kbyte
3
220
Amazon_Cognito_で構築する_スケーラブルな_Web_アプリケーション__シングルページ_Web_アプリケーションに認証を組み込む
satoshi256kbyte
0
43
人間とAI、どちらが書いたコードもCI/CDでチェックしてみよう
satoshi256kbyte
0
45
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎 おもクラ #6版
satoshi256kbyte
1
290
今こそ押さえておきたい アマゾンウェブサービス(AWS)の データベースの基礎
satoshi256kbyte
1
63
人間とAI、どちらが書いたコードもCICDでチェックしてみよう
satoshi256kbyte
1
93
Other Decks in Programming
See All in Programming
FDEが実現するAI駆動経営の現在地
gonta
2
220
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
240
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
280
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
0
440
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
250
『コードを書く以外の』エンジニアリング〜課金基盤移行プロジェクト推進のためのTips4選
yuriko1211
0
540
継続モナドとリアクティブプログラミング
yukikurage
3
650
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
6.9k
数百円から始めるRuby電子工作
tarosay
0
110
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
130
yield再入門 #phpcon
o0h
PRO
0
750
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
2
910
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
420
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.7k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
ラッコキーワード サービス紹介資料
rakko
1
4M
Designing for humans not robots
tammielis
254
26k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Tell your own story through comics
letsgokoyo
1
1k
Deep Space Network (abreviated)
tonyrice
0
230
First, design no harm
axbom
PRO
2
1.2k
Amusing Abliteration
ianozsvald
1
240
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
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