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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
KiyamaMizuki
March 10, 2026
Technology
71
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
46
AWS公式のIaC自動レビューツール使ってみた
kiyamamizuki
0
140
沖縄出身の新卒が振り返るシナマケでの社会人生活
kiyamamizuki
0
540
AWS使いすぎ注意! コスト管理とSlackアラート構築術
kiyamamizuki
0
860
Other Decks in Technology
See All in Technology
使いこなすために知っておきたい Azure SRE Agent アンチパターン
torumakabe
2
330
メルペイ 会計システム概要と歴史
mewuto
0
150
雪かき部 #7 もう怖くない!SELECT文!
foursue
0
280
『GOエコノミー 』(相乗りサービス) におけるスペック駆動開発
mot_techtalk
1
310
More Freedom on the Same Shared GPU Cluster: A Small Team’s Experience with vCluster
nttcom
0
130
調査タスクをAIと乗り切る 〜過去の調査をナレッジ化し 調査手順をスキルにする〜
mot_techtalk
1
110
全社共通データ基盤をつくる。ソニーのDatabricks活用とデータガバナンス設計の裏側
sony
0
410
BedrockとLambdaで作る リアルタイム進行型推理ゲーム
kawametho
0
190
転んだ話が背中を預ける理由になる / A_story_about_falling_down_gives_you_a_reason_to_watch_each_other_s_backs.pdf
pauli
2
200
ai_cording_with_k8s_knowledge.pdf
mochizuki875
1
270
[2026 Oracle Technical Deep Dive] Apache Iceberg × Oracle AI Database -Oracle Autonomous AI Lakehouseが実現するAI時代のデータ基盤- (2026年9月17日開催)
oracle4engineer
PRO
0
100
OpenSharing について熱く語る〜AI アセットの共有について〜
kameitomohiro
0
230
Featured
See All Featured
Speed Design
sergeychernyshev
33
2.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The agentic SEO stack - context over prompts
schlessera
0
960
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
260
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
540
Optimizing for Happiness
mojombo
378
71k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
460
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Code Review Best Practice
trishagee
74
20k
WCS-LA-2024
lcolladotor
0
840
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