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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Satoshi Kaneyasu
November 11, 2023
Programming
670
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
380
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
380
【業務アプリのモダナイズ】このまま保守・改修し続けて大丈夫ですか?
satoshi256kbyte
1
76
今から学ぶベクトルデータベース基礎知識からAmazon Bedrock Knowledge Basesまで
satoshi256kbyte
2
24
Amazon Managed Grafana で Amazon DynamoDB のデータを可視化する Infinity Plugin + プライベート API 構成
satoshi256kbyte
1
42
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
850
AWS Transform Customによる Spring Boot 2.xから4.xへのVerUp
satoshi256kbyte
2
170
運用ダッシュボードの設計を誰も教えてくれないのだけどみなさんどうしてるんですか? - チームに監視するという文化を根付かせるための第一歩を踏みたい -
satoshi256kbyte
1
240
AWS CDK ExpressモードとCI/CDの組み合わせ
satoshi256kbyte
1
79
Other Decks in Programming
See All in Programming
R8 の設定見直しでアプリサイズ削減
andpad
0
220
最近”作らせてる” ローカルAIアプリの話
akit37
0
470
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
220
Agents on Rails - Rails at Scale 2026
irinanazarova
0
560
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
390
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
4
3.5k
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
sbt 2.0: takeoff
eed3si9n
0
160
Compiling a real-world CLI tool to native with Static Hermes
tmikov2023
0
120
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
290
Featured
See All Featured
Building Applications with DynamoDB
mza
96
7.2k
Mobile First: as difficult as doing things right
swwweet
225
10k
GraphQLとの向き合い方2022年版
quramy
50
15k
The SEO identity crisis: Don't let AI make you average
varn
0
590
The Art of Programming - Codeland 2020
erikaheidi
57
14k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
540
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
320
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
600
Statistics for Hackers
jakevdp
799
230k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
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