佐藤直哉(11)30はじめにCX事業本部@札幌の佐藤です。CDKのConstructについて説明していきます。この記事に出てくるサンプルコードは以下のリポジトリにありますので、参考にしてみてください。Workshopを試した程度の知識を前提にしています。やっていないという方、とてもわかりやすいWorkshopなのでぜひやってみてください。CDKは、基本概念として以下の3つの要素によって構成されています。複数スタックの依存関係などを定義します。StackCloudFormationスタックと1:1で対応します。AWSへのデプロイはこのスタック単位で行います。ConstructデプロイするAWSリソース。使用してAWSリソースを定義していきます。今回は、この中のConstructについて焦点を当てていきます。Libraryというライブラリを使ってAWSリソースを作成していきます。Libraryには以下の3つの種類があります。CDKがCloudFormationの各リソースを抽象化してくれているライブラリです。クラスには、addEventSource(source)のような直感的にリソースを定義できる便利なメソッドがあり、CloudFormationを使うよりも簡単に各リソースを定義することができます。ほとんどの場合は、こちらを使った方が便利です。previewとなっているリソースなどはまだまだ対応されていない状況です(aws-iot、aws-greengrassなど)。Constructが提供されるのも時間の問題かと思います。Constractを使って定義することになります。Constructsより低レベルなライブラリで、CloudFormationの各リソースと1:1の関係になっています。クラスにCfnプレフィックスがついているものがこれに該当します。Constructを使って、CloudFormationのYAML/JSONを手動でTypeScriptやPythonに変換することもできます。Constructがあるならばそちらを使った方が簡単にリソースを定義できるためオススメです。細かいパラメーターの設定をしたいなどの要件がある場合にこちらを使えば良いと思います。ように、複数のリソースを含む一般的なパターンを定義しているライブラリです。このクラスのコンストラクタに、必要なリソースのインスタンスを渡すだけで、一般的なパターンのインフラ環境を簡単に作成することができます。Construct、Patternでそれぞれデプロイしてみた実際に、上記の3つのライブラリを使用して、AWSリソースを作成してみたいとおもいます。Constructで実装します。Gatewayのリソースを作成します。Constructを使えば30行ほどで書けてしまいます。Responseうまく動いているようです。Gatewayを実装します。こちらの場合は、上記に比べて抽象化がなされていないためCloudFormationと同じように、一つ一つ定義していくことになります。Constractでは120行ぐらい書かなければいけませんでした。Constructと比べて、コード量は4倍近くになっています。Constractに比べて冗長な記述になってしまいます。Response先ほどと同じく動作しています。Constructで、かなり行数が違っていることがわかると思います。CDKが抽象化してくれているので、内部で色々なリソースを作ってくれています。そのため行数を少なく記述できます。Constructを使用するのがオススメです。Constructの他にも、Patternsというさらに一般的なパターンとして抽象化されているライブラリがあります。CDK公式で提供しているPatternsは以下の2つがあります。Balancerのインフラ環境を作ってみます。synthコマンドで、生成されたCloudFormationテンプレートを確認してみます。us-west-2たった30行ほどのコードですが、500行越えのCloudFormationテンプレートが出力されました。以下のリソースが作成されているのが確認できます。DefinitionPatternライブラリが、いかにCloudFormationテンプレートを抽象化してくれているかがわかるかと思います。30行ほどのコードであらかじめ定義された一般的なパターンのインフラ環境をデプロイできるというのは、とても強力な機能です。標準のpatternライブラリ自体は2種類とまだ少ないですが、今後のアップデートに期待です。AwsCdkPatternsConstructLibrarySampleStack動作確認デプロイできたらCloudFormationの出力タブにELBのURLが出力されているため、それをクリックしてみます。以下のように、ECS、Fargate上で動いているPHPのサンプルアプリケーションが表示されれば成功です。Libraryを理解するための記事でした。DevDayでもCDKのセッションがあったりと、CDK界隈が盛り上がってきているなと感じています。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。カフェ店長のオカノです。今日はオフィスに用があるので、通勤ラッシュを避けて出社しました。この子は新メンバーのさめくんです。在宅勤務が推奨されているのでオフィスが閑散としており、すこしさみしそうです。使いたいときの注意点を書きました。本が出ていたので読んでみたところよかったので紹介させていただきます。