Skip to content

Blog

CentOS8 に neovim をインストールする

CentOS7 であれば yum で Fedora の EPEL を追加することで neovim を追加することが出来るようです。 しかし、FedoraProject の EPEL リポジトリは、7 系 OS 用の n 行には neovim が存在するものの、8 系 OS 用の n 行には neovim が存在しないようです。

CentOS8 の場合は以下のように GitHub の Releases ページからバイナリをダウンロードすることでインストール可能です。

AWS NLB は Source IP/Port を維持するが DSR 動作はしない

AWS Black Belt Online Seminar は毎回、素晴らしい内容です。 2017 年公開の資料なので、最新の情報ではありませんが NLB の基本的動作については ELB Update - Network Load Balancer (NLB) と関連サービス に分かりやすく、且つ、丁寧にかかれています。 この資料の P.20 に下記の記載があります。

  • クライアントの Source IP と Port が、そのまま Target まで届く
    • Target はクライアントと直接通信しているかの様に見える
    • 実際は、行きも帰りも NLB を通っている (DSR ではない)
    • IP Target (後述) の場合は保持されず、NLB からの通信となる
      • Direct Connect は接続されている VPC からのみ通信可能なので、こちらで回避

Instance Target で NLB を設定すると分散対象のサーバでは送信元パケットで「クライアントのアドレス」が確認出来る為、一見すると「NLB は DSR 動作している」ように見えますが、上述の Black Belt 資料に記載がある通り、実は DSR 動作をしていないそうです。 今回は検証環境で実際のトラフィックフローを確認してみました。

Python の FastAPI Web アプリで pydantic を使わずに POST メソッドを処理する

Python で FastAPI を使ったアプリケーションを Web アプリケーションを作成する際、POST メソッドで渡されるリクエストの処理は公式サイトの Request Body 説明ページ によると pydantic を使ったクラスで処理するサンプルが掲載されています。 しかし、例えば「POST されてくる JSON のフォーマットが一定では無い」といったケースだと pydantic ではやや困る場合があるかも知れません。 そういった場合は pydantic を使わず、Body を使ってリクエストを受け取り、json として処理する方法があります。 下記は FastAPI を mangum で AWS へデプロイすることを前提にしたサンプルです。