Upgrade to Pro — share decks privately, control downloads, hide ads and more …

俺的CDKアップデートin2025 〜Enhanced L1にアラカルト添え〜

俺的CDKアップデートin2025 〜Enhanced L1にアラカルト添え〜

JAWSUG CDK支部 #24での発表資料です。独断と偏見で2025年のCDKアップデートを振り返ります。

Avatar for kazuho cryer-shinozuka

kazuho cryer-shinozuka

February 23, 2026
Tweet

More Decks by kazuho cryer-shinozuka

Other Decks in Programming

Transcript

  1. クライヤー篠塚 ⼀帆 @nixieminton @badmintoncryer AWS CDK Top Contributor & Community

    Reviewer 179 merged PRs / 116 reviewed PRs 19 / 1664 contributors (AWS社CDKチーム以外では世界2位🥈) APJC community leaders awards 2025 AWS community builders (Dev Tools) IPA資格 ネスペ, セキスペ, エンスペ バドミントンはキャリア20年! 2025年は年代別(30歳以上) 全国ベスト16でした🎉 APJC community leaders awards 2025に選出! re:invent不参加なので沼⼝さんが代理受賞
  2. おさらい https://aws.amazon.com/jp/blogs/aws/boost-your-infrastructure-with-cdk/ CDKアプリケーションの構成 - App - Stack - Construct Constructの構成

    - L1 (Low level) - Cloudformationリソースと1対1対応 - ⾃動⽣成 - Cloudformation更新に⾃動追従 - L2 (High level) - L1を抽象化 - 型、関数、引数チェック、etc.. を提供 - L3 (Pattern) - 複数のL1, L2を更に抽象化 3
  3. Cloudfront VPC Origins 7 https://github.com/aws/aws-cdk/pull/33318 https://mazyu36.hatenablog.com/entry/2025/02/27/101630 ALB, NLB, EC2 instanceへの容易なorigin確⽴が可能!

    ‧待望の新機能VPC OriginsをCDKで簡単に作成! ‧Cloudfrontからoriginへの通信を許可するSG設定に⼀癖あり ‧stableなaws-cdk-libモジュールへのコミュニティからのL2追加がすんなり受け⼊れられた初のケース ‧マージまで2週間!!!!!!
  4. Aurora Clusterのlookup 10 https://github.com/aws/aws-cdk/pull/34849 ‧IaC管理しづらいAuroraを容易にlookupできる選択肢が追加 ‧元々lookup関数はCLIからリソース情報を取得してAppに渡すcontext providerの実装が⾯倒だったが、  cloud control APIを汎⽤的に叩けるものが追加

    ‧⼤変容易にいろんなlookupが実装できるステキな時代になっています iam.Role by go-to-k, ec2.PrefixList by tietew, ecr.Repository by badmintoncryer, … ‧マージまで1週間 クラスターIDから既存のAurora clusterをlookup
  5. EKS V2 13 EKS Cluster V1 module カスタム リソースで構築 V2

    module Cloudformation で構築 V1とV2で記述内容はほぼ同⼀ ‧カスタムリソースで構築していたものをcloudformationでの構築に置き換えるケースはたまにある ‧毎回V2として別コンストラクト作成されてる気がする ‧既にGAさせるPRも発⾏済!⾼速alphaモジュール卒業でした
  6. Enhanced L1 18 ⾃動⽣成されるL1⾃体の 機能拡張を⾏うことで、 L2に頼らずにユーザビリティの 向上を図る 2024/11にRFCが作成される • バリデーション

    • L1インターフェース導⼊ • Grantsクラスの⾃動⽣成 • stringよりも型安全な引数 https://github.com/aws/aws-cdk-rfcs/pull/657
  7. 提案4 Stringよりも型安全な引数 22 ACM の証明書検証⽅法は ʻEMAIL’, ʻDNS’, ʻHTTP’ の3種類の⽂字列だけが許容 Cloudformation定義

    ʻEmail’, ʻemail’, ʻmail’なども型的にはOKだが デプロイ時にエラーとなる L1 L1の引数はString型 型安全に引数を渡せる
  8. 提案 提案4 Stringよりも型安全な引数 23 ACM の証明書検証⽅法は ʻEMAIL’, ʻDNS’, ʻHTTP’ の3種類の⽂字列だけが許容

    Cloudformation定義 ʻEmail’, ʻemail’, ʻmail’なども型的にはOKだが デプロイ時にエラーとなる L1 stringより型安全な引数型にする L1の引数はString型 例: Enum型を⾃動⽣成 型安全に引数を渡せる 「L1にstringより型安全な引数を渡せるようにする」 後で出てきます
  9. 提案4がハードル⾼すぎてRFCはペンディング 26 型安全な引数の導⼊があまりにもハードルが⾼く、 CDKv3へのアップグレードが不可避ということでペンディング 「requiredな引数の場合、 既存とv2引数を両⽅optionalにするので 型安全性が落ちない?」 AWSJ 友岡さん (@tmokmss)

    後藤さん (@go-to.k) 「AspectsでL1引数のバリデーションを 独⾃実装してる場合に書き直しが必要...」 「xxxProps_v2として、 既存の引数と並列にEnum型の引数を追加」 提案された実装案 CDKでは引数のunion型が許容されないのでボツ シンプルな解決策 全世界から集まる数多の反対意⾒
  10. 引数におけるunion型 52 各⾔語版のCDKコードを ⽣成するツール string | number Union[str, Union[int, float]]

    Object interface{} (実質any) Javaやgolangではunionを表現できず、緩い制約の型に劣化してしまう。
  11. 引数におけるunion型 53 各⾔語版のCDKコードを ⽣成するツール string | number Union[str, Union[int, float]]

    Object interface{} (実質any) Javaやgolangではunionを表現できず、緩い制約の型に劣化してしまう。 L1におけるReference Interface | stringもこの問題に直⾯するが、 利⽤頻度の少ないgo版CDKなどでのデメリットを上回るメリットがあると判断され、 例外的に採⽤に⾄っている
  12. Enhanced L1での提案 56 Enum型を⾃動⽣成する (RFCでの提案) → ボツ 実現⽅法 Reference Interfaceを

    引数の型にする 当初の⽬的を「Reference Interface」活⽤という形で ⼀部実現したと解釈しています RFCでの⽬的
  13. ③ XxxGrantsを簡単に作れる 61 L1でのgrant関数の使い⽅ (再掲) L2内部でのgrant実装 (再掲) 引数はL1 引数はL2 TopicGrantsクラスの実装

    fromTopic()の引数はReference Interface!! だからL1とL2を受け取れる L1とL2どちらも受け取れるありがたみが 伝わったでしょうか? ⾮常に応⽤の幅が広いステキなアップデート だと感じています
  14. まとめ 62 • L2アップデートアラカルト in 2025 ◦ 今年も⽇本からのアツいアップデートがたくさんありました!! ◦ 特にRemovalPoliciesは明⽇から全員活⽤できる新機能

    ▪ Thank you @watany • Enhanced L1 ◦ L1⾃体の機能拡充が図られる新しい動き ◦ RFCはペンディングとなったが、いくつかは既に実装済み ▪ L1インターフェース導⼊ ▪ Grantsクラスの⾃動⽣成 ▪ stringよりも型安全な引数 ◦ 「L1とL2の差分を縮める」という考え⽅はMixinにも引き継がれているはず ◦ バリデーションもいつかくるかも? ◦ L1コンストラクトにも使いこなし⽅が要求されてきました。 みんなでベスプラを模索していきましょう!