Terraform CDK を AWS CDK 内でデプロイできる拙作の Construct Library をご紹介します。
・ユースケース/なぜ必要なのか? cdktf-aws-cdk(AWS Adapter for CDKTF) との違い
・使い方/使用例
・仕組み
CDKTF ⇔ AWS CDK 間でのトークンの変換やデプロイの仕組み等内部を知ってもらうことで、魔法感を無くし使いやすくなるのではと思います。
また、プレゼンでは CDK のトークン周りの内部構造についても多少解説できると思います。
CDKを用いてAWS上にインフラを構築しました。
開発時に遭遇したトラブルの内容と解決法について紹介します。
プログラミング関連
・クラス構成に関する思想のずれ
・配列利用によるトラブル
・設定値外だしに関するトラブル
・リファクタ時のトラブル
等
デプロイに関するトラブル
・同名リソース作成によるデプロイエラー
・スタック間参照トラブル
・リソース作成順序エラー
・スタックに作成可能なリソース数上限
等
実装が難しかった内容
・S3クロスリージョンレプリケーション
・Aurora作成時等に自動作成されるロググループの設定変更
等
「AWSってコードで作れるのか~」というゼロ知識からCDKを始めて早3年、色々なCDKの疑問や問題にぶつかってきました。
チームでのデプロイはどのように実現するべきか?テストは実装するべきか?スタックをどう分けるか?ひとまずサービスごとにスタックを分割して陥ったスタック間参照地獄からどう脱出するべきか?など、現在に至るまで、CDK初学者の失敗談、チームでCDK開発をする上でのしくじり、CDKあるあるなど、3年間の激闘の実録をお話しさせて頂こうと思います。
先日、ENIをCDK で作成しようとした際に、
L2コンストラクトがないことに気づき、自作に挑戦しました。
その際に得た学びについて下記の3つテーマに分類して、
皆様に共有できればと思います。
・CDKの概念やコンストラクトの構造に関する話
・設計の際に意識したこと(センシブルデフォルトの話など)
・コーディングの際にハマったこと
CDKを通じてBedrockを使用したRAGアプリを複数のAWSアカウントにて開発・展開しています。
生成AIの分野は日進月歩であり、常に最新の情報を取り入れてアプリケーションを更新する必要があります。
しかし、生成AIのトレンドを追っている開発者は自ら開発してアプリを使用していますが、そうでない人は開発やアップデートを行わないことが問題となっていました。
この問題を解決するために、CDK Pipelineを活用し、マルチアカウントでアプリケーションを配布することにしました。これにより、最新のアップデートを効率的に展開し、すべてのユーザーが迅速に最新のアプリケーションを利用できるようになりました。
本発表では、実装例を交えながら、CDKパイプラインを用いた生成AIアプリの効率的な開発と配布の方法について説明します。
私は業務経験半年ほどのバックエンドのジュニアエンジニアです。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の世界に飛び込む決定的なキッカケをお伝えできればと思います。
2023年6月にEC2 Instance Connect Endpointがリリースされました。これはVPC内のEC2インスタンスに対するSSHまたはRDP接続が、容易に実現できるサービスです。
CDK公式でのL2コンストラクトは存在していませんでしたが、2024年5月にコミュニティ主導のCDKコンストラクトライブラリであるopen-constructsにてL2が使用可能になり、非常に簡単にEIC Endpointを作成することができるようになりました。
このセッションでは実際にプライベートサブネット上のEC2インスタンスへのSSH接続を行う例に加え、RDSへのDB接続もEIC Endpointを介して行えることをCDK実装例も併せて紹介します。
VPC内リソースへのあらゆる通信を、踏み台無しで実現できる可能性を秘めた素敵なサービスですので、多くの開発者に刺さる内容のはずです!
JAWSDAYS2024、ご参加いただきありがとうございました。
JAWSDAYSのティザーサイトは、フロントエンドはNext.js+S3+CloudFrontでホスティング、バックエンドにはAWS CDK(TypeScript)を用いたLambdaやDynamoDB等で構築しており、全てサーバーレス系のサービスで構築しています。フロントエンド・バックエンド共にTypeScriptを採用し、Monorepo構成とすることで、リポジトリ横断で型の恩恵を受けつつ、CI/CDパイプライン(GitHub Actions)のスリム化、パイプラインでの自動テスト等、持てる知識を全て投入しました。
上記の他にもbiomeやNxといったライブラリを採用してみてどうだったか?サポーター瞬殺撃のタイミングでリソースはどうなっていたのか? パフォーマンスを改善するためにどんな工夫を加えたか? などをお話します。