Slide 1

Slide 1 text

AWS CDK 経験者が CDK for Terraform 使って 苦労したこと&よかったこと @maniawase2

Slide 2

Slide 2 text

What’s CDK for Terraform?

Slide 3

Slide 3 text

What’s CDK for Terraform? (公式から翻訳)https://developer.hashicorp.com/terraform/cdktf 使い慣れたプログラミング言語を使用してインフラストラクチャを定義およびプロビジ ョニングできます。 HashiCorp Configuration Language (HCL) を学習しなくても Terraform エコシ ステム全体にアクセスできます。 (現在、最新バージョンは v0.20 なので注意)

Slide 4

Slide 4 text

What’s CDK for Terraform? (公式から翻訳)https://developer.hashicorp.com/terraform/cdktf 使い慣れたプログラミング言語を使用してインフラストラクチャを定義およびプロビジ ョニングできます。 HashiCorp Configuration Language (HCL) を学習しなくても Terraform エコシ ステム全体にアクセスできます。 (現在、最新バージョンは v0.20 なので注意) AWS CDK の最後に動くものが CloudFormationではなく Terraformになったもの TypeScript, etc… Cloudformation

Slide 5

Slide 5 text

苦労したこと&よかったこと

Slide 6

Slide 6 text

当時のスキル ・AWS自体:4年 ・AWS CDK:3年 ・CloudFormation:2, 3ヶ月 ・Terraform:なし

Slide 7

Slide 7 text

よかったこと 苦労したこと ・Terraformの知識がまあまあ必要 ・コードがCDKのL1ライクでしか書けない ・リファレンスが見にくい(未完成?) ・Terraformの恩恵がすごい ・クロスリージョン/アカウントも同一スタックで作れる ・AWS以外のリソースも作れる ・ignore_changes で作成したリソースを管理対象外にできる ・local-exec でローカルで(やろうと思えば)なんでもできる

Slide 8

Slide 8 text

よかったこと 苦労したこと ・Terraformの知識がまあまあ必要 ・コードがCDKのL1ライクでしか書けない ・リファレンスが見にくい(未完成?) ・Terraformの恩恵がすごい ・クロスリージョン/アカウントも同一スタックで作れる ・AWS以外のリソースも作れる ・ignore_changes で作成したリソースを管理対象外にできる ・local-exec でローカルで(やろうと思えば)なんでもできる かるーくどんなことに使ったか お話します

Slide 9

Slide 9 text

苦労したこと コードがCDKのL1ライクでしか 書けない

Slide 10

Slide 10 text

コードがCDKのL1ライクでしか書けない ・AWS CDK ではL2コンストラクトがとても便利 ・作成したいリソースを完全に理解してなくても作れてしまう ・CloudFormation を理解してなくても使えてしまう ・しかし、CDK for Terraform では、L1ライクでしか書けない ・Terraformがそのままプログラムで書けるようになっただけ (結局Terraformのリファレンスを見ることに...)

Slide 11

Slide 11 text

コードがCDKのL1ライクでしか書けない 例)CodePipelineを作成するコード(CDK)

Slide 12

Slide 12 text

コードがCDKのL1ライクでしか書けない 例)CodePipelineを作成するコード(CDK for Terraform) ちっさ。見えない

Slide 13

Slide 13 text

コードがCDKのL1ライクでしか書けない 例)CodePipelineを作成するコード(CDK for Terraform)

Slide 14

Slide 14 text

コードがCDKのL1ライクでしか書けない 例)CodePipelineを作成するコード(CDK for Terraform) 適切なIAMロールの 作成が必要

Slide 15

Slide 15 text

コードがCDKのL1ライクでしか書けない 例)CodePipelineを作成するコード(CDK for Terraform) 適切なIAMロールの 作成が必要 必須のパラメータが 多い

Slide 16

Slide 16 text

コードがCDKのL1ライクでしか書けない 例)CodePipelineを作成するコード(CDK for Terraform) 適切なIAMロールの 作成が必要 必須のパラメータが 多い リソース間の参照が 文字列

Slide 17

Slide 17 text

ただし、コレはコレで 悪いわけではない

Slide 18

Slide 18 text

ただし、コレはコレで悪いわけではない 例)CodePipelineを作成するコード(CDK)

Slide 19

Slide 19 text

ただし、コレはコレで悪いわけではない 例)CodePipelineを作成するコード(CDK)

Slide 20

Slide 20 text

ただし、コレはコレで悪いわけではない 例)CodePipelineを作成するコード(CDK) S3のServerSideEncryptionByDefaultが 「SSEAlgorithm: aws:kms」のためKMSが作られる

Slide 21

Slide 21 text

よかったこと Terraformの恩恵がすごい

Slide 22

Slide 22 text

Terraformの恩恵がすごい(1) ・ignore_changes で作成したリソースを管理対象外にできる ・ECSタスクとかは更新しないようにできる

Slide 23

Slide 23 text

Terraformの恩恵がすごい(1) ・ignore_changes で作成したリソースを管理対象外にできる ・ECSタスクとかは更新しないようにできる オートスケーリングで タスク数が変わっても無視してくれる CDでタスク定義が 変わっても無視してくれる

Slide 24

Slide 24 text

Terraformの恩恵がすごい(2) ・local-exec でローカルで(やろうと思えば)なんでもできる ・ECR作成して、ローカルBuildしてPush。なんてこともできる

Slide 25

Slide 25 text

Terraformの恩恵がすごい(2) ・local-exec でローカルで(やろうと思えば)なんでもできる ・ECR作成して、ローカルBuildしてPush。なんてこともできる ECR作成 ①ECRログイン ②ローカルで docker build ③ビルドイメージにタグ付け ④ECRにPush 曲芸!

Slide 26

Slide 26 text

今後どちらを使っていくか

Slide 27

Slide 27 text

AWS CDKを使います !?

Slide 28

Slide 28 text

AWS CDKを使います ・今回話していませんが、AWS CDK が便利すぎる ・L2コンストラクトで、関連リソースを自動で作ってくれるのがとにかくラク ・AWS CDK(TypeScript)のリファレンスがすごい見やすい ・加入していればですが、AWSサポートが手厚すぎる ・CDK for Terraform にも期待! ・個人的に Terraform vs CloudFromation だと、Terraformのほうがいい ・Terraform使っている人には学習コストかなり少ない! ・まだ v0.20。今後に期待して星5つです ★★★★★

Slide 29

Slide 29 text

END