53ningen.com

@gomi_ningen's Website

Ajv の JTDSchemaType で複雑な JSON オブジェクトをバリデーションする

Ajv の JTDSchemaType で複雑な JSON オブジェクトをバリデーションする際の記述方法がわからなくて 30 分くらい溶けたのでメモっておきます。

配列

export interface AppParameters {
    items: string[]
}

const AppParametersSchema: JTDSchemaType<AppParameters> = {
    properties: {
        items: { elements: { type: 'string' } },
    },
    optionalProperties: {
    },
    additionalProperties: false
}

マップ

export interface AppParameters {
    map: { id: string }
}

const AppParametersSchema: JTDSchemaType<AppParameters> = {
    properti...
Read More

Lambda 関数上で io-ts を利用すると例外発生時にタイムアウトする

※ 自分用メモです

  • 概要: Node.js 14 ランタイムの Lambda 関数でデプロイパッケージに io-ts が含まれていると、例外発生時に即時関数実行が停止せず、タイムアウトまで待ち時間が発生する

通常、以下のようなコードで簡単に例外を発生させ、関数実行を停止させられる

import 'source-map-support/register'

export async function handler(event: object, _: object): Promise<object> {
 throw Error()
}

ところが、以下のように io-ts を import しただけで例外発生時にタイムアウトまで待ち時間が発生してしまう

import * as t from 'io-ts'
import 'source-map-support/register'

export async function handler(event: object, _: object): Promise<object> {
 throw Erro...
Read More

SAM CLI + CDK を試す

  • 基本的に このドキュメント に書いてあることを試しただけの記録
  • ドキュメントは Python だが、手元では Lambda Runtime: Node.js14.X, CDK: TypeScript で試した

aws-sam-cli-beta-cdk の導入

brew install aws-sam-cli-beta-cdk

Project の作成

以下のようにプロジェクトの作成が可能

sam-beta-cdk init --project-type CDK --package-type Zip --runtime nodejs14.x --dependency-manager npm --app-template hello-world --cdk-language typescript --nam...
Read More

Copyright © 53ningen.com