Terraform CDK を AWS CDK 内でデプロイできる拙作の Construct Library をご紹介します。
・ユースケース/なぜ必要なのか? cdktf-aws-cdk(AWS Adapter for CDKTF) との違い
・使い方/使用例
・仕組み
CDKTF ⇔ AWS CDK 間でのトークンの変換やデプロイの仕組み等内部を知ってもらうことで、魔法感を無くし使いやすくなるのではと思います。
また、プレゼンでは CDK のトークン周りの内部構造についても多少解説できると思います。
CDKを用いてAWS上にインフラを構築しました。
開発時に遭遇したトラブルの内容と解決法について紹介します。
プログラミング関連
・クラス構成に関する思想のずれ
・配列利用によるトラブル
・設定値外だしに関するトラブル
・リファクタ時のトラブル
等
デプロイに関するトラブル
・同名リソース作成によるデプロイエラー
・スタック間参照トラブル
・リソース作成順序エラー
・スタックに作成可能なリソース数上限
等
実装が難しかった内容
・S3クロスリージョンレプリケーション
・Aurora作成時等に自動作成されるロググループの設定変更
等
GO株式会社ではこれから訪れる自動運転社会で求められる鮮度の高い地図データを実現するために、タクシーやトラックにつけられたドライブレコーダーから取得できる情報をもとに、AI技術などを用いて地図と実際の道路情報の差分を自動で抽出し、地図のメンテナンスに活用するプロジェクトを行っています。
本プロジェクトでは研究開発の開始からAWS CDKを採用し、現在では本番環境で50以上、QA環境では100を優に超えるスタックをCDKで管理運用しています。
GitHub ActionsとCDKを組み合わせたCICD環境、検証パターンごとにQA環境を自動生成する仕組みなど4年間の開発運用で得たノウハウや工夫、苦労話を余すところなくご紹介いたします!
「AWSってコードで作れるのか~」というゼロ知識からCDKを始めて早3年、色々なCDKの疑問や問題にぶつかってきました。
チームでのデプロイはどのように実現するべきか?テストは実装するべきか?スタックをどう分けるか?ひとまずサービスごとにスタックを分割して陥ったスタック間参照地獄からどう脱出するべきか?など、現在に至るまで、CDK初学者の失敗談、チームでCDK開発をする上でのしくじり、CDKあるあるなど、3年間の激闘の実録をお話しさせて頂こうと思います。
先日、ENIをCDK で作成しようとした際に、
L2コンストラクトがないことに気づき、自作に挑戦しました。
その際に得た学びについて下記の3つテーマに分類して、
皆様に共有できればと思います。
・CDKの概念やコンストラクトの構造に関する話
・設計の際に意識したこと(センシブルデフォルトの話など)
・コーディングの際にハマったこと
App Staging Synthesizerは既存のBootstrapモデルの置き換えを目指し開発が進められているモジュールです。
例えば既存のBootstrapモデルでは、同じAWSアカウントとリージョンにデプロイされるCDKアプリケーションのアセットは共有のS3バケットやECRにアップロードされます。
このモデルはシンプルな一方で、異なるCDKアプリケーション間でのリソース分離は困難になっています。
App Staging Synthesizerはこのような既存のBootstrapが抱える様々な問題点を解決するための仕組みです。
まだまだ開発途中のalpha版であり制限もありますが、いつか安定版になる日に備えて、既存のBootstrapとの違いを中心に利用方法などをご紹介出来ればと思います。
AWS CDKを利用したサービスの運用を行っていく中で、安全にデプロイを行うため、cdk diffコマンドを利用し加えた変更との差分を確認することは非常に重要です。
特にCIパイプラインで実行するようにしているケースも多いのではないでしょうか。
ここ数ヶ月の間cdk diffコマンドには様々な変更が入り、機能の拡張やバグ修正が行われています。
本セッションではそんな進化を続けているdiffコマンドについて以下を中心にご紹介します
・ 主要なオプションと使い方
・ 内部ではどのようなフローで動作しているか
・ 利用する上での注意点
基本的な使い方から内部での動作まで、diffコマンドの挙動をしっかり理解するために必要な情報に触れられればと思います。
CDKを利用するにあたって、複数環境・アカウントをまとめて管理したり、開発規模やスピードに合わせて1つのアカウントの中に複数面が必要になることを考慮するなど、さまざまなシチュエーションに対応できるようにCDKを定義をしたいなと日々考えています。
いままで色々と試行錯誤して来たパターンなどを紹介しつつ、みなさまと当日「こうするとより良いのでは!」というやり方を見つけられたらと思います。
CDK開発中に下記の悩みはありませんか?
Localstackを用いると、Docker上に仮想のAWSリソースをエミュレートできます。
このセッションでは、下記についてお話します。
CDKを通じてBedrockを使用したRAGアプリを複数のAWSアカウントにて開発・展開しています。
生成AIの分野は日進月歩であり、常に最新の情報を取り入れてアプリケーションを更新する必要があります。
しかし、生成AIのトレンドを追っている開発者は自ら開発してアプリを使用していますが、そうでない人は開発やアップデートを行わないことが問題となっていました。
この問題を解決するために、CDK Pipelineを活用し、マルチアカウントでアプリケーションを配布することにしました。これにより、最新のアップデートを効率的に展開し、すべてのユーザーが迅速に最新のアプリケーションを利用できるようになりました。
本発表では、実装例を交えながら、CDKパイプラインを用いた生成AIアプリの効率的な開発と配布の方法について説明します。
AWS CDKを用いた開発において、セキュリティを考えることは非常に重要です
今回AWS CDKを使用したインフラ構築におけるセキュリティ強化のための
最適なCI/CDパイプラインの設計について考察します
具体的には、CodeQLによる静的解析(SAST)とCheckovによるIaCセキュリティチェックを組み合わせ、
セキュアなデプロイメントを実現します
IAMロールとポリシーの適切な設定、AWS KMSやSecrets Managerを使った機密情報の保護についても触れ、
GitHub Actionsを用いて、コードの変更が行われるたびに自動的にセキュリティチェックを実行し、
潜在的な脆弱性を早期に検出・修正するフローを解説します
AWS CDKのベストプラクティスに基づいた具体的な実装例を通じて、
セキュリティ意識の高い環境の構築方法を学びましょう
私のAWS入門はCDKを用いたサーバーレス開発でした。当時書き慣れていたTypeScriptでAWSリソースを構築できる手軽さ・楽しさはとても魅力的でした。初心者にとって「すぐに動いて楽しい」という感動はとても大きいものです。
さて、今この話をするとCDKでどのように構成していたのか?と問われます。
そこで痛感したのは、"私はCDKについて何も分かっていない"ということです。
エンジニアとして開発の経験・知識を身につけた今、CDKについて学び直し、再入門してみます。そしてその題材として、一年前に書いたCDKのコードを見直したいと思います。
【話すこと】
AWS CDKにまつわる基本的な概念のおさらい
初心者目線でAWS CDKのベストプラクティスを知る
システム開発の経験を通して得た保守しやすいコードの書き方を踏まえてリファクタリングを考える
IaCにおける“個人開発から実務案件へ”
私は業務経験半年ほどのバックエンドのジュニアエンジニアです。AWS関連の業務に携われるようになるために、ハッカソンに参加してCDKを使用してWebアプリケーションのインフラ構築に挑戦してみました。L2コンストラクトを用いた実装に挑戦し、得られた知見や感想をジュニアエンジニアの視点からお話しします。
具体的には、マネジメントコンソールで時間がかかっていたESConFargateへのコンテナデプロイがCDKを使うことで一瞬で完了する感動や、CloudFormationスタックがロールバックできずに困惑した経験など、CDK初心者が直面しがちな課題とその解決策について共有します。
このセッションを通じて、CDK未経験の方々のハードルを少しでも下げ、ジュニアエンジニアの視点からCDKの魅力と挑戦する価値を伝えたいと考えています。
IaCツールはインフラ環境をソースコードとして扱うことができ、構築・管理には非常に便利なものです。特にAWS CDKはAWS環境構築において多くの利点を提供します。
しかし、簡単な操作でインフラ環境を操作できるということは、その分誤って環境を破壊してしまうリクスも伴います。
今回、私がCDKを利用して構築した案件の本番環境で誤ってリソースを削除してしまった実例をご紹介します。
・cdk importでの注意点
・cdk diffを取っても油断してはいけない点
これらの具体的なシナリオ、原因、再発防止策についてお話し、CDKをより安全かつ効果的に利用するための一助になれば幸いです。
CDKの魅力といえば、開発でなじみのある言語を使って、CloudFormationテンプレートファイルよりも簡潔に記述できることです。
私自身あまりIaCを記述する業務担当ではなかったのですが、CDKを触ってみて、「IaCがこんなに楽しく書けるの!?」と感動したことを覚えています。
ただし、この感動はイマイチ人には理解されない部分も多いと思います(エンジニアあるある)。
社内の勉強会の開催やハンズオンを作ってみても、全く反応が無かったり・・・
発表では私が感動したCDKのポイントや、CDKの魅力を社内メンバーに知ってもらうために取り組んだ内容をお話しでいればと思います。
CDKで知りたいことは、すべてBLEAから学んだ!
AWSアカウントを使い始める前にやっておきたいセキュアな共通設定を、CDKテンプレートのサンプル実装として提供しているのがBaseline Environment on AWS(BEA)です。BLEAを活用することで、セキュリティガバナンスの実利を取りながら、AWS CDKにも入門した私の経験を共有します。
BLEA、CDKの魅力と、CDKの世界に飛び込む決定的なキッカケをお伝えできればと思います。
「CDKコントリビュートって上級者がやるものでしょ。」
そんなふうに考えていた時期が私にもありました…
本セッションではコントリビュート初心者の私が実際に約2ヶ月間取り組んだ経験を元に、コントリビュート未経験者・初心者にとって役立つ内容をご紹介します。
・どのようにコントリビュートに取り組んだか
・実際に取り組んでみてどうだったか、得られたこと
・コントリビュートにおいてハマったこと、Tips
・コントリビュートあるある
ほか
本セッションを通して一人でも多くの方がコントリビュートに興味を持っていただき、AWS CDKの発展につながれば幸いです。
2023年にアップデートされたBLEA(Baseline Environment on AWS)のv3.0.0では、これまでのAWS CDKの開発の常識とは異なる新しいベストプラクティスが数多く採用されました。
今回、社内案件の開発で基盤をAWS CDKで構築した際、このベストプラクティスをできる限り取り込んだことで、今まで以上に開発を効率的に進めることができましたので、導入したベストプラクティスとその他一緒に行った工夫点をご紹介したいと思います。
AWS Amplify は Webフロントエンドとモバイルアプリ向けのフレームワーク、ツール群ですが、2024/5/6にGAになった Amplify Gen2 は AWS CDK をベースに新たに作成されたツールです。
Amplifyアプリのバックエンド構築機能を提供する @aws-amplify/backend のアーキテクチャを通してAmplify Gen2がどのようにAWS CDKを利用しているのかについてお話ししたいと思います。そして、どのようなAWS CDKのベストプラクティスが採用されているのかについてもお話しします。
今やIaC(Infrastructure as Code)もすっかりメジャーになりましたが、一言に「IaCツール」と言っても、AWS CDKを始めTerraform, Serverless Framework, Pulumi...など
たくさんのIaCツールが存在します。
そして、プロジェクトで採用するIaCツールを選定する際、どのような基準で選定すればよいのか...と頭を悩ませる方も多いのではないかと思います。
そこでこのセッションでは、私が実際に新規プロダクトでAWS CDKを採用した際、「どのような基準で」そして「どのような点を考慮して」AWS CDKを採用したのかを、実例を交えて紹介しようと思います。
皆さんがこれからIaCツールを選定する際の参考になればと思います。