下に、SSM 接続後からの実運用手順 を、コマンドだけで回せるように整理します。
1. SSM で入る
ローカルPCから:
export AWS_PROFILE="demo-operator-502208717908"
export AWS_REGION="ap-northeast-1"
export INSTANCE_ID="i-0c8d3beb07256fbc9"
aws sso login --profile "$AWS_PROFILE" --no-browser
aws ssm start-session \
--region "$AWS_REGION" \
--target "$INSTANCE_ID" \
--profile "$AWS_PROFILE"
SSM 接続後:
cd /opt/nlq-dev
2. env を退避して取り出す
対象は今の構成だとこれです。
cd /opt/nlq-dev
ls -l api/.env.prod
まずバックアップ:
cp api/.env.prod api/.env.prod.bak.$(date +%Y%m%d-%H%M%S)
中身確認:
sed -n '1,240p' api/.env.prod
必要なら丸ごと表示:
cat api/.env.prod
3. 外で編集しやすい形で取り出す方法
方法A: 画面に出してコピー
一番簡単です。
cat api/.env.prod
これを手元のテキストエディタに貼って編集します。
方法B: base64 で安全に取り出す
改行崩れが嫌ならこちらです。
base64 -w 0 api/.env.prod
ローカルで復元する時は:
echo 'ここにbase64文字列' | base64 -d > .env.prod.localcopy
4. 編集後に戻す
編集済みの内容を、SSM セッション上でそのまま貼り戻します。
cd /opt/nlq-dev
cat > api/.env.prod <<'ENV'
ここに編集済みの .env.prod 全文
ENV
確認:
sed -n '1,240p' api/.env.prod
5. 反映
.env.prod を変えたら、基本は api の再作成 です。
cd /opt/nlq-dev
docker compose -f docker-compose.ec2.yml up -d --build --force-recreate api
docker restart nlq-dev-nginx
6. 変更後の確認
curl -u 'nlq-demo-analysis:nB9!A&AZdQ' -o /dev/null -s -w '%{http_code}\n' http://127.0.0.1:8088/api/health/ready
docker logs --tail 100 nlq-dev-api
必要なら実動確認:
curl -u 'nlq-demo-analysis:nB9!A&AZdQ' \
-X POST 'http://127.0.0.1:8088/api/nlq/execute' \
-H 'Content-Type: application/json; charset=utf-8' \
-d '{
"session_id": "ops-check-001",
"turn_no": 1,
"lang": "ja",
"message": "月別の案件数を教えて",
"question": "月別の案件数を教えて"
}'
7. 何を env で更新するか
実際に今後触る可能性が高いのはこのあたりです。
OPENAI_API_KEYLLM_API_KEYDEVPORTAL_BEARER_TOKENMETABASE_EMBED_SECRETMETABASE_PASSWORDMETABASE_PUBLIC_URL- 必要なら
DECIKG_*やDEVPORTAL_*
8. ロールバック手順
更新後に問題が出たら、バックアップから戻します。
cd /opt/nlq-dev
cp api/.env.prod.bak.YYYYMMDD-HHMMSS api/.env.prod
docker compose -f docker-compose.ec2.yml up -d --build --force-recreate api
docker restart nlq-dev-nginx
バックアップ一覧確認:
ls -lt api/.env.prod.bak.*
9. Basic認証ユーザーの追加
これは 8088 の入口用です。
Metabase の中のユーザーとは別です。
現在のファイル確認
cd /opt/nlq-dev
cat app/deploy/nginx/.htpasswd
新規ユーザー追加
cd /opt/nlq-dev
docker run --rm --entrypoint htpasswd httpd:2 -Bbn newuser 'NewPasswordHere' >> app/deploy/nginx/.htpasswd
docker restart nlq-dev-nginx
確認
curl -u 'newuser:NewPasswordHere' -I http://127.0.0.1:8088/
10. Metabase ユーザー追加
これは コマンドではなく UI でやる のが安全です。
手順:
http://13.115.137.248:3000- 管理者でログイン
- Admin
- People / Users
- Invite people / Add people
今回の方針だと、一般ユーザーは Metabase 本体には入れず、8088 側や埋め込みで見る ので、Metabase ユーザー追加は最小限でよいです。
11. nginx の Basic認証ファイルも同じ運用にできる
.htpasswd も、直接編集せずに取り出して戻す運用ができます。
バックアップ:
cd /opt/nlq-dev
cp app/deploy/nginx/.htpasswd app/deploy/nginx/.htpasswd.bak.$(date +%Y%m%d-%H%M%S)
表示:
cat app/deploy/nginx/.htpasswd
戻す:
cat > app/deploy/nginx/.htpasswd <<'EOF'
ここに編集済みの .htpasswd
EOF
docker restart nlq-dev-nginx
ただし .htpasswd は手書き編集より、htpasswd コマンドで追加する方が安全です。
12. 日常運用で覚えておくコマンド
状態確認
cd /opt/nlq-dev
docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'
api 再反映
cd /opt/nlq-dev
docker compose -f docker-compose.ec2.yml up -d --build --force-recreate api
docker restart nlq-dev-nginx
web 再反映
cd /opt/nlq-dev
docker compose -f docker-compose.ec2.yml up -d --build --force-recreate web
docker restart nlq-dev-nginx
迷ったらまとめて
cd /opt/nlq-dev
docker compose -f docker-compose.ec2.yml up -d --build --force-recreate api web nginx
13. おすすめ運用ルール
おすすめはこの流れです。
- 本番でバックアップを取る
cat api/.env.prodで取り出す- ローカルのエディタで編集する
cat > api/.env.prod <<'ENV'で戻すapiを再作成- health と実動確認
- 問題があればバックアップに戻す
このやり方なら、トークン更新や URL 更新で迷いにくいです。
必要なら次に、
「.env.prod 更新専用のチェックリスト」 だけを抜き出して、もっと短い運用メモにします。
コメントを残す