原田です。今回はAWS Cloud Development Kit(AWS CDK)を使用して感じた良いところについて書きます。
私がAWSを使い始めたのは2020年3月頃でした。主にLambda(Ruby)やStepFunctions(JSON)などをVisual Statio Code(AWS Toolkit for Visual Studio Code)を使用して作成しています。
また、IAMロールやIAMポリシーはテキストエディターを使用してCloudFormationテンプレート(YAML)を作成(コーディング)していました。当時作成したYAMLファイルを今あらためて確認すると、設定の足らない(もっと厳しいポリシーにするべき)箇所もありました。社内でレビューは実施していますが、1000行を超えるYAMLファイルのコードレビューを依頼するのは非効率でさらに確認漏れが発生する恐れを抱えています。レビュワーの精神的な負担も大きいです。
私が所属するサービス開発グループでは、週初めに各自の先週実施した作業についてみんなで振り返り(YWT)を行っています。そこで行数の多いYAMLファイルを手書きすることについて、振り返りのネタ(議題の一つ)として挙げました。このYWTの中でAWS CDKを使用すればYAMLファイルの手書きより少ない記述で、条件分岐(IF文)や繰り返し処理(FOR文)などプログラミング言語の制御命令も使用できることを教えてもらいました。
弊社では多くの案件をRubyで開発していますが、TypeScriptであれば多少の違いはあるけど開発する上で大きな支障は無いと判断しAWS CDKはTypeScriptでコーディングすることに決まりました。学習コストは思っているほど高くないことも理由の一つです。
この時はAWS CDKがどのように動作するのか全く未知でしたが、インターネット上にワークショップが公開されていましたので、TypeScriptのワークショップを実践し基本的なことを学びました。とても分かりやすい内容ですので、初めてAWS CDKを使用される方にお勧めします。
2022年末から以下のことを実施しています。新たなサービスに展開できるよう作業を進めています。
cdk deploy
)とAWSコンソール上で(デプロイした)リソースの確認実際にAWS CDKを使用して良かった(便利だな)と思う点をご紹介します。
以下のTypeScriptはVPCのコンストラクタですけど、この数行(実質1行)のコードから400行を超えるCloudFormationテンプレート(YAMLファイル)が生成されます。props.maxAzs
分のアベイラビリティゾーンを生成し、パブリック、プライベートサブネットとEIP、Routeテーブル、NATゲートウェイなどが各サブネットに設置されました。
(痒いところに手が届くような気分ですが)APIリファレンスも用意されていますので、リソースが分かっていれば何を使用すればよいかAPIリファレンスから見つけ出せると思います。
export class Vpc extends Construct { constructor(scope: Construct, id: string, props: VpcProps){ super(scope, id); // VPC const vpc = new ec2.Vpc(this, 'VPC', { maxAzs: props.maxAzs, }); } }
上記TypeScriptのようにリソース(ALB・ECS・S3バケットなど)単位にコンストラクト(Construct)に分けて作成すると、各コンストラクトのコード量が少なくなり見通しも良くなります。
将来AWS Backupを使用して、データベースやストレージなどをバックアップしたいと思っています。ただバックアップを補助的なインフラリソースと考えた時、メインのスタックから分離して別スタックにコンストラクタを移すことも可能です。
AWS CDKを使用して作成したTypeScriptからCloudFormationテンプレート(YAML)を出力することも可能です(cdk synth
)。出力されたYAMLファイルから今まで知らなかった記述をAWS CloudFormationのドキュメントのAPIリファレンスから調べて今までよりCloudFormationテンプレートの知識を得ることができました。
簡単ではありますがAWS CDKについて感じたことを書かせて頂きました。やはりCloudFormation(YAMLやJSONファイル)をゼロから作成するのはとても大変でした。このAWS CDKを使用してからコード量は以前に比べ断然に少なくなりました(作成する側として気分的にも楽)。コード量が減ることでレビュワーの負担も少なくなると思います。
私自身はAWS CDKを使用してプログラミングすることで、楽しく(そして検討しながら)インフラ構築を行えていますので、引き続きAWS CDK(TypeScript)を使用したいです。
【スタッフ募集中】
弊社ではAWSを活用したソリューションの企画・設計・構築・運用や、Ruby on Rails・JavaScriptフレームワークなどを使用したアプリケーション開発を行うスタッフを募集しています。採用情報の詳細
弊社での勤務に関心をお持ちの方は、知り合いの弊社社員・関係者を通じてご連絡ください。
![]() |
AWS Lambda と AWS Step Functions を当社検証環境で使用してみました。 |
![]() |
AppStream Elastic Fleetsを使ってみました。運用管理が楽で、用途によってはコスト面でもメリットあります。 |
![]() |
月に概ね2回、Zoomのウェビナー形式でRedmineオンライン質問会を開催。Redmineに関する質問にその場で回答します。 |
![]() |
自作キーボードを作ってみました。キー配列のカスタマイズにはPRK Firmwareがおすすめです。 |
![]() |
「プロジェクトに対してユーザーが過剰な権限を持っていないか」「プロジェクトが公開状態になっていないか」などのチェックができます。 |
![]() |
社員研修に伴うサポート体制変更・休業のお知らせ(5/20〜23) 社員研修に伴い、5月20日〜23日はサポート体制の変更および休業とさせていただきます。 |
![]() |
オープンソースカンファレンス2025 Nagoyaに弊社代表の前田が登壇(ブース出展あり) オープンソースカンファレンス(OSC)2025 Nagoyaに弊社代表の前田が登壇。『Redmineの意外と知らない便利な機能(Redmine 6.0 対応版)』をテーマに発表します。 |
![]() |
エンタープライズプラン向け「優先サポート」を開始 My Redmineでは、エンタープライズプランをご契約のお客様向けにサポート対応を優先的に行う「優先サポート(プライオリティサポート)」を開始いたしました。 |
![]() |
プロジェクト管理ツール「RedMica」バージョン 3.1.0をリリース Redmine互換のオープンソースソフトウェア ファーエンドテクノロジー株式会社は、2024年11月19日(日本時間)、Redmine互換のプロジェクト管理ソフトウェア「RedMica 3.1.0」をリリースしました。 |
![]() |
Redmineの最新情報をメールでお知らせする「Redmine News」配信中 新バージョンやセキュリティ修正のリリース情報、そのほか最新情報を迅速にお届け |