AWS CDK にフォーカスしたオンラインイベント CDK Day が開催されたので、その参加レポ (という名のメモ) です。全部英語のセッションで字幕などもなかったので、なんとなく聞き取れた部分とスライドから読み取れた部分、関連するリンクなどをメモしています。

目次

CDK Day

AWS CDK にフォーカスしたオンラインイベントで、 東部標準時 (EDT) の 9月30日 10:00 〜 15:00 に開催されました。時差の関係で、協定世界時 (UTC) では 30日 14:00 〜 19:00 、日本標準時 (JST) では 30日 23:00 から翌 10月1日 4:00 の開催でした。

Twitter のハッシュタグは #CDKDay でした。

タイムテーブル

時間 (日本時間) タイトル
11:00 PM Keynote
11:20 PM Lightning Talk: The cdk8s, the why and how - Matthew Bonig
11:30 PM CDK 101 - Tatenda Gibson
11:40 PM projen - a CDK for software project configuration - Elad Ben Israel
11:50 PM Our Saas Journey with CDK - Ran Isenberg
12:00 AM Building Real-time Back Ends on AWS with AppSync and CDK - nader dabit
12:30 AM CDK and FedRAMP Compliance - Julia Jacobs
1:00 AM Lunch
1:30 AM Getting started with CDK for Terraform and Python - Charles McLaughlin
2:00 AM Mix and Match CDK Constructs between AWS CDK, CDK8s and CDKTF - Sebastian Korfmann
2:10 AM AWS config with CDK - chitranjali edpuganti
2:20 AM Moving from CloudFormation YAML to CDK - Benefits, How to do it in a production system, and More! - Andrew Nguyen
2:30 AM Serverless IoT with Greengrass, Ansible and AWS CDK - Luca Bianchi
3:00 AM Multi-account and multi-region - Deploy your CDK app to multiple environments - Thorsten Höger
3:30 AM The good, the bad and the ugly of CDK adoption in a big enterprise - Mat Jovanovic
3:40 AM Prototyping a CDK for Azure - Andreas Heumaier
3:50 AM Closing Remarks

セッションレポート

ここからは各セッションのレポート (メモ) です。

Keynote

Lightning Talk: The cdk8s, the why and how - Matthew Bonig

  • Matthew Bonig (@mattbonig)

  • k8s manifest

    • 読みやすいけど、 not DRY
  • Helm Charts

    • テストしやすいけど、 すごく表面的
  • CDK を使うメリット

    • multi-lingual (TypeScript, Python, Java, C#)
    • 読みやすい
    • ユニットテストしやすい
  • cdk8s と cdk8s+ は現在 α 版

CDK 101 - Tatenda Gibson

Overview

  • 2019/7 リリース
  • JavaScript, TypeScript, Python, Java, C#

Why CDK?

  • CFn = Pain
  • 新たに学ぶことが少ない
  • コンストラクトによってハイレベルに抽象化された方法でリソースを定義できる

Comparison with SAM

SAM CDK
YAML or JSON プログラム言語
local emulation をサポート local testing をサポートしていない
サーバーレスリソースのみデプロイ すべてのリソースをデプロイ

Next Steps…

projen - a CDK for software project configuration - Elad Ben Israel

eladb/projen

Our Saas Journey with CDK - Ran Isenberg

Building Real-time Back Ends on AWS with AppSync and CDK - nader dabit

GraphQL

  • query language for API
  • 構成要素
    • Schema
    • Resolvers
    • Data source
      • Database
      • Serverless Function
      • HTTP endpoint

AWS AppSync

  • マネージドな GraphQL サービス
  • IAM, Cognito, API Keys, OIDC によるセキュリティ

Building AWS AppSync with CDK

  • Install CDK packages (AppSync + other data sorce)
  • Create configure an API
    • スキーマの場所を指定
    • 認証方法を指定 (API Key)
    • xrayEnablesd: true
  • Add data source
    • Lambda 関数
  • Add resolvers to data source
  • (LIVE Demo)

CDK and FedRAMP Compliance - Julia Jacobs

Getting started with CDK for Terraform and Python - Charles McLaughlin

Mix and Match CDK Constructs between AWS CDK, CDK8s and CDKTF - Sebastian Korfmann

  • Sebastian Korfmann (@skorfmann)

  • CDK Construct Level

    • Level 3 - パターン
      • Load balanced Fargate Service
    • Level 2 - API
      • ECS Fargate Service, Application Loadbalancer
    • Level 1 - from CFn spec
      • CfnEcsService, CfnEcsTaskDefinition, CfnApplicationLB, CfnTargetGroup, CfnRule
  • skorfmann/cfn2tf

    • Converts CloudFormation resources to Terraform resources.

AWS config with CDK - chitranjali edpuganti

  • CDK で AWS Config を構築する話

Moving from CloudFormation YAML to CDK - Benefits, How to do it in a production system, and More! - Andrew Nguyen

Benefit

  • CDK は CFn よりもコード量が大幅に少なくなる
  • 開発ツールの恩恵を受けられる
    • IDE サポート
    • プログラム言語
    • パッケージ管理 (Maven, npm, pip)
    • CDK コミュニティ
  • コミュニティで知見をシェアできる

Migration

  • SQS + Lambda + SNS の例
  • マイグレーション
    1. CDK プロジェクトの作成
    2. CDK で一部のリソースを構築する
      • まずは SNS のみ構築
    3. 旧リソースを CDK で作成したリソースに置き換える
      • Lambda の向き先を CDK で作成した SNS に変更
    4. ステップ 2,3 を繰り返す
      • SNS に続いて、 Lambda -> SQS の順に移行
    5. 旧リソースを削除する
    6. Done!

more

Serverless IoT with Greengrass, Ansible and AWS CDK - Luca Bianchi

Multi-account and multi-region - Deploy your CDK app to multiple environments - Thorsten Höger

Create Demo Project (HTTP API)

Deploy to two different Region (and Account)

  • cdk.Stage を extends した class (デモでは下記のような AppStage) を作成

    class AppStage extend cdk.Stage {
      constructor(scope: cdk.Construct, id: string, props: cdk.StageProps) {
        super(scope, id, props);
        ...
      }
    }
    
  • pipeline.addApplicationStage()env.region で別リージョンを指定

    pipeline.addApplicationStage(
      new AppStage(this, 'app-dev-fra', {
        env: {
          account: 'XXXXXXXXXXXX',
          region: 'eu-central-1'
        }
      })
    );
    pipeline.addApplicationStage(
      new AppStage(this, 'app-dev-fra', {
        env: {
          account: 'XXXXXXXXXXXX',
          region: 'eu-west-1'
        }
      })
    );
    

The good, the bad and the ugly of CDK adoption in a big enterprise - Mat Jovanovic

Bad

  • external colab
    • いろんなツール (Terraform) 、言語 (Python, TypeScript, Java) 、アーキテクチャ (k8s) を使いたい人がいる

Ugly

  • it operations
    • 一つの環境 (CDK + Python) に決めると怒る人がいる

Prototyping a CDK for Azure - Andreas Heumaier

まとめ

AWS CDK にフォーカスしたオンラインイベント CDK Day のレポート (という名のメモ) でした。

CDK に関するセッションのみということで、非常に濃い CDK タイムでした。すべて英語のセッションで、時間帯も深夜帯ということでなかなか頭が回らない中で聞いていましたが、面白い話もいくつかありました。

特に、 CDK for Terraform の話は Keynote や複数のセッションで触れられていました。個人的には Terraform 始めようと思っているところなので、 CDK for Terraform も合わせて使ってみようと思います。

今回は AWS CDK についての話を聞くというのはもちろん、海外のセッションを聞いてみるというのも一つの目的でした。普段から英語のドキュメントを読むことも多いので英語のセッションもなんとなくは理解できるかなと思っていましたが、全然ダメでした。やはり Reading と Listening では勝手が全然違いますね…ということで今回のメモは本当のメモレベルになってます。

セッションの動画はあとからアップされる (?) みたいなので、気になる方はぜひそちらのほうを確認してみてください。


以上、よっしー (michimani) でした。

Share to ...

0

Follow on Feedly