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
TerraformリファクタリングでSGを消した話
Search
KiyamaMizuki
March 10, 2026
Technology
74
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TerraformリファクタリングでSGを消した話
KiyamaMizuki
March 10, 2026
More Decks by KiyamaMizuki
See All by KiyamaMizuki
より綺麗なTerraformコードをチームで書き続ける取り組み
kiyamamizuki
0
53
AWS公式のIaC自動レビューツール使ってみた
kiyamamizuki
0
150
沖縄出身の新卒が振り返るシナマケでの社会人生活
kiyamamizuki
0
550
AWS使いすぎ注意! コスト管理とSlackアラート構築術
kiyamamizuki
0
900
Other Decks in Technology
See All in Technology
Don't write the architecture only in the prompt.
neohsu
0
310
`go get`したらELFが降ってきた件
taiyow
0
170
1週間、Opus封印でお願いします
kintotechdev
1
460
Active Directory と Entra ID のむむむな関係
murachiakira
PRO
2
920
Oracle Database Security 詳細解説
oracle4engineer
PRO
1
250
re:Invent の去年のスケジュールを公開します!
miu_crescent
PRO
0
280
渡米前の準備を制す!re:Invent 2026徹底準備術 / The Ultimate Preparation Guide for re:Invent 2026
yuj1osm
1
530
複雑な業務システムを高速でつくるため、チーム全員をつくれる人へ
ayakurabuchi
0
130
Patterns in AI Driven Software Development
akosma
PRO
0
480
推論基盤と Scale-Up Interconnect の現状と制約から俯瞰する技術動向
markunet
2
800
自律的なチームを作るためにTechPMがやらないこと
ny7760
1
500
セキュリティ専任チームなしで攻撃を先回りするSREが実践したSIEM on Amazon OpenSearch Service
cscengineer
PRO
0
120
Featured
See All Featured
How GitHub (no longer) Works
holman
316
150k
Side Projects
sachag
456
43k
Technical Leadership for Architectural Decision Making
baasie
3
630
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
760
Code Review Best Practice
trishagee
74
20k
Building the Perfect Custom Keyboard
takai
2
950
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.6k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Transcript
Terraformリファクタリングで SGを消した話 木山瑞基 2026/03/10(火) AWS業務の体験談 ~成功も失敗も丸ごとシェアするLT大会~ 1
自己紹介 名前:木山瑞基 所属:シナジーマーケティング株式会社 業務:CRMシステムのインフラ運用を行っ ています AWS / Mail server 趣味:ボルダリング、旅行
2
がっつりTerraformの話になってしまいますが、 「AWS業務の体験談」ということで許し てください! 3
目次 1. 前提1: Terraformの仕組み 2. 前提2: Terraformのリソース定義 3. やろうとしたこと 4.
実際のコード例(修正前 / 修正後) 5. 何が起きたか 6. なぜ起きたか 7. まとめ・教訓 4
前提1:Terraformの仕組み [※ ] TerraformはStateファイルで現在の状態を管理し、.tfファイルとの差分をAWS APIで反映する 5
前提2:Terraformのリソース定義 予約語であるリソースタイプとユーザーが定義するリソース名のペアでリソースを定義 し、ドキュメントに従って引数を設定する resource "aws_security_group_rule" "allow_https" { type = "ingress"
... } 要素 説明 resource 予約語(リソースブロックであることを示す) "aws_security_group_rule" リソースタイプ(AWSプロバイダが提供) "allow_https" リソース名(自分で命名する識別子) 6
やろうとしたこと SGルールの整理 既存のSGリソースは変更せずに、tfのリソース定義を修正したかった 1. リソース名の修正 — 命名規則に合わせて名前を変更 i. リソース名を変更する場合、再作成となる 2.
非推奨リソースの修正 i. 作成するAWSリソースは変わらず、Terraform上のリソース定義だけを変更す る必要があった ii. importブロック で既存リソースを取り込み — Stateに取り込めば安全に移行 できると考えた [1] importブロック:既存のAWSリソースをStateファイルに取り込む機能。Stateの追加のみを行い、AWSリソース自体には触ら ない。 7
実際のコード例(修正前 / 修正後) 修正前 resource "aws_security_group_rule" "allow_https_security_group_rule" { type =
"ingress" security_group_id = aws_security_group.main.id ... } 修正後 resource "aws_vpc_security_group_ingress_rule" "allow_https" { security_group_id = aws_security_group.main.id ... } 8
何が起きたか 移行先のリソースに構文エラーがあり、適用中にエラーが発生し、処理が途中で止ま った 1. リソース名の変更により、旧リソースの削除が先に実行された 2. 続く新リソースの作成で構文エラーが発生し、処理が中断 3. 旧リソースは削除済み、新リソースは未作成という状態に 結果:開発環境の限定アクセス用SGルールが消失
開発環境だったため実害は無かったが、利用中であれば通信断の可能性があった 成功しててもリソースの際作成が行われており、嬉しくない 9
なぜ起きたか importブロックに意識が向きすぎて、 リソース名の変更がAWSリソースの再作成を引き起こすことを見落としていた。 10
まとめ・教訓 今回の失敗から得た学び 11
まとめ・教訓 ① plan結果に destroy が出たら必ず立ち止まる 意図しないリソース削除がないか、必ずplan結果を一行ずつ確認する ② リソース名の変更には moved ブロックを使う
movedブロック = State内のリソース名を変更する → AWSリソースの削除・再作成が発生しない → 今回のユースケースにはこちらが適切だった moved { from = aws_security_group_rule.old_name to = aws_security_group_rule.new_name } 12