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

CDKコード品質UP!ナイスな自作コンストラクタを作るための便利インターフェース

 CDKコード品質UP!ナイスな自作コンストラクタを作るための便利インターフェース

25/7/12 AWS CDK Conference Japan 2025にて発表
https://jawsug-cdk.connpass.com/event/356357/

Avatar for Haruka Sakihara

Haruka Sakihara

July 12, 2025
Tweet

More Decks by Haruka Sakihara

Other Decks in Technology

Transcript

  1. 自己紹介 Haruka Sakihara <主な取得資格> • ネットワークスペシャリスト試験(IPA) • AWS Certified 全15資格

    • Google Cloud Certification 7資格 • Microsoft Certified 4資格 <所属> • アクセンチュア株式会社 テクノロジー コンサル ティング本部 (2021年新卒入社) • クラウドの部署にいます <趣味> • Go言語が好きです • フィギュアスケートとサンリオも好きです <その他表彰> • 2023 Japan AWS Jr.Champion • 2024-25 Japan AWS All Certifications Engineer
  2. 今回作る題材 以下のアーキテクチャをCDKを使って構築するというケーススタディを考えてみましょう。 VPC Availability Zone 1 Availability Zone 2 Public

    subnet Private subnet Public subnet Private subnet Internet gateway Application Load Balancer Amazon Aurora instance ECS Service Topic Amazon SNS Endpoints LB Security group App Security group DB Security group
  3. 課題① MyServiceにMyDatabaseへのアクセスを許可するために、MyDatabaseはMyServiceのsgを知らな いといけない=依存しているという構図です。 VPC Availability Zone 1 Availability Zone 2

    Public subnet Private subnet Public subnet Private subnet Internet gateway Application Load Balancer Amazon Aurora instance ECS Service Topic Amazon SNS Endpoints LB Security group App Security group DB Security group ECSサービスのsgに、TCP3306番を許可しないといけない 依存関係
  4. 課題② MyServiceがSNS Publishをするために、MyServiceはSNSに依存しているという構図です。 VPC Availability Zone 1 Availability Zone 2

    Public subnet Private subnet Public subnet Private subnet Internet gateway Application Load Balancer Amazon Aurora instance ECS Service Topic Amazon SNS Endpoints LB Security group App Security group DB Security group ECSサービスに、SNS Publishを許可しないといけない 依存関係
  5. 課題まとめ 自作コンストラクタで構成を記述する際に、よく発生する「イケてないポイント」は大きく2種類で す。 • 課題その①:自作コンストラクタで定義したリソース間で通信を許可したい • イケてないやり方: セキュリティグループという内部リソースを引数に露出させて通信制御 – 自作コンストラクタで抽象度を高めて可読性を高めた書き方が台無し

    • 課題その②:自作コンストラクタで定義したリソースへのアクセス権限をIAMで与えたい • イケてないやり方: アクセスする側(ECS)にアクセスされる側(SNS)の情報を渡す – ECS内部の処理でSNSを使わなくなったときに容易にI/Fが変わるため脆弱な設計 – アクセスされる側(SNS)がアクセス制御に主体性を持つ方が望ましいので依存性の方向が逆
  6. 解決策 これを解決するために、CDKには便利なインターフェースがあります。 • 課題その①:自作コンストラクタで定義したリソース間で通信を許可したい • イケてないやり方: セキュリティグループという内部リソースを引数に露出させて通信制御 – 自作コンストラクタで抽象度を高めて可読性を高めた書き方が台無し •

    →解決策: Iconnectableインターフェースを使おう! • 課題その②:自作コンストラクタで定義したリソースへのアクセス権限をIAMで与えたい • イケてないやり方: アクセスする側(ECS)にアクセスされる側(SNS)の情報を渡す – ECS内部の処理でSNSを使わなくなったときに容易にI/Fが変わるため脆弱な設計 – アクセスされる側(SNS)がアクセス制御に主体性を持つ方が望ましいので依存性の方向が逆 • →解決策: IGrantableインターフェースを使おう!