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
CloudFormationで登場したForEachをちゃんと理解してみる
Search
Yuki_Kurono
August 25, 2023
Technology
0
480
CloudFormationで登場したForEachをちゃんと理解してみる
フレッシュメンLT #0 夏祭り
https://connpass.com/event/285559/
Yuki_Kurono
August 25, 2023
Tweet
Share
More Decks by Yuki_Kurono
See All by Yuki_Kurono
今年のre:inventから学ぶこと
yuki_kurono
0
12
re_invent 2023事前勉強会
yuki_kurono
0
40
CloudFormationの運用が 辛くならない方法を本気で考えてみた
yuki_kurono
0
150
Turnstileのウィジェット モードとは何者か
yuki_kurono
0
270
CodeGuru Security ってなんだ?
yuki_kurono
0
690
えるしってるか CloudFrontはWAFがあっても カスタムエラーレスポンスを返せる
yuki_kurono
0
260
Cloudflare初心者がIaCから基本構成を学んでみた
yuki_kurono
1
470
Terraformのnull_resource ってなに?aws cli が実行できるらしい
yuki_kurono
0
1.1k
Hashicorp VaultでAWSクレデンシャルの管理を楽にしたい
yuki_kurono
0
530
Other Decks in Technology
See All in Technology
RubyでKubernetesプログラミング
sat
PRO
4
160
GoogleのAIエージェント論 Authors: Julia Wiesinger, Patrick Marlow and Vladimir Vuskovic
customercloud
PRO
0
160
AWSサービスアップデート 2024/12 Part3
nrinetcom
PRO
0
140
2024AWSで個人的にアツかったアップデート
nagisa53
1
110
#TRG24 / David Cuartielles / Post Open Source
tarugoconf
0
590
【JAWS-UG大阪 reInvent reCap LT大会 サンバが始まったら強制終了】“1分”で初めてのソロ参戦reInventを数字で振り返りながら反省する
ttelltte
0
140
2025年の挑戦 コーポレートエンジニアの技術広報/techpr5
nishiuma
0
150
AWSマルチアカウント統制環境のすゝめ / 20250115 Mitsutoshi Matsuo
shift_evolve
0
120
深層学習と3Dキャプチャ・3Dモデル生成(土木学会応用力学委員会 応用数理・AIセミナー)
pfn
PRO
0
460
あなたの知らないクラフトビールの世界
miura55
0
130
AWS re:Invent 2024 re:Cap Taipei (for Developer): New Launches that facilitate Developer Workflow and Continuous Innovation
dwchiang
0
170
テストを書かないためのテスト/ Tests for not writing tests
sinsoku
1
170
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Measuring & Analyzing Core Web Vitals
bluesmoon
5
210
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
We Have a Design System, Now What?
morganepeng
51
7.3k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
KATA
mclloyd
29
14k
What's in a price? How to price your products and services
michaelherold
244
12k
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Building Adaptive Systems
keathley
38
2.4k
Speed Design
sergeychernyshev
25
740
Transcript
CloudFormationで登場した ForEachをちゃんと理解してみる Yuki Kurono 2023/8/25 #フレッシュメンLT
自己紹介 #フレッシュメンLT 黒野 雄稀 Yuki Kurono アイレット株式会社 新卒4年目 普段はインフラ設計・構築や運用構築に従事 2022/2023
Japan AWS All Certifications Engineers 2023 Japan AWS Top Engineers AWS Community Builders(Cloud Operations)
CloudFormationとは AWSで提供されるInfrastructure as Code(IaC)サービス IaC = コードしてインフラを管理しようぜ! テンプレートと呼ばれるファイルにコードを記述する 記述方法はJson or
YAMLを使うことができる AWSTemplateFormatVersion: '2010-09-09' Resources: VPC: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 #フレッシュメンLT
CloudFormationならではの良さもある。 • 環境構築が要らない • YAML,Jsonでの統一された書き方 • AWSサービスとの組み合わせの相性も良い • 対応しているAWSリソースの多さ •
etc… CloudFormation使ってる? #フレッシュメンLT
CloudFormationならではの良さもある。 • 環境構築が要らない • YAML,Jsonでの統一された書き方 • AWSサービスとの組み合わせの相性も良い • 対応しているAWSリソースの多さ •
etc… CloudFormation使ってる? #フレッシュメンLT NO
これまでのCloudFormationでの構築、運用は辛いと思うことが多かった。 • 冗長的なコードの記述 ←これが結構大きかった。 • etc… CloudFormationなんで使わないの? #フレッシュメンLT
様々なプログラミング言語でも使える様なループ処理が行える機能です。 これを使うことで冗長なコードの定義が不要となりました。 ForEachってなんだ? #フレッシュメンLT Parameters: VPCList: Type: List<String> Default: VPC01,VPC02,VPC03
Resources: Fn::ForEach::VPCListLoop: - VPCNames - !Ref VPCList - ${VPCNames}: Type: AWS::EC2::VPC Properties: CidrBlock: "192.168.0.0/16" Tags: - Key: Name Value: !Ref VPCNames Resources: VPC01: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 VPC02: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 VPC03: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 ==
ForEachは単体で使うと1つの値しかループさせることができない。 例えばサブネット名とか。 →でもサブネットを作るにはCIDR、Azの名前など色々な値を可変させたいです よね? ForEachイケてると思う使い方 #フレッシュメンLT Fn::ForEach::SubnetListLoop: - SubnetNames -
!Ref SubnetList - ${SubnetNames}: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC CidrBlock: : "192.168.0.0/16" AvailabilityZone: "ap-northeast-1a" Tags: - Key: Name Value: !Ref SubnetNames
AWSTemplateFormatVersion: 2010-09-09 Transform: "AWS::LanguageExtensions" Parameters: SubnetList: Type: List<String> Default: SubnetPuba,SubnetWeba,SubnetDBa
Mappings: SubnetMappings: SubnetPuba: cidrBlock: "192.168.1.0/24" az: ap-northeast-1a nameTags: subnet-pub-a SubnetWeba: cidrBlock: "192.168.2.0/24" az: ap-northeast-1a nameTags: subnet-web-a SubnetDBa: cidrBlock: "192.168.3.0/24" az: ap-northeast-1a nameTags: subnet-db-a Resources: Fn::ForEach::SubnetListLoop: - SubnetNames - !Ref SubnetList - ${SubnetNames}: Type: AWS::EC2::Subnet Properties: VpcId: !Ref VPC CidrBlock: !FindInMap - SubnetMappings - !Ref SubnetNames - cidrBlock AvailabilityZone: !FindInMap - SubnetMappings - !Ref SubnetNames - az Tags: - Key: Name Value: !FindInMap - SubnetMappings - !Ref SubnetNames - nameTags Mappings Foreach 複数の値をMappingで渡して 参照する
まとめ • これまで冗長なコードを記載する必要があったものが解決されかなり 便利になるアップデートだと思います! • ForEachと併せてMappingを使うと複数の値(パラメータ値)をループさ せることができるので、これを使うことでよりコードを短縮して書く ことができるのでオススメ • ForEach内で使用できる組み込み関数やクオータなどの制約事項につい
ても注意が必要となりますので、より詳しく知りたい方は公式ページ を参考にするとよいかと思います。 ◦ https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-foreach.html #フレッシュメンLT