わたくし、やっぱりCDKを使いたいですわ∼∼∼
∼CDK Import編∼
2022/7/13 Mirai Kobayashi
JAWS-UG CDK 支部 #2
自己紹介
2
・お仕事
  ・野生のインフラエンジニア
・好きなAWSサービス
  ・CDK / TransitGateway
・名前
  ・Mirai Kobayashi / @mi-kobaaaaaa
・好きなもの
  ・平日の昼間に開けるビール
3
アジェンダ
・概要
・取り込み方法おさらい
・CDK Importとは?
・やってみた
・おまけ
・まとめ
・注意事項
4
注意事項
5
注意事項
・今回お話しする取り込みの定義について
6
注意事項
・今回お話しする取り込みの定義について
  ・IaCツール管理下でリソースコントロールができることを指します
  ※fromメソッドなどを使用したリソース情報利用ではありません
7
注意事項
・タイトルのですわについて
8
注意事項
・タイトルのですわについて
  ・最近ハマっているから使っただけです、ほぼ出てきません
9
注意事項
・タイトルのですわについて
  ・最近ハマっているから使っただけです、ほぼ出てきません
・今回お話しする取り込みの定義について
  ・IaCツール管理下でリソースコントロールができることを指します
  ※fromメソッドなどを使用したリソース情報利用ではありません
10
注意事項
・タイトルのですわについて
  ・最近ハマっているから使っただけです、ほぼ出てきません
・今回お話しする取り込みの定義について
  ・IaCツール管理下でリソースコントロールができることを指します
  ※fromメソッドなどを使用したリソース情報利用ではありません
それではスタート!
11
概要
12
突然ですがみなさん
概要
13
手動でつくったリソース、眠ってませんか?
概要
14
😴
概要
15
なんとかしてIaCツールに取り込みたい
概要
16
そう思ったことありませんか?
概要
17
✊
概要
18
よくある取り込み方法おさらい
よくあるIaC取り込み方法おさらい
19
・CDK
・Terraform
・Cloudformation
よくあるIaC取り込み方法おさらい
20
・CDK
・Terraform
  ・terraform import を使う
      ・plan / show などを使って差分チェックしやすい
    ・取り込むリソース定義をtfファイルに追加してimport
・Cloudformation
よくあるIaC取り込み方法おさらい
21
・CDK
・Terraform
・Cloudformation
  ・Resource Importing機能 を使う
    ・取り込むリソース定義をテンプレートに追加してimport
      ・ymlやjsonがつらいけどまだ頑張れる
よくあるIaC取り込み方法おさらい
22
・CDK
  ・Resource Importing機能 を使う
    ・リソース定義がテンプレートに追加されていることを確認しつつimport
    ・CDKコード を取り込み用に変更して Cfnテンプレートを出力
・Terraform
・Cloudformation
よくあるIaC取り込み方法おさらい
23
・CDK
  ・Resource Importing機能 を使う
    ・リソース定義がテンプレートに追加されていることを確認しつつimport
    ・CDKコード を取り込み用に変更して Cfnテンプレートを出力
・Terraform
  ・terraform import を使う
      ・plan / show などを使って差分チェックしやすい
    ・取り込むリソース定義をtfファイルに追加してimport
・Cloudformation
  ・Resource Importing機能 を使う
    ・取り込むリソース定義をテンプレートに追加してimport
      ・ymlやjsonがつらいけどまだ頑張れる
24
あれ、CDKくん大変そうじゃない??
取り込み方法おさらい
25
😱
取り込み方法おさらい
26
それでも私はCDKを使いたいのです!!!
取り込み方法おさらい
27
使いたかったのです・・・
取り込み方法おさらい
28
😢
取り込み方法おさらい
29
そんな中、とあるアップデートが・・・
取り込み方法おさらい
取り込み方法おさらい
・CDK v2.20.0のリリース情報
取り込み方法おさらい
cdk import・・・?
・怪しげなFeature Updateが・・・
32
cdk importとは?
33
cdk importとは?
https://github.com/aws/aws-cdk/tree/main/packages/aws-cdk
・cdkのREADMEには下記記載があります
34
cdk importとは?
https://github.com/aws/aws-cdk/tree/main/packages/aws-cdk
要するにcdk importコマンドでCfnのResource Importingができるらしい
・cdkのREADMEには下記記載があります
35
cdk importとは?
https://github.com/aws/aws-cdk/tree/main/packages/aws-cdk
cdkのREADMEには下記記載があります
要するにcdk importコマンドでCfnのResouce Importingができるらしい
よさそうなのでやってみよう
36
やってみた
やってみた
37
・下記サンプルで検証します
やってみた
38
cdkで作成する部分
やってみた
39
手動で作成して取り込む部分
40
やってみた
・いつも通り楽しくコードを書いてデプロイします
やってみた
41
・今はこんな状態です
42
やってみた
・続いてS3bucketを手動で追加します
43
やってみた
・バケットポリシーは空っぽのまま
やってみた
44
・S3が追加されてこのような状態になりました
45
やってみた
念の為 cdk diff を実行してみます
しかしこの段階ではまだS3 bucketはcdkの管理下ではありません
もちろん no differencesになります
46
やってみた
・cdkのコードにS3を追加します
47
やってみた
・ちなみにこのタイミングでdiffをとると変更が発生します
・cdkのコードにS3を追加します
48
やってみた
・cdk importを実行すると下記が表示されます
※cdk deployしないように!
49
やってみた
・先ほど作成したS3bucketの名前を入力するとimportが実行されます
※cdk deployしないように!
・cdk importを実行すると下記が表示されます
50
やってみた
・再度 cdk diffをとると no differencesになっています
これで取り込みは完了しました😊
やってみた
51
・これで全てのリソースがcdk管理下になりました!
52
☺
やってみた
53
おまけ
54
おまけ
・せっかくなのでalbのアクセスログを保管するコードを追加します
55
おまけ
・cdk diff をとるとスタックの一部として動作していることがわかります
56
おまけ
・バケットポリシーもしっかり追加されていますね!
57
まとめ
58
まとめ
・既存リソース取り込みがすごく楽になった
59
まとめ
・既存リソース取り込みがすごく楽になった
  ・とくにCfnを触ることなくcdkで完結することは素晴らしい
60
まとめ
・既存リソース取り込みがすごく楽になった
  ・とくにCfnを触ることなくcdkで完結することは素晴らしい
・別のリソースでも試したがややわかりづらい部分があった
61
まとめ
・既存リソース取り込みがすごく楽になった
  ・とくにCfnを触ることなくcdkで完結することは素晴らしい
・別のリソースでも試したがややわかりづらい部分があった
  ・wafで試してみたらvalidation errorになった、要検証
今回検証した内容は下記Githubで公開していますわ∼∼∼
https://github.com/mi-kobaaa/cdk-import-sample
62
Thank you!

わたくし、やっぱりCDKを使いたいですわ〜CDK import編〜.pdf