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
260
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 2023事前勉強会
yuki_kurono
0
8
CloudFormationの運用が 辛くならない方法を本気で考えてみた
yuki_kurono
0
58
Turnstileのウィジェット モードとは何者か
yuki_kurono
0
120
CodeGuru Security ってなんだ?
yuki_kurono
0
320
えるしってるか CloudFrontはWAFがあっても カスタムエラーレスポンスを返せる
yuki_kurono
0
140
Cloudflare初心者がIaCから基本構成を学んでみた
yuki_kurono
1
350
Terraformのnull_resource ってなに?aws cli が実行できるらしい
yuki_kurono
0
520
Hashicorp VaultでAWSクレデンシャルの管理を楽にしたい
yuki_kurono
0
430
回転re:Invent寿司
yuki_kurono
0
39
Other Decks in Technology
See All in Technology
プロンプトエンジニアリングでがんばらない-Agentic Workflow へ-近藤憲児
kenjikondobai
4
1k
生産性向上チームの紹介
cybozuinsideout
PRO
1
880
DMM.com アルファ室採用案内資料
hsugita
1
170
【NW X Security JAWS#3】L3-4:AWS環境のIPv6移行に向けて知っておきたいこと
shotashiratori
0
440
MixIT 2024 - Pulumi : Gérer son infra avec son langage de programmation préféré
ju_hnny5
0
100
よく聞くけど使ったことないソフトウェアNo.1 KafkaとSnowflake
foursue
4
370
LangSmith入門―トレース/評価/プロンプト管理などを担うLLMアプリ開発プラットフォーム
os1ma
3
410
AWS学習者向けにAzureの解説スライドを作成した話
handy
2
100
R3のコードから見る実践LINQ実装最適化・コンカレントプログラミング実例
neuecc
2
530
Terraformあれやこれ/terraform-this-and-that
emiki
8
1.5k
Gitlab本から学んだこと - そーだいなるプレイバック / gitlab-book
soudai
4
450
今年のRubyKaigiはProfiler Year🤘
osyoyu
0
190
Featured
See All Featured
BBQ
matthewcrist
80
8.8k
Optimizing for Happiness
mojombo
370
69k
GraphQLとの向き合い方2022年版
quramy
32
12k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
Building Flexible Design Systems
yeseniaperezcruz
319
37k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
6
1.5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.1k
Navigating Team Friction
lara
178
13k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
125
32k
Infographics Made Easy
chrislema
238
18k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
659
120k
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