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
42
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
110
入社時に作った社内システムをInertia.jsで作り直した話 / Fusic Tech Live Vol 15 Makihara
ryu022304
0
110
福岡市のお墨付き!エンジニアフレンドリー企業に選ばれたFusicの実態に迫る! / PHP Conference Japan 2020 Sponsor LT Fusic
ryu022304
0
160
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Docker and Python
trallard
40
3.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.8k
KATA
mclloyd
29
14k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
It's Worth the Effort
3n
183
27k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
27
2k
Bash Introduction
62gerente
608
210k
Thoughts on Productivity
jonyablonski
67
4.3k
Being A Developer After 40
akosma
86
590k
RailsConf 2023
tenderlove
29
900
[RailsConf 2023] Rails as a piece of cake
palkan
51
4.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/