理系学生日記

おまえはいつまで学生気分なのか

Serverless Frameworkのコマンド実行時にフックして他のコマンドを実行するserverless-scriptable-plugin

Serverless Frameworkの各種コマンド実行をフックし、任意の処理を挟み込む方法を紹介します。 背景 大量のLambda関数を管理するためにServerless Frameworkを利用しています。 ここで、問題が発生しました。 Prismaを利用したLambda関数をWindowsからデプロ…

AWS SDK for JavaScript v3のGetObjectCommand、TypeScriptで使いにくくないか?

S3上にあるオブジェクトの内容をTypeScriptで読み込みたい、こういうユースケースは多数あります。 自身としては今回初めて、AWS SDK for JavaScript v3の@aws-sdk/client-s3を使って実装してみました。 そこで感じたのは、GetObjectCommandまわりのインタフ…

GraphQL SchemaのLintと、GitHub ActionsでのLint実装

GraphQLに本格的に触れ出しました。新しい技術に触れるとき、やはり優先して取り組むのがLintや静的解析回りです。 GraphQLのスキーマにもLintをかけたい、GitHub Actionsでチェックしたいなと考え始めました。 graphql-schema-linterがそのものズバリのライ…

Lambda関数の共通処理のためにTypeScriptでmiddyのミドルウェアを書く

最近ようやく重い腰を上げてTypeScriptでプログラムを書き始めました。 一方で、Lambda関数を多く書く必要も生じてきていて、その結果としてLambda関数で使い回す処理は共通化したくなってきます。 これを目的として、Lambda関数用のミドルウェアエンジンで…

Lambda関数でPrismaを利用するときのTips

Lambda関数からRDSを利用する必要が生じ、次世代のO/Rマッパと称されるPrismaを利用することにしました。 Lambda関数自体は、Serverless Frameworkで管理しています。 本エントリでは、Serverless Framework + Prisma + Lambdaの構成におけるノウハウを記述…

TerraformでMultiAZ構成のAmazon Aurora Serverless v2を構築する

Amazon Aurora Serverless v2 Amazon Auroraはコンピューティングとストレージを分離した構成をとるデータベースです。 そして先月に、そのServerless版の新しいバージョンである、Amazon Aurora Serverless v2がGAになりました。 ここで言う「Serverless」…

CognitoのHosted UIを独自ドメインでホストするところまでをTerraformで構築する

かなり沼にハマりましたが、TerraformでAmazon CognitoのHosted UIを独自ドメインでサーブするところまでを構築できました。 実装はこちら。 構築のハマりどころ Hosted UIに割り当てる証明書はバージニアで作成する Hosted UIに割り当てる独自ドメインの1つ…

GraphQL Code Generatorを使ってTypeScript型定義を自動生成することでGraphQLの開発が楽になる

型のない言語でJSONのような構造を扱おうとすると、このオブジェクトのフィールドには何が入っていたっけ、というのを IDEとドキュメントを行ったり来たりしながら確認する羽目になります。 これはGraphQLでも同様でした。TypeScriptで開発をしていたとして…

GraphQLでMerge Request上のコメントを抽出する

モチベーション 品質管理の負荷を下げたい TypeScript/GraphQLを使ってみたい GraphQL+TypeScriptの組み合わせがとてもよかった 開発プロジェクトでGitLabを使っている場合、 Merge Requestを使って開発を進めていくことが多いでしょう。 このときMerge Requ…

AWSのVPC Reachability Analyzerで疎通性を確認する

課題 解決に向けて 構成 感想 課題 プライベートサブネットに対し、SSM Agentを インストールしたEC2を配置しました。セッションマネージャー経由で接続を試みたところ、どうも疎通ができません。 解決に向けて そこで思いあたったのがReachability Analyzer…