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
50
AWS公式のIaC自動レビューツール使ってみた
kiyamamizuki
0
150
沖縄出身の新卒が振り返るシナマケでの社会人生活
kiyamamizuki
0
550
AWS使いすぎ注意! コスト管理とSlackアラート構築術
kiyamamizuki
0
880
Other Decks in Technology
See All in Technology
ひとりで始めた AI駆動開発、チームに広げて何が変わったのか
kenichiodo
0
120
Claude for Google Workspaces ポン出し/claude-for-google-workspace-slide-conversion
emiki
0
13k
Obsidian Vault Architectures
x5gtrn
PRO
0
190
[re:Invent2026事前勉強会(有志開催)]続きは、ラスベガスの廊下で / continue-in-the-vegas-hallway
sh_fk2
0
310
クラウドサインを止めずに Nuxt へ 次の10年のために先に決めたこと
bengo4com
1
160
Deep Data Security 機能解説
oracle4engineer
PRO
3
950
ポケモン対戦を自動で記録して振り返ろう
fufufukakaka
0
410
CTO Night & Day Morning Session_AI-DLC:生成 AI 時代の開発プロセス変革
pikosan0000
0
110
DevelopersIO2026 -バックアップは“消されないこと”が9割-
yoshida0129
0
420
AWSセキュリティで活用するAI機能
cmusudakeisuke
1
330
AIエージェントに 権限と鍵をどこまで渡すか
nrinetcom
PRO
2
120
なぜAI時代に技術記事を書くのか?どう書くのか? 〜bunの場合〜
kworkdev
PRO
0
150
Featured
See All Featured
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
68
59k
Agile that works and the tools we love
rasmusluckow
331
22k
Automating Front-end Workflow
addyosmani
1370
210k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
610
KATA
mclloyd
PRO
35
16k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
How GitHub (no longer) Works
holman
316
150k
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.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