maybe daily dev notes

私の開発日誌

CDK

AWS CDKでSOCIインデックスをデプロイする

TL;DR; 以下のコードでCDKからSOCIインデックスをビルドし、ECRにプッシュすることができます。 # 依存関係のインストール npm install deploy-time-build import { SociIndexBuild } from 'deploy-time-build; const asset = new DockerImageAsset(this, 'I…

CDK Tips: 自作コンストラクトをPython向けに公開する

AWS CDK Tipsシリーズです。 AWS CDKのコンストラクトライブラリをPython向けに公開する手順のメモです。 最近 upsert-slr というライブラリをPyPIにも公開したので、その時のコードを例に紹介します。 モチベーション 最近のサーベイによれば、CDKのPython…

AWS Lambda特化のJavaScriptランタイム「LLRT」を紹介

最近にわかに話題沸騰中のJavaScriptランタイム LLRT を紹介する記事です。 github.com LLRTとは LLRT (Low Latency Runtime) は、軽量なJavaScriptランタイムです。サーバーサイド向けのJavaScriptランタイムはNode.js、Deno、Bunなどが有名ですが、それら…

CDK Tips: 2種類のaddDependency

AWS CDK Tips シリーズです。 CDKに addDependency メソッドが2種類あることをご存知でしたか?今日は2つの違いをお伝えします。 addDependency とは addDependency メソッドは、コンストラクト間の依存関係を明示的に指定するための機能です。AWS CDKにおい…

CDK Tips: cdk synthを高速化する

AWS CDK Tipsシリーズの記事です。 CDKアプリケーションの開発運用が成熟するにつれ、CDKの合成処理 (synthesize)が遅く感じることがあります。 合成処理はCDKのデプロイやdiffのたびに走るため、速ければ速いほど嬉しいものです。 この記事では、合成処理を…

CDK Day 2023に登壇しました

先日CDK Day 2023というイベントに登壇しました。 今後本イベントに登壇を考えている人の参考になればと思い、手続きの概要や感想などまとめておきます。 CDK Dayとは AWS Cloud Development Kit (CDK)やcdktf・cdk8s・projenなどCDK周辺の話に特化した、CDK…

AWS Lambda Pythonでsqlite-vssによるベクトル検索を利用する

昨今LLMの台頭により、テキストをベクトル化して類似文書の検索に利用する手法が流行っています。 今回はAWSでこの検索を実現するための一方法として、SQLiteのプラグインであるsqlite-vssをAWS Lambda上で使う方法をまとめます。 github.com 意外とハマりど…

AWS CDKのカスタムリソースをCodeBuildで処理する

AWS CDKを使えば、CloudFormationのカスタムリソースをLambda関数で簡単に定義することができます。 しかしながら、時にLambda関数だけでは都合が悪く、別のコンピュート環境を使いたくなる場合もあるでしょう。 私の作っている deploy-time-build というCDK…

CDK Tips: ID=Defaultの使い方

AWS CDK Tipsシリーズです。 昨日のCDKカンファレンスで触れた ID=Default の話に思わぬ反響があった (嬉しい!) ので、詳しくまとめます。 ID=Default とは この記事では、AWS CDKのコンストラクトの第2引数のID (Identifier) に Default という文字を指定…

AWS CDK Tips 記事まとめ

AWS CDKを日々使う中で溜まった知見を書き出しています。記事を追加するごとにここも更新していきます。 以下はベストプラクティス的な話です: CDK Tips: コンストラクトで構造化しよう すべてのリソースをスタックのコンストラクターにベタ書きしないほうが…

AWS CDK Tips: クロスリージョンのデプロイ

AWS CDK TIpsシリーズの記事です。 AWSでサービスを構築する際、単一リージョンで提供するサービスであっても、クロスリージョンのデプロイが必要になる場合がまれにあります。AWS CDKでは、そのような構成も簡単に実装可能です。今回はCDKを使ったクロスリ…

Next.jsをLambda + API Gatewayでサーバーレス化する (standaloneモード)

これは AWS LambdaとServerless Advent Calendar 2022 の記事です。 Next.jsをホスティングする手段の一つとして、Standaloneモードで動かす方法があります。 コンテナ1個で動かせるため非常にお手軽な選択肢で、GCPのCloud RunやAWSのApp Runnerなどで動か…

AWS CDK Tips: コンストラクトで構造化しよう

AWS CDK TIpsシリーズの記事です。 CDKのコードが散らかってきた、スタックのコードがベタに数百行以上もあって読みづらい… そんな状況に直面したことはないですか?今回はCDKコードを構造化して、可読性・保守性を高めるコツを紹介します。 背景 前回の記事…

AWS CDK Tips: スタックの分け方について

AWS CDK TIpsシリーズの記事です。 AWS CDKのスタック、まとめてますか?分けてますか?分けている方はどういう基準で分けていますか? この議論は人によって割と意見の分かれることも多く、最高の飲み会ネタになるでしょう。今日は私見も交えながら、CDKの…

AWS CDKのおもしろいバグを直した (Unhandled rejection編)

先日自分が修正してマージされたAWS CDKのバグが個人的には結構面白かったので、ざっくりとまとめます。 github.com どういうバグか CDKのhotswapデプロイ*1をするとき、hotswapできそうでできない変更が2つ以上あると、CDKがクラッシュするという現象が起き…

趣味Webサービスをサーバーレスで作る ― 格安編

はじめに 最近AWSのサーバーレスサービスで作るWebサービスの雛形を公開してみた*1。小規模サービスならかなり安く (ほぼ無料になるケースも多そう) で運用できるので、割と良い選択になる場面も多いと考えている。今日はその布教記事。 github.com 全体構成…

AWS CDK コンストラクトライブラリ開発に関する5つのTips

AWS CDK TIpsシリーズの記事。 最近 deploy-time-build というCDK コンストラクトをリリースできたので、その過程で得られた知見を共有する。 github.com Tips プロジェクトの初期化はprojenで一発 プロジェクト生成ツールのprojenを使うことで、コマンド一…

AWS CDKでWebフロントエンドをデプロイする3つの方法

CDKでWebフロントエンドのSPAをデプロイするときの方法まとめ。下図のありがちなSPA構成を想定している。 このような場合、フロントエンドアプリからAPI GatewayのエンドポイントURLやCognitoのUser Pool IDなどの値を参照する必要があって、それらの値をど…

NodejsFunctionのビルド時に依存関係を解決する3つの方法

AWS CDK TIpsシリーズの記事。 タイトルの通り、AWS CDKのNodejsFunctionを使う時に依存関係を解決する方法が数パターンあるので比較してみる。 例 今回は、以下のTypeScriptのLambdaをデプロイするケースを考える。 // よくあるAPI GatewayのLambda Authori…