あれ
Amplifyに乗っけたNext.jsから直接DynamoDBたたくの大変っぽい。テーブル名を同定でけへん。
Next.jsで環境変数を使ってIP制限
src/middleware.ts
import { NextRequest, NextResponse } from 'next/server'
// IPホワイトリスト
const IP_WHITELIST = ['::1', ...JSON.parse(process.env.IP_WHITELIST ?? "[]")];
const IP_RESTRICT = process.env.IP_RESTRICT === 'true';
export async function middleware(request: NextRequest) {
if (IP_RESTRICT) {
// IPアドレスを取得
let ip: string = request.ip ?? request.headers.get('x-real-ip') ?? '';
// プロキシ経由の場合、x-forwarded-forヘッダーからIPアドレスを取得
const forwardedFor = request.headers.get('x-forwarded-for');
if (!ip && forwardedFor) {
ip = forwardedFor.split(',').at(0) ?? 'Unknown';
}
// 取得したIPアドレスがホワイトリストに含まれているかチェックし、含まれていない場合はアクセス拒否
if (!IP_WHITELIST.includes(ip)) {
return NextResponse.json({ message: 'Unauthorized' }, { status: 401 });
}
}
return NextResponse.next();
}
onnxに変換して量子化するコマンド
python3 -m transformers.onnx --model=sentence-transformers/paraphrase-multilingual-mpnet-base-v2 onnx/ --opset=18
optimum-cli onnxruntime quantize --onnx_model ./onnx --output onnx_quantize/ --arm64
Next.jsでサーバーレスSentence Embedding
🦜️🔗 LangChain Next.js Starter Template
2023年11月24日日記
服薬をサボってたらメンタルを不調が襲ったので、薬をのんだ。
実家から送られてきた5kgのみかんが残り半分以下になっている。「週明けに職場で配ろう」とか思ってたら、このままなくなる勢いだ。
年末も近づき、実家の親のことが思い出されて情緒が不安定になる。親の寂しさを思ってしまうが、その実私が寂しいのかもしれない。一人暮らしが長い。
そろそろ年末の帰省に向けて、実家への飛行機のチケットを取らねば。
Next.jsのServer Actionを性懲りもなく試しているが、どうにもうまく動かない。エラーが出るが、どこがエラーを出しているのか判別がつかない。諦めよう。
ServerSidePropsに切り替えていく。引数でデータをバケツリレーするのは面倒だが、想定した動作をする可能性が高い。
revalidateするServerAction
オンデマンドISRのrevalidateはこれではできない。これでrevalidateされるのはfetchのキャッシュ。
import { revalidatePath } from "next/cache";
import { redirect } from "next/navigation";
export default async function revalidate({ params }: any) {
const { kno } = params;
revalidatePath(`/${kno}`);
redirect(`/${kno}`);
}
2023年11月17日日記
朝、体が冷え切って目が覚める温度になってきた。そろそろ布団を出さないと体調を悪くしてしまう。
上司と、私の今年の目標達成率について1 on 1をした。お互いに、「毎日の定例で30分話してるし、話すこと無くね?」みたいな感じだったが、普通に予定していた時間いっぱいまで話した。評価は上司の更に上がするので、まあどうなることやらである。
設定した目標を完全に忘れていたが、自己評価においては目標達成率は思いの外良かった。ちゃんと、自分が走りそうな方向に目標を置いておいたのが良かった。
ちなみにこの目標管理は給与とかボーナスには影響しない。という建付け。多分参考にはする。
仕事で問い合わせを出して、その回答待ちなのを良いことに、すげーダラダラしていた。
Next.jsでSMTPを受ける方法とか検討していた。無理そう。コレができるとシステムでできることの幅が広がるのだが。普通にマネージドサービスを使ったほうが良いんだろう。
そうこうしていたところ、仕事でクラウド上に作ってるシステムが、全部吹っ飛んでいることが判明した。DBやらファイルやらユーザーアカウントやらが全部消えた。まだ本番運用前で良かった。
上司と話したところ、週明けに原因調査しようということになった。定時直前に発覚して、上司に相談した上で泣きながら帰宅した。
何も心当たりのある操作してないんだよなぁ……。クラウドのコンソールにログインするアカウントが不正ログインされた形跡もなかった。クラウドのシステム自体の不具合で消えたんだったら、一発アウトなので別のクラウドに移行しないといけなくなってしまう。
CI/CD・DB・ストレージ・認証・認可・API生成の全部入りのマネージドサービス(フレームワーク付き)でこの事象が起きちゃったので、まじで影響範囲がでかい。死ぬ。たのむ、俺のミスであってくれ。
Fediverseで「複雑なマネージドサービスって怖いよね〜〜」という話をしていた。はい。実感。
布団を出してカバーを付けた。カバーをうまく付けられなくてモタモタしてしまった。疲れで不器用になっている。俺はもうだめだ。
Next.jsをAWS Amplifyで動かす
フロントエンドのビルドの設定をいじる(baseDirectory: .next
にする)。
frontend:
phases:
preBuild:
commands:
- npm ci
build:
commands:
- npm run build
artifacts:
baseDirectory: .next
files:
- '**/*'
cache:
paths:
- node_modules/**/*
WEB_COMPUTEに切り替える。
aws amplify update-app --app-id {app_id} --platform WEB_COMPUTE
フレームワークを誤認識する場合はNext.jsと明示する。
aws amplify update-branch --app-id <value> --branch-name <value> --framework 'Next.js - SSR'
https://github.com/aws-amplify/amplify-hosting/issues/3168
上記設定の後に再構築する。
コマンドをやるときは、CloudShellが便利。
AmplifyでホスティングしたNext.jsにアクセスするとエラーが出る
出るエラー
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
<RequestId>QDJ9VR234XWYSAH7</RequestId>
<HostId>
Jv0GW8ilCugBWBqPJb5AVx/UbrjgQ1c10Vt9mq+ZFT+06Mfwm2S9FZ8xiaZy37zDmtoIaC7MI/I=
</HostId>
</Error>
AmplifyでNext.js 14をビルドする方法
2023年11月14日日記
朝
特に記憶に無いです。
仕事
「Next.jsを使えば忌々しいAmplifyのDataStoreを無くせるんじゃね?」とか思って、社内システムの移植を開始した。もともとReactで動いていたので、3時間ほどでシステムがNext.jsの上で動くようになった。Next.jsの恩恵が受けられるのはこれからだ。
夜
「Next.jsを使えばBERTでSentence Embeddingを取るAPIをサーバーレスでつくれるんじゃね?」とかおもって実装した結果、比較的高性能な開発機であっても計算に3秒もかかることがわかり、検索には使えず無事死亡した。
デライトが落ちていた
「あれ」ってどんなんだったっけと思って、デライトで検索しようとしたところ、デライトが落ちていた(障害のお知らせ)。普段当たり前のようにデライトが使えているが、knownetの開発を通じてデライトが安定稼働していたことの異常さに気付きつつある。knownetの方はちゃんと動いている期間のほうが短い。
探そうとしていた情報については『t_wの輪郭』を参照して見つけられた。いざというときの保証として機能してくれた。
AWS AmplifyでGo言語とNext.jsから成るアプリをビルドするアレ
version: 1
backend:
phases:
preBuild:
commands:
- wget --no-verbose https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
- rm -rf /usr/local/go
- tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
build:
commands:
- '# Execute Amplify CLI with the helper script'
- export PATH=$PATH:/usr/local/go/bin
- go version
- amplifyPush --simple
frontend:
phases:
preBuild:
commands:
- npm ci
build:
commands:
- npm run build
artifacts:
baseDirectory: .next
files:
- '**/*'
cache:
paths:
- node_modules/**/*
あれ
AmplifyでNext.jsが動いたああああああ
https://main.du4rqori3cgjf.amplifyapp.com/
こっからどうしたら良かったんだっけ……
Next.js触ったのだいぶ前なので忘れてしまった。
あれ
ノリと勢いで『t_wの輪郭』をReactで作り直しだウェーイってしてるけど、SEO死ぬんじゃねこれ
あとOGP対応無理くねコレ
何ならRSSも無理っぽい
AWS AmplifyでSSRする方法探すか
使用できますAWS Amplifyサーバー側レンダリング (SSR) を使用する Web アプリをデプロイしてホストします。現在、Amplify ホスティングは Next.js フレームワークを使用して作成されたアプリをサポートしています。
公式の日本語が怪しいけど、AWS AmplifyはNext.jsでSSR出来るらしい。
React+DataStoreからNext.jsに切り替えるぞッ!!!!
ここまで作ったフロントエンドを捨てることになるけど、メリットはあるし、やるしかねぇ。
- フロントエンドの実装はまだほとんど進んでない
- AmplifyでNext.jsで動かす勉強になる