【レポート】AWS CloudFormationテンプレートからAWS CDKへの道のり#reinvent #ZDC301

2020.12.03

どーもsutoです。本記事はAWS re:Invent 2020のセッション「The journey of an AWS CloudFormation template to AWS CDK」のセッションレポートです。

既存のAWSFargateサービスとそのAWSCodePipelineパイプラインの設定を記述しているAWSCloudFormationテンプレート(yamlファイル)からAWS CDKアプリケーションに移行するためにどのような手順で実施すればよいのかをデモを行いながら解説しています。(CDKの言語はtypescriptを使用しているようです) 本セッションに使用した環境はGithubにあります。(2020/12/3時点ですべてのファイルがアップロードされてはいなかったようですが、今後すべてのコードがアップされるかもしれません)

https://github.com/pgarbe/cdk-journey

元動画は、現在こちらで視聴可能になっています。

https://virtual.awsevents.com/media/1_w1334jnq

セッション概要

Join this session for the journey of an AWS Fargate service and its AWS CodePipeline pipeline from AWS CloudFormation templates to an AWS CDK application. The session walks you through the migration and shows you how existing templates and infrastructure can be used without breaking anything. It also demos how to run AWS CloudFormation and AWS CDK stacks in parallel until everything is migrated to a native AWS CDK application. In the end, the service will be improved with constructs from the community. If you're an AWS CloudFormation user and want to use AWS CDK, this talk is for you. Finally, learn how a migration can be done without taking too much time initially.

(DeepLによる日本語訳)

このセッションに参加して、AWS FargateサービスとそのAWS CodePipelineパイプラインパイプラインをAWS CloudFormationテンプレートからAWS CDKアプリケーションに移行するまでの旅を体験してみましょう。このセッションでは、移行の手順を説明し、既存のテンプレートやインフラストラクチャを何も壊さずに利用する方法を紹介します。また、すべてがネイティブのAWS CDKアプリケーションに移行されるまで、AWS CloudFormationとAWS CDKスタックを並行して実行する方法もデモします。最終的にはコミュニティからのコンストラクトでサービスを改善していきます。AWS CloudFormationのユーザーで、AWS CDKを使いたいと思っている方は、このトークをお楽しみください。最後に、最初はあまり時間をかけずに移行する方法を学びましょう。

  • スピーカー(敬称略)
  • Philipp Garbe
  • AWS Container Hero
  • トピック: Containers,DevOps,Management Tools & Governance
  • セッションレベル: Advanced - 300
  • セッションID: ZDC301

アジェンダ

  • Migrate the pipeline template
  • Include infrastructure template
  • Turn into native CDK app
  • Take advantage of CDK

Migrate the pipeline template

CodePipelineのCloudFormationテンプレートをCDKアプリに置き換える

  • パイプラインがステートレスに
  • 本番環境での作業リスクを軽減
  • 既存のパイプラインと並行して実行できる

デモ画面のとおり、既存のCodePipelineのテンプレートやbuildspecファイルをCDKプロジェクト内に保存しており、呼び出すべきモジュールについても動画内で説明しています。

Include infrastructure template

インフラ用(ECSなど)テンプレートをCDKアプリとして作成し、互換性を確認するためのテストをする

  • CDKアプリに統合することでリファクタリングしやすい

CloudFormationテンプレートを直接読み込むモジュールである「cloudformation-include」を使用していることがわかります。これを使って「infra」フォルダ内のcf-template.yamlを呼び出しています。

Turn into native CDK app

cf-template.yamlnの内容をCDKのコードとしてinfrastructure.tsに記述しています。

  • タスク定義のコード化することができ、Dockerイメージも自動ビルドしてアップロードできます。

  • テンプレートからCDKリソースに変換することでパイプラインのファイルを簡素化できます。

Take advantage of CDK

ここまでCDKリソースに落とすことができたら、さらにAutoScalingやCloudWatchアラーム等の設定を追加していくことで、システム全体をCDKのコードで管理できるというメリットを解説しています。

まとめ

終わりに

私もAWS CDKを使ったインフラの管理を実践していますので、CDKの良さがよくわかるセッションになっていたと思います。インフラ構成をtypescriptやPythonのような言語で管理できることは、アプリ開発者寄りのスキルセットを持つエンジニアには大きなメリットをもたらすと思います。

AWS re:Invent 2020 は 12/19(JST)まで開催中です!

参加がまだの方は、この機会にぜひこちらのリンクからレジストレーションして豊富なコンテンツを楽しみましょう!

AWS re:Invent | Amazon Web Services

またクラスメソッドではポータルサイトで最新情報を発信中です!

AWS re:Invent 2020 JAPAN PORTAL | クラスメソッド