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
TerraformリファクタリングでSGを消した話
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
KiyamaMizuki
March 10, 2026
Technology
0
31
TerraformリファクタリングでSGを消した話
KiyamaMizuki
March 10, 2026
Tweet
Share
More Decks by KiyamaMizuki
See All by KiyamaMizuki
AWS公式のIaC自動レビューツール使ってみた
kiyamamizuki
0
73
沖縄出身の新卒が振り返るシナマケでの社会人生活
kiyamamizuki
0
330
AWS使いすぎ注意! コスト管理とSlackアラート構築術
kiyamamizuki
0
700
Other Decks in Technology
See All in Technology
Dr. Werner Vogelsの14年のキーノートから紐解くエンジニアリング組織への処方箋@JAWS DAYS 2026
p0n
1
120
ナレッジワークのご紹介(第88回情報処理学会 )
kworkdev
PRO
0
170
非情報系研究者へ送る Transformer入門
rishiyama
10
6.8k
類似画像検索モデルの開発ノウハウ
lycorptech_jp
PRO
4
1.1k
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
0
850
自動テストが巻き起こした開発プロセス・チームの変化 / Impact of Automated Testing on Development Cycles and Team Dynamics
codmoninc
3
1.3k
スクリプトの先へ!AIエージェントと組み合わせる モバイルE2Eテスト
error96num
0
150
最強のAIエージェントを諦めたら品質が上がった話 / how quality improved after giving up on the strongest AI agent
kt2mikan
0
130
DevOpsエージェントで実現する!! AWS Well-Architected(W-A) を実現するシステム設計 / 20260307 Masaki Okuda
shift_evolve
PRO
3
460
Yahoo!ショッピングのレコメンデーション・システムにおけるML実践の一例
lycorptech_jp
PRO
1
180
複数クラスタ運用と検索の高度化:ビズリーチにおけるElastic活用事例 / ElasticON Tokyo2026
visional_engineering_and_design
0
110
EMからICへ、二周目人材としてAI全振りのプロダクト開発で見つけた武器
yug1224
5
510
Featured
See All Featured
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
120
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
82
First, design no harm
axbom
PRO
2
1.1k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
130
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
69
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.4k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Navigating Team Friction
lara
192
16k
Making the Leap to Tech Lead
cromwellryan
135
9.8k
Making Projects Easy
brettharned
120
6.6k
Producing Creativity
orderedlist
PRO
348
40k
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