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 importと同じノリでcdk importしてはいけない件 / 2024 January JAWS-UG Saga Makihara LT
Search
Ryunosuke Makihara
January 30, 2024
0
10
terraform importと同じノリでcdk importしてはいけない件 / 2024 January JAWS-UG Saga Makihara LT
JAWS-UG佐賀 2024年新年会LT ~佐賀のエンジニアで乾杯!~
Ryunosuke Makihara
January 30, 2024
Tweet
Share
More Decks by Ryunosuke Makihara
See All by Ryunosuke Makihara
AWS re:Invent 2023 でのアップデートを話してと言われた / Fusic Tech Live Vol 17 Makihara
ryu022304
0
68
入社時に作った社内システムをInertia.jsで作り直した話 / Fusic Tech Live Vol 15 Makihara
ryu022304
0
65
福岡市のお墨付き!エンジニアフレンドリー企業に選ばれたFusicの実態に迫る! / PHP Conference Japan 2020 Sponsor LT Fusic
ryu022304
0
160
Featured
See All Featured
Fireside Chat
paigeccino
22
2.7k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
Designing with Data
zakiwarfel
96
4.8k
Fashionably flexible responsive web design (full day workshop)
malarkey
398
65k
[RailsConf 2023] Rails as a piece of cake
palkan
28
4k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Design by the Numbers
sachag
274
18k
Designing on Purpose - Digital PM Summit 2013
jponch
111
6.5k
A Tale of Four Properties
chriscoyier
153
22k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.9k
For a Future-Friendly Web
brad_frost
172
9k
Transcript
terraform importと同じノリで cdk importしてはいけない件 2024.01.27 槇原 竜 之輔 1 JAWS-UG佐賀
2024年新年会LT ~ 佐賀のエンジニアで乾杯 !~
自己 紹介 槇原 竜 之輔 Makihara Ryunosuke - From -
佐賀県佐賀市 - Work at - Fusic@福岡(2020~) - 某警備会社のIT 子 会社@東京(2018~2019) - Skill - લ৬ͰLinuxαʔόԾج൫ͷӡ༻ཧ - FusicではPHPでのシステム開発 / AWSの設計構築 - Like - 漫画、将棋、映画、フットサル等 - SNS - @ryu022304 2
01 CDKを初めて使って やらかした話
序章 4 खಈͰ࡞ͬͨRoute53υϝΠϯͷݖݶҕৡઃఆ ઌํʹͬͯΒͬͨ͠ɺͬͨ͜ͱͳ͍͚Ͳ CDK importͯ͠औΓࠐΜͰ͠·͏͔ʔ (at 01:00) (Terraform͍͚ͬͯͨΕͲ CDKΛ͏ͷॳΊͯ)
起 5 $ cdk import (AWS::Route53::HostedZone): enter Id (empty to
skip): ʙ Import operation complete.
承 6 Ϥγ ͋ɺιʔεʹॻ͍͍ͯΔυϝΠϯ໊ؒҧ͑ͯͨɻ ·͋ݱঢ়ͷϦιʔεͱಉ໊͡લʹ͓͚ͯ͠ ࠩͳ͍͠ɺଞͷमਖ਼ͱҰॹʹ͓͔ͯ͘͠ɻ
転 7 $ cdk deploy UPDATE_IN_PROGRESS | AWS::Route53::HostedZone ~
結 8 ʁʁʁ
02 terraform importと cdk importの違い
Terraform 10 • Terraform import CLIstateͷΈΛΠϯϙʔτ͢Δ - Πϯϙʔτ࣮ߦ࣌ʹϦιʔεԿमਖ਼͞Εͳ͍ • stateϑΝΠϧ
- Terraform͕࣮ࡍͷϦιʔεͱઃఆΛඥ͚ͮͨΓɺ ϝλσʔλͷύϑΥʔϚϯε্ʹ༻͞ΕΔ - σϑΥϧτͩͱʮterraform.tfstateʯ͕ϩʔΧϧʹ࡞ ͞ΕΔ
Terraform import イメージ 11 tfϑΝΠϧ terraform.tfstate AWSϦιʔε Terraform CLI
Terraform import イメージ 12 ᶃ TerraformͷϦιʔεΛهड़͢Δ Terraform 1.5Ҏ͔߱ΒImportϒϩοΫΛ͑Δ Α͏ʹͳ͕ͬͨɺҰ୴লུ tfϑΝΠϧ
terraform.tfstate AWSϦιʔε Terraform CLI
Terraform import イメージ 13 ᶄ Terraform import࣮ߦ $ terraform import
aws_s3_bucket.bucket bucket-name tfϑΝΠϧ terraform.tfstate AWSϦιʔε Terraform CLI
Terraform import イメージ 14 ᶅ tfstateϑΝΠϧ͕ߋ৽͞ΕΔ tfϑΝΠϧ terraform.tfstate AWSϦιʔε Terraform
CLI
Terraform import デモ ⓪ 手 動でS3バケット作成 15 ͪ͜ΒͷS3όέοτTerraformͰ࡞ ͪ͜ΒͷS3όέοτΛTerraform import͢Δ
Terraform import デモ ①Terraformのリソースを記述する 16 खಈͰઃఆ͠ͳ͔ͬͨཁૉΛهड़͓ͯ͘͠
Terraform import デモ ②terraform import実 行 17 Ϧιʔε͕stateʹऔΓࠐ·ΕɺTerraformͷཧԼʹͳͬͨ
Terraform import デモ ③tfstateファイルが更新される 18 stateͷཧԼʹϦιʔε͕Ճ͞Ε͍ͯΔ tfstateϑΝΠϧͷdiffΛऔͬͯΈΔͱimportͨ͠ Ϧιʔε͕Ճ͞Ε͍ͯΔ
Terraform plan実 行 19 खಈͰઃఆ͠ͳ͔ͬͨཁૉ͕Ճ͞ΕΔ TerraformͷσϑΥϧτઃఆ͕Ճ͞ΕΔ ߋ৽(࠶࡞͠ͳ͍)
Terraform import 20 stateͷʙͱ͍͏ՕॴͰϦιʔεΛཧ ͢ΔΑ͏ʹ͠·ͨ͠ͱtfstateϑΝΠϧ͕ ߋ৽͞ΕΔ͚ͩͳͷͰɺimport࣌ʹtfϑΝΠϧʹ ॻ͍͍ͯΔ༰ؔͳ͍ ※import͢ΔϦιʔεͷఆ͚ٛͩඞཁ tfϑΝΠϧ terraform.tfstate
AWSϦιʔε Terraform CLI
CDK 21 • CloudFormationͷimportػೳΛͬͯελοΫʹ มߋ༰ΛऔΓࠐΉ
CDK import イメージ 22 ιʔείʔυ CloudFormation Template AWSϦιʔε CDK CLI
CloudFormation Stack
Cdk import 23 ᶃ CDKͷϦιʔεΛهड़͢Δ CloudFormation Template AWSϦιʔε CDK CLI
CloudFormation Stack CDK import イメージ 23 ιʔείʔυ
CDK import イメージ 24 CloudFormation Template AWSϦιʔε CDK CLI CloudFormation
Stack ᶄ cdk import࣮ߦ $ cdk import ιʔείʔυ
CDK import イメージ 25 ᶅ ιʔείʔυΛݩʹͯ͠ςϯϓϨʔτΛ࡞ CloudFormation Template AWSϦιʔε CDK
CLI CloudFormation Stack ιʔείʔυ
CDK import イメージ 26 ᶆ CloudFormationͷimportॲཧΛ࣮ߦ CloudFormation Template AWSϦιʔε CDK
CLI CloudFormation Stack ιʔείʔυ
CDK import イメージ 27 CloudFormation Template AWSϦιʔε CDK CLI CloudFormation
Stack ᶇ CloudFormation͕ελοΫͷυϦϑτΛݕग़ ͯ͠ߋ৽ ιʔείʔυ
CDK import デモ ⓪ 手 動でS3バケット作成 28 ͪ͜ΒͷS3όέοτCDKͰ࡞ ͪ͜ΒͷS3όέοτΛCDK import͢Δ
CDK import デモ ①CDKのリソースを記述する 29 खಈͰઃఆ͠ͳ͔ͬͨཁૉΛهड़͓ͯ͘͠
CDK import デモ ②cdk import実 行 30 ιʔείʔυͰهड़͞Ε͍ͯͯελοΫʹଘࡏ͠ͳ͍ ࠩͷϦιʔεΛऔΓࠐΉ͔֬ೝ͕ೖΔ
CDK import デモ ③templateファイルが更新される 31 cdk importίϚϯυΛ࣮ߦͨ࣌͠Ͱ ιʔείʔυΛݩʹͨ͠ςϯϓϨʔτ͕ ࡞͞Ε͍ͯΔ
CDK import デモ ④CloudFormationのimport処理を実 行 32 CloudFormationͰimportॲཧ͕։࢝͞ΕΔ
CDK import デモ ⑤CloudFormationがスタックのドリフトを検出して更新 33 ιʔείʔυͰఆٛͨ͠Ϧιʔε͕ଘࡏ͍ͯ͠Δ
CDK diff実 行 34 importίϚϯυྃ࣌Ͱιʔείʔυͱ CloudFormationͷελοΫʹ͕ࠩଘࡏ͠ͳ͍ Ϧιʔεࣗମʹมߋ͕ೖ͍ͬͯͳ͍
CDK import 35 CloudFormation Template AWSϦιʔε CDK CLI CloudFormation Stack
CDK importΛ࣮ߦ͢Δͱݱঢ়ͷιʔείʔυΛ ݩʹͯ͠CloudFormationͷελοΫ͕ߋ৽͞ΕΔ ͷͰɺimport࣌ʹιʔείʔυʹॻ͍ͯ͋Δ ༰ؔ͋Δ ιʔείʔυ
03 当時何が起こったか
手 動で作られたホストゾーンが存在する 37
ホストゾーン名を誤った状態でimport 38 ʮexample.comʯ͕࣮ࡍͷϦιʔε͕ͩɺ ʮexample.netʯͱ͍ͯͨ͠ ϗετκʔϯκʔϯIDΛࢦఆͯ͠औΓࠐΉ
CloudFormationスタックには誤った状態でimportされた 39 ʮexample.comʯ͕࣮ࡍͷϦιʔε͕ͩɺ ʮexample.netʯͰελοΫͰఆٛ͞Ε͍ͯΔ
ソースコードでドメイン名を修正した結果スタックと差分が発 生 し、再作成された 40 ߋ৽(࠶࡞)
04 どうすれば防げたか
None
05 まとめ
まとめ 44 • Terraform import ➡StateϑΝΠϧͷ༰Λॻ͖͑ΔͷΈ • CDK import ➡CloudFormationͷελοΫΛίϚϯυ࣮ߦ࣌ͷ
ιʔείʔυͷ༰Ͱߋ৽͢Δ • CDK importΛ͏࣮࣌ߦ࣌ͷιʔείʔυͷ༰ʹҙ • TerraformͰCDKͰdiff100ճ֬ೝ͠Α͏
ご清聴いただきありがとうございました Thank You We are Hiring ! https://recruit.fusic.co.jp/