[レポート] CDK Day のセッション聴講メモ #CDKDay
2020-10-01AWS CDK にフォーカスしたオンラインイベント CDK Day が開催されたので、その参加レポ (という名のメモ) です。全部英語のセッションで字幕などもなかったので、なんとなく聞き取れた部分とスライドから読み取れた部分、関連するリンクなどをメモしています。
目次
- CDK Day
- タイムテーブル
-
セッションレポート
- Keynote
- Lightning Talk: The cdk8s, the why and how - Matthew Bonig
- CDK 101 - Tatenda Gibson
- projen - a CDK for software project configuration - Elad Ben Israel
- Our Saas Journey with CDK - Ran Isenberg
- Building Real-time Back Ends on AWS with AppSync and CDK - nader dabit
- 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
- AWS config with CDK - chitranjali edpuganti
- Moving from CloudFormation YAML to CDK - Benefits, How to do it in a production system, and More! - Andrew Nguyen
- 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
- The good, the bad and the ugly of CDK adoption in a big enterprise - Mat Jovanovic
- Prototyping a CDK for Azure - Andreas Heumaier
- まとめ
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
- CDK for Terraform (
@build1point0
)
- CDK for Terraform: Enabling Python & TypeScript Support
- TypeScript 、 Python
- 本家 CDK とは独立している
Lightning Talk: The cdk8s, the why and how - Matthew Bonig
-
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
-
eladb/projen: A new generation of project generators
- JS で記述された定義から、
package.json
,tsconfig.json
, GitHub workflows の定義などのプロジェクト構成ファイル群を生成 - (LIVE Demo)
- JS で記述された定義から、
Our Saas Journey with CDK - Ran Isenberg
- Ran Isenberg (@IsenbergRan)
- CyberArk
- lower level CFn class を使うことを恐れないで
- チーム内で Constructs を共有すればコードの重複を防いで開発時間を短縮できる
- About CyberArk Engineering – Medium
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
- Julia Jacobs (@jewelsjacobs)
- Acxiom (IPG)
- CMS Developer Tools
- AWS での FedRAMP 対応
- マイグレーション
- AUtherntication
- Firebase OAuth -> Amazon Cognito
- Data
- mLab mongoDB -> Heroku PostgreSQL -> RDS PostgreSQL
- API
- GraphQL Server Koa Heroku -> GraphQL Server Koa ECS/Fargate
- Frontend
- React/Redux Heroku -> React/Redux CloudFront
- AUtherntication
- セッション資料
Getting started with CDK for Terraform and Python - Charles McLaughlin
- CDK for Terraform
- Python または TypeScript で実装
- Python の場合
cdktf init --template="python-pip" --local
- terraform-cdk/python.md at master · hashicorp/terraform-cdk
- TypeScript の場合
cdktf init --template="typescript" --local
- terraform-cdk/typescript.md at master · hashicorp/terraform-cdk
- Python の場合
- LIVE Demo では Static Webisite Hosting を有効にした S3 バケットを Python プロジェクトで作成
Mix and Match CDK Constructs between AWS CDK, CDK8s and CDKTF - Sebastian Korfmann
-
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
- Level 3 - パターン
-
- 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 の例
- マイグレーション
- CDK プロジェクトの作成
- CDK で一部のリソースを構築する
- まずは SNS のみ構築
- 旧リソースを CDK で作成したリソースに置き換える
- Lambda の向き先を CDK で作成した SNS に変更
- ステップ 2,3 を繰り返す
- SNS に続いて、 Lambda -> SQS の順に移行
- 旧リソースを削除する
- Done!
more
Serverless IoT with Greengrass, Ansible and AWS CDK - Luca Bianchi
-
RaspberryPi CM3 のコアセンサーについて
-
AWS IoT Greengrass
-
IoT アーキテクチャ
- センサーデバイス
- リモートボード
- ローカルビジネスロジック
- IoT トピック
- AWS IoT Greengrass core
- Lambda 関数 (Cloud へのプロキシ)
-
(… CDK の話は?)
Multi-account and multi-region - Deploy your CDK app to multiple environments - Thorsten Höger
Create Demo Project (HTTP API)
- API Gateway + Lambda + DynamoDB
- CodePipeline
- CDK Pipeline は developers preview (v1.64.1)
- aws-cdk/packages/@aws-cdk/pipelines at v1.64.1 · aws/aws-cdk
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' } }) );
Link
The good, the bad and the ugly of CDK adoption in a big enterprise - Mat Jovanovic
- Mat Jovanovic 🏂 (@MatJovanovic)
- 100+ AWS Account
- 5,500 CFn Stacks
- Mats Cloud
Bad
- external colab
- いろんなツール (Terraform) 、言語 (Python, TypeScript, Java) 、アーキテクチャ (k8s) を使いたい人がいる
Ugly
- it operations
- 一つの環境 (CDK + Python) に決めると怒る人がいる
Prototyping a CDK for Azure - Andreas Heumaier
- Andreas Heumaier (@aheumaier)
- 多くの場合、 API リソースの定義に JSON スキーマを使う (Azure でも同じ)
- CDK で JSON スキーマを生成する
@armkit/core
を import- Azure/armkit: The Cloud Development Kit for Azure
- Yetics/armkit: The Cloud Development Kit for Azure
- 共通のコードベースを使うことでミスをハマりどころを回避できる
まとめ
AWS CDK にフォーカスしたオンラインイベント CDK Day のレポート (という名のメモ) でした。
CDK に関するセッションのみということで、非常に濃い CDK タイムでした。すべて英語のセッションで、時間帯も深夜帯ということでなかなか頭が回らない中で聞いていましたが、面白い話もいくつかありました。
特に、 CDK for Terraform の話は Keynote や複数のセッションで触れられていました。個人的には Terraform 始めようと思っているところなので、 CDK for Terraform も合わせて使ってみようと思います。
今回は AWS CDK についての話を聞くというのはもちろん、海外のセッションを聞いてみるというのも一つの目的でした。普段から英語のドキュメントを読むことも多いので英語のセッションもなんとなくは理解できるかなと思っていましたが、全然ダメでした。やはり Reading と Listening では勝手が全然違いますね…ということで今回のメモは本当のメモレベルになってます。
セッションの動画はあとからアップされる (?) みたいなので、気になる方はぜひそちらのほうを確認してみてください。
comments powered by Disqus