環境変数
MBC CQRS サーバーレスフレームワークには、環境変数のサポートが組み込まれており、次のことが可能になります。
.env
を使用して環境変数をロードします- 環境変数を検証する
Loading Environment Variables
MBC CQRS サーバーレスフレームワークには、環境変数を .env*
ファイルから process.env
にロー ドするためのサポートが組み込まれています。
TODO:
# AWS_PROFILE
AWS_ACCESS_KEY_ID=local
AWS_SECRET_ACCESS_KEY=local
AWS_DEFAULT_REGION=ap-northeast-1
# running environment
# local, dev, stg, prod
NODE_ENV=local
# NODE_ENV=dev
# name of application
# APP_NAME=suisss-recruit
APP_NAME=demo
# APP_NAME=cqrs
# set log levels
LOG_LEVEL=info # debug, info, warn, error, verbose
# disable event route for API GW integration
EVENT_SOURCE_DISABLED=false
# DynamoDB endpoint, useful for local development
DYNAMODB_ENDPOINT=http://localhost:8000
DYNAMODB_REGION=ap-northeast-1
# set the limit size for `attributes` of object in DDB
ATTRIBUTE_LIMIT_SIZE=389120 # bytes, refer to https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ServiceQuotas.html#limits-attributes
# S3 endpoint, useful for local development
S3_ENDPOINT=http://localhost:4566
S3_REGION=ap-northeast-1
# save DDB attributes
S3_BUCKET_NAME=local-bucket
# Step Function endpoint, useful for local development
SFN_ENDPOINT=http://localhost:8083
SFN_REGION=ap-northeast-1
SFN_COMMAND_ARN=arn:aws:states:ap-northeast-1:101010101010:stateMachine:command
# SNS endpoint, useful for local development
SNS_ENDPOINT=http://localhost:4002
SNS_REGION=ap-northeast-1
SNS_TOPIC_ARN=arn:aws:sns:ap-northeast-1:101010101010:MySnsTopic
# Cognito endpoint, useful for local development
COGNITO_URL=http://localhost:9229
COGNITO_USER_POOL_ID=local_2G7noHgW
COGNITO_USER_POLL_CLIENT_ID=dnk8y7ii3wled35p3lw0l2cd7
COGNITO_REGION=ap-northeast-1
# AppSync endpoint, useful for local development
APPSYNC_ENDPOINT=http://localhost:4001/graphql
APPSYNC_API_KEY=da2-fakeApiId123456
# SES email endpoint, useful for local development
SES_ENDPOINT=http://localhost:8005
SES_REGION=ap-northeast-1
SES_FROM_EMAIL=email@example.com
# This was inserted by `prisma init`:
# Environment variables declared in this file are automatically made available to Prisma.
# See the documentation for more detail: https://pris.ly/d/prisma-schema#accessing-environment-variables-from-the-schema
# Prisma supports the native connection string format for PostgreSQL, MySQL, SQLite, SQL Server, MongoDB and CockroachDB.
# See the documentation for all the connection string options: https://pris.ly/d/connection-strings
DATABASE_URL="mysql://root:RootCqrs@localhost:3306/cqrs?schema=public&connection_limit=1"
Validate Environment Variables
必要な環境変数が指定されていない場合、または環境変数が特定の検証ルールを満たしていない場合、アプリケーションの起動中に例外をスローするのが標準的な方法です。 @mbc-cqrs-serverless/core
パッケージを使用すると、これを簡単に行うことができます。
まずはじめに定義しなければいけないもの
- 検証制約のあるクラス
- EnvironmentVariables 拡張クラス
// env.validation.ts
import { EnvironmentVariables } from "@mbc-cqrs-serverless/core";
import { IsUrl } from "class-validator";
export class EnvValidation extends EnvironmentVariables {
@IsUrl({
require_tld: false,
})
FRONT_BASE_URL: string;
}
これを配置したら、次のように EnvValidation
クラスを createHandler
関数の構成引数として渡します。
import { createHandler } from "@mbc-cqrs-serverless/core";
import { EnvValidation } from "./env.validation";
import { MainModule } from "./main.module";
export const handler = createHandler({
rootModule: MainModule,
envCls: EnvValidation,
});