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
770
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
81
re_invent 2023事前勉強会
yuki_kurono
0
84
CloudFormationの運用が 辛くならない方法を本気で考えてみた
yuki_kurono
0
270
Turnstileのウィジェット モードとは何者か
yuki_kurono
0
630
CodeGuru Security ってなんだ?
yuki_kurono
0
1.1k
えるしってるか CloudFrontはWAFがあっても カスタムエラーレスポンスを返せる
yuki_kurono
0
410
Cloudflare初心者がIaCから基本構成を学んでみた
yuki_kurono
1
580
Terraformのnull_resource ってなに?aws cli が実行できるらしい
yuki_kurono
1
1.5k
Hashicorp VaultでAWSクレデンシャルの管理を楽にしたい
yuki_kurono
0
650
Other Decks in Technology
See All in Technology
20260129_CB_Kansai
takuyay0ne
1
270
データ民主化のための LLM 活用状況と課題紹介(IVRy の場合)
wxyzzz
2
650
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
3.8k
30万人の同時アクセスに耐えたい!新サービスの盤石なリリースを支える負荷試験 / SRE Kaigi 2026
genda
1
150
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
67k
2人で作ったAIダッシュボードが、開発組織の次の一手を照らした話― Cursor × SpecKit × 可視化の実践 ― Qiita AI Summit
noalisaai
1
370
GCASアップデート(202510-202601)
techniczna
0
250
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
380
Introduction to Bill One Development Engineer
sansan33
PRO
0
360
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
1
140
IaaS/SaaS管理における SREの実践 - SRE Kaigi 2026
bbqallstars
4
1.6k
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Designing for humans not robots
tammielis
254
26k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
170
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
110
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
400
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
The Language of Interfaces
destraynor
162
26k
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
240
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
450
Ruling the World: When Life Gets Gamed
codingconduct
0
130
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