20250122_Fin-JAWS_Terraformロックを調べてみたら、S3アップデートに出会った話

577 Views

February 04, 25

スライド概要

2025/1/22 Fin-JAWS 登壇資料です

profile-image

いろんな分野の開発を渡り歩いてきて、現在 Web アプリ開発に従事中

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Terraformロックを調べてみたら、 S3アップデートに出会った話 Techn olog y & Develo pm ent.Div S a to m i W a t a n a b e 2025.01 .22 © 2025 Japan Digital Design, Inc. 1

2.

自己紹介 Photo • 名前 :渡邊 聡美 • 所属会社 :Japan Digital Design 株式会社 • 担当業務 :主に frontend の改修・機能追加 • backend、AWS : 絶賛修行中 初登壇でメチャメチャ緊張してます!! 渡邊 聡美 Enginner Technology & Development.Div CONFIDENTIAL © 2025 Japan Digital Design, Inc. 2

3.

アジェンダ 1. 会社紹介 2. プロジェクト紹介 3. Terraform がロックされて焦った話 4. Terraform のロック管理について 5. S3 のアップデートによるロック機能の変化 CONFIDENTIAL © 2025 Japan Digital Design, Inc. 3

4.

1 会社紹介 CONFIDENTIAL © 2025 Japan Digital Design, Inc. 4

5.

会社概要 社名 Japan Digital Design 株式会社 設立 2017年10月2日 代表者 代表取締役 CEO 浜根 吉男 従業員数 120名(2025年1月時点) 株主構成 株式会社三菱UFJフィナンシャル・グループ 株式会社三菱総合研究所 三菱UFJリサーチ&コンサルティング株式会社 CONFIDENTIAL © 2024 Japan Digital Design, Inc. 5

6.

2 プロジェクト紹介 CONFIDENTIAL © 2025 Japan Digital Design, Inc. 6

7.

Contents Area Photo / Figur e / Chart … 類似相場検索ツール(MMSS) 生成AI相場解説ツール(FMAI) • 過去相場から類似相場を AI が検索し、類似度をスコアリング • 検索された期間中の経済イベントや景気動向について生成AIが解説 • 検索された類似相場の期間中に発生した決済イベント等について生 成AIが解説 • LLMを独自にチューニングし、指定した期間中の経済イベントや景 気動向に関する5つの質問について解説 • 期間中に受信したマーケットメールもWebアプリ上で閲覧可能 • ニュースデータを用いることで、生成AIの学習範囲以降の解説も可 能 CONFIDENTIAL © 2025 Japan Digital Design, Inc. 7

8.

3 Terraform がロックされて焦った話 CONFIDENTIAL © 2025 Japan Digital Design, Inc. 8

9.

Terraform がロックされて焦った話 背景 • AWS へのアクセスは、Microsoft Entra ID を利用した SSO 接続で行っている • SSO 接続には aws-azure-login というツールを活用 • セッションには時間制限が設定されている(1時間程度) Contents Area Photo / Figur e / Chart … • terraform console を実行したまま、お昼休憩に行ってし まった CONFIDENTIAL © 2025 Japan Digital Design, Inc. 9

10.

Terraform がロックされて焦った話 セッションがタイムアウト この瞬間までロック機能の存在を知らなかったので、めちゃめちゃ焦りました。。 Contents Area Photo / Figur e / Chart … • タイムアウトした場合、再度 aws-azure-login を行う • ログイン後に terraform console を実行するもエラーが発生 CONFIDENTIAL © 2025 Japan Digital Design, Inc. 10

11.

4 Terraform のロック管理について CONFIDENTIAL © 2025 Japan Digital Design, Inc. 11

12.

Terraformのロック管理について ロック管理の必要性 • 複数人で開発する場合、状態変更の競合や破損が発生 するリスクがある • それを回避するために必要な機能 ② 操作 ① ロック取得 ③ ロック取得不可 ロックの流れ • Terraform コマンドを実行すると、ロックを取得 • 状態ファイルを操作する間、他のコマンドはブロック • 処理終了後、自動でロック解除 CONFIDENTIAL © 2025 Japan Digital Design, Inc. 12

13.

Terraformのロック管理について ロックの仕組み(S3 + DynamoDB) • S3バケットに状態ファイル ( terraform.tfstate ) を保存 • Terraformが状態ファイルを操作するあいだ、 DynamoDBテーブルにロック情報を記録 ロック情報 • ID • 作業者情報 • セッション時間 など ※キーは “LockID” 固定 CONFIDENTIAL © 2025 Japan Digital Design, Inc. 13

14.

Terraformのロック管理について DynamoDB が必要な理由 • S3 • 同時書き込みを制御するロック機能はない • 最新のリクエストが優先される ① 操作 ② 上書きできてしまう • DynamoDB • 条件つき書き込みで競合を防止できる つまり、S3 のみではロック機能は実現できなかった CONFIDENTIAL © 2025 Japan Digital Design, Inc. 14

15.

Terraformのロック管理について SSO切れでロックが解除されない問題 • セッションが切れたことで terraform console が異常終了 • セッション切れなどの異常終了ではロック解除処理が実 行されない • ロックエントリが削除されず、次の操作がブロック • 手動でロックを解除する必要がある CONFIDENTIAL © 2025 Japan Digital Design, Inc. 15

16.

Terraformのロック管理について Terraformロックの手動解除方法 • terraform force-unlock コマンドを使用 • LockID はロック取得エラーメッセージに記載されている ID • DynamoDBのロックエントリを直接削除してもロックは 解除されたけど、公式サイトに書かれていないのでやら ない方が良さそう CONFIDENTIAL © 2025 Japan Digital Design, Inc. 16

17.

5 S3 のアップデートによるロック機能の変化 CONFIDENTIAL © 2025 Japan Digital Design, Inc. 17

18.

S3 のアップデートによるロック機能の変化 S3のアップデート • 条件付き書き込みのサポートを開始(2024/8~) • 同じキー名のオブジェクトが存在しない場合、書き込み が成功 • 同じキー名のオブジェクトが存在する場合、書き込みは 失敗 re:Invent でも紹介されていました!! CONFIDENTIAL © 2025 Japan Digital Design, Inc. 18

19.

S3 のアップデートによるロック機能の変化 条件付き書き込みで Terraform はどう変わる? • S3 が直接ロック機能を担い、DynamoDB が不要になる • ロックの取得 • .tflock ファイルを S3 バケットにアップロードするこ とで、状態ファイルにロックを確立 • .tflock ファイルが既に存在する場合、条件付き書き 込みによるアップロード失敗で、ロックが別の Terraform クライアントによって保持されているこ とを示す • ロックの解除 • 対応する .tflock ファイルを S3 バケットから削除 S3に.tflock ファイルが作成された • force-unlock を利用する CONFIDENTIAL © 2025 Japan Digital Design, Inc. 19

20.

S3 のアップデートによるロック機能の変化 新しい状態ロックの導入方法 • Terraform v1.10 以降で利用可能 • backend 設定から dynamodb_table を削除 • use_lockfile = true を追加 CONFIDENTIAL © 2025 Japan Digital Design, Inc. 20

21.

Thank you. Dis cla im er : T he infor ma tio n p rovi d ed i n thi s p re se nta ti on i s for i nfor mat io nal p urp os es onl y a nd d oe s no t cons ti tut e l e ga l, f i nancia l , o r p rofe s si ona l a d vice . E ve ry effo rt ha s be e n ma de t o e nsu re the a cc u ra cy of t he infor ma tio n, b ut the p re se nte r a nd the c omp a ny a c c ep t no re sp ons ib i l i ty for a ny e rro rs or omi ss ions . T he v ie ws e xp re ss ed a re tho se of the pr es e nte r a nd do not nec e ss ar il y r efl ec t the vi ews of t he co mp any . Confi de nti a li ty N oti ce: T his pr es e nta tio n conta i ns confi d ent ia l i nfor mat io n int end e d o nly for the de s ig nat ed a ud ie nce. U nau thor ize d di st ri bu tio n or re pr od ucti on o f thi s cont ent is s tri ctly p rohi bi te d . 免責事項: このプレゼンテーションで提供される情報は、情報提供のみを目的としており、法的、財務的、または専門的なアドバイスを構成するものではありません。 情報の正確性を確保するために努めていますが、誤りや脱落について発表者および会社は一切の責任を負いません。 本プレゼンテーションで表明された見解は、発表者の個人的なものであり、会社の見解を必ずしも反映するものではありません。 機密性に関する注意: このプレゼンテーションには機密情報が含まれており、指定された対象者のみを対象としています。無断での配布や複製は固く禁じられています。 CONFIDENTIAL © 2025 Japan Digital Design, Inc. 21