Closed7
2025/2/21 JAWS-UG CDK支部#19 クラスメソッドコラボ回
CDKを使ったPagerDuty連携インフラのテンプレート化
- 背景
- 保守している環境にPagerDutyを導入したい
- 既存のSNSトピックに通知用のLambdaを追加してPagerDutyに連携したい
- CDKでインフラ管理しているプロジェクトの保守を複数担当しており、すべてに対応する必要がある
- 課題
- 各プロジェクトのCDKをすべて直すのは煩雑で、現実的ではない
- 保守するプロジェクトが増えるたびに追加作業が必要になる
- 解決策
- SNSトピックにLambda追加用のCDKプロジェクトを1つ作成
- CDKプロジェクトからCloudFormationテンプレートを生成し、S3に配置
- ソース管理が1か所に。
- CDKプロジェクトからCloudFormationテンプレートを生成し、S3に配置
-
クイック作成リンクを使用して、複数環境に適用する
- 新規スタックなので既存環境に影響を与えない
- SNSトピックにLambda追加用のCDKプロジェクトを1つ作成
- ※クイック作成リンクとは?
- あらかじめS3に配置しておいたCloudFormationテンプレートを指定したリンクから、スタック作成のページに遷移することができる
CDKのコードを書く環境を作りました with Amazon Q
- 背景
- 必要な環境
- VS Codeに以下の拡張機能
-
WSL2(Ubuntu) on Windows 11
- Docker, Docker Composeインストール
- クラウドプロキシを使う場合はルート証明書をインストール
sudo apt-get install -y ca-certificates sudo cp proxy.crt /usr/local/share/ca-certificates sudo update-ca-certificates
- 手順概要
- WSL2で作業ディレクトリを作成し、
code .
でVS Codeを起動する。VS Code で以下を作成- .devcontainer
- devcontainer.json
- extensionsでAmazonQをインストール
- devcontainer.json
- docker-compose.yml
- Dockerfile
- ここでクラウドプロキシ用のルート証明書を/usr/local/share/ca-certificatesにコピー
- proxy.crt
- .devcontainer
- WSL2で作業ディレクトリを作成し、
コミュニティ駆動 AWS CDK ライブラリ「Open Constructs Library」とは
- 「Open Constructs Library」とは
- コミュニティ駆動のAWS CDK Constructライブラリ→GitHub
-
Open Construct Foundation(OCF)により2024年2月発足
- CDKエコシステム拡充のために設立された非営利団体
- 背景
- AWS CDK(本家)はOSS
- AWS CDKチームがメンテナー
- コミュニティからのコントリビュートが多く、CDKチームのレビュー負荷が高くなっている
- 今後、L3 Constructsは作らない可能性がある
- とはいえ、CDKエコシステムには高レベルConstruct(L3)が必要!
- Construct Hubがあるが、すべて信頼性が高いとはいえない
- 現在のConstructは6つ
- aws-codeartifact
- aws-cur
- aws-ec2
- aws-elasticache
- aws-fsx
- aws-redshiftserverless
- 今後の方針
- CDK本家にないL2 Constructsを充実
- その後、L3
- よいConstructはCDK本家にも提供
- コントリビューター募集
- 15人中7人が日本人
- PRのレビューは隅々まで丁寧に行うのでCDKスキルアップします
CDKでカスタムランタイムを作成して、Lambdaをnode.js23+TypeScriptで動かしてみた
- 背景
- Node.jsがv23.6.0からTypeScriptのネイティブ実行がサポート
- Lambdaでは未サポートのバージョンも「カスタムランタイム」として動作可能
- LambdaをTypeScriptで実行できるのでは?
- CDKでカスタムランタイムを作成するには?
- 通常のLambdaレイヤーと同様でOK
- ただし、Node.js v23.6.0のバイナリを含める必要がある
- TypeScriptをそのままデプロイするので、
aws_lambda.Function
を使用-
aws_lambda_nodejs.NodejsFunction
ではトランスパイルされる
-
CDK開発におけるコーディング規約の運用
- コーディング規約とは?
- コーディングにおけるルール
- 保守性が高く、一貫性のあるコードを保つのに必要
- 自前で運用するのはミスも発生しやすいので、LinterやFormatterなどのツールで自動化を推奨
- Linterの特徴を理解して選定する
- 結局どれを採用?
- ESLintがおすすめ。理由は下記。
- 型情報Lintルールがほしい
- プラグインの豊富さ
- カスタムルール作成可能
- ESLintがおすすめ。理由は下記。
-
JSDoc
- CDKでは、interfaceやConstructで公開するプロパティにはJSDocを必須にする
- オプショナルなプロパティには必ず
@default
を記述 - CDK独自ルールは、eslint-cdk-pluginを利用するのがおすすめ!
このスクラップは2ヶ月前にクローズされました
作成者以外のコメントは許可されていません