😎

CureApp インフラわいがや会 2023/03/03 議事録(プロダクトのバージョン番号の管理・App Runner・NestJS、他)

2023/03/08に公開

プロダクトのバージョン番号の管理(bump)をコマンド 1 発で処理しちゃう

monorepo 構成になっている場合の子パッケージのバージョン上げ

  • lerna をタスクランナーとして使用しています。
# パッチバージョンを上げる
lerna version patch --no-git-tag-version

# マイナーバージョンを上げる
lerna version miner --no-git-tag-version

# メジャーバージョンを上げる
lerna version major --no-git-tag-version

react-native 製の Android・iOS のバージョン上げ

実行するコマンドは以下(packages.json の scirpts に追加して実行)

{
  "scripts": {
    "version-bump": "react-native-version --never-amend"
  }
}

パターンマッチで特定のファイル内に埋め込まれているバージョン番号を繰り上げる

  • Deno のツールになっちゃうんですが、 bmp というコマンドで特定のファイルのバージョンを書き換えられます。
  • larna version と bmp の組み合わせで version を繰り上げてます(v.6.1.2 みたいなバージョン)

Deno をインストール

brew install deno

zsh の場合、.zshrc に以下を追加。

export DENO_INSTALL="/Users/taro.yamada/.deno"
export PATH="$DENO_INSTALL/bin:$PATH"

設定ファイルの例はこんな感じ。

version: 6.3.4
commit: 'chore: bump to v%.%.%'
files:
README.md: v%.%.%
packages/hoge-mobile/.env: VERSION=%.%.%
packages/hoge-mobile/.env.production: VERSION=%.%.%
packages/hoge-mobile/.env.staging: VERSION=%.%.%
packages/hoge-mobile/android/app/build.gradle: versionName "%.%.%"
packages/hoge-mobile/ios/HogeMobile/Info.plist: <string>%.%.%</string>
packages/hoge-mobile/ios/HogeMobile-tvOS/Info.plist: <string>%.%.%</string>
packages/hoge-mobile/ios/HogeMobile-tvOSTests/Info.plist: <string>%.%.%</string>
packages/hoge-mobile/ios/HogeMobileTests/Info.plist: <string>%.%.%</string>

実行するコマンドは以下。

# パッチバージョンを上げる
bmp -p

# マイナーバージョンを上げる
bmp -m

# メジャーバージョンを上げる
bmp -j

まとめ

  • larna version と bmp と react-native-version の三種の神器を使えば、version の bump はコマンド化できる!(やったぜ!)

IP アドレス直叩きの攻撃を WAF でブロックしたい

  • IP アドレスの正規表現でチェックし、IP アドレス直叩きのアクセスをすべてブロック
  • IP アドレスの正規表現のパターンは以下。
^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])$

以下の例では、259 件のアクセス(ip_regex_pattern_block_rule_BlockedRequests)をブロックできている。

App Runner ってどうなんですか?

概要

  • 何か知ってる人がいたら教えてほしい!(雑かよ!)
  • ECS よりも App Runner を採用したほうが楽なのか気になっている。今日このごろ。

わかっていること

NestJS ってどうなんですか?

  • 何か知ってる人がいたら教えてほしい!(雑かよ!)
  • NestJS は重厚長大なバックエンドフレームワークって感じで、型にはまってやるなら良さそうだが、学習コストもかかりそうで…。
  • バックエンドを作るならコレ!ってライブラリ、あるのかなぁ(フロントエンドでいう Next.js みたいな)
  • GraphQL との相性が良い
    • スキーマ自動生成

JWT (JSON Web トークン) の検証ってみんなちゃんとやってます?

Cognito を使っている場合

Auth0 を使っている場合

CloudWatch Logs もデータ保護ポリシーなるものが追加されました

概要

仕組み(公式ドキュメントから抜粋)

  1. クレジットカード番号や IAM アクセスキーなど、監査の対象となるデータ識別子を選択します。
  2. 選択したデータ識別子と一致するデータが送信される際の検出結果の送信先を選択します。
  3. マスキングするデータ識別子を設定します。

ロール(公式ドキュメントから抜粋)

  • マスキングされたデータには、昇格した IAM 特権を使用してマスキングなしでアクセスできます。
CureApp テックブログ

Discussion