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...
Search
Ryunosuke Makihara
January 30, 2024
0
45
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
120
入社時に作った社内システムをInertia.jsで作り直した話 / Fusic Tech Live Vol 15 Makihara
ryu022304
0
120
福岡市のお墨付き!エンジニアフレンドリー企業に選ばれたFusicの実態に迫る! / PHP Conference Japan 2020 Sponsor LT Fusic
ryu022304
0
160
Featured
See All Featured
Producing Creativity
orderedlist
PRO
341
39k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Making Projects Easy
brettharned
116
5.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
YesSQL, Process and Tooling at Scale
rocio
169
14k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
The Invisible Side of Design
smashingmag
298
50k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
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/