どうも!株式会社ShowcaseGigでSREとして働いている @atsusics です
最初に
VPC 内 / プライベート環境で Dashboards を表示したい方向けにOpenSearch Serverless Dashboards にブラウザからアクセスする方法を記載します
AWS OpenSearch Serverless はパブリックで構築した場合に Dashboards をインターネット経由で提供します。
しかし、プライベートで構築した場合は、直接 Dashboards を開けません。
そこで、認証(SigV4)が必要な OpenSearch Serverless に対して
踏み台 EC2 + aws-sigv4-proxy + SSH トンネル を組み合わせることで、
ローカル PC のブラウザから安全に Dashboards を閲覧できます。
本記事では、その具体的な手順をまとめます。
🏗️ 事前準備(簡易)
詳細は省略しますが、以下の準備は済んでいる前提で進めます。
✔ OpenSearch Serverless(AOSS)コレクションを作成
-
Collection 名:
my-collection -
ネットワークアクセス:private
-
Endpoint(例)
https://xxxxxxxxxxxx.ap-northeast-1.aoss.amazonaws.com
✔ AOSS の Dashboards を有効化
-
Dashboards Endpoint(例)
https://dashboards.ap-northeast-1.aoss.amazonaws.com/_login/?collectionId=xxxxxxxxxxxx
✔ VPC エンドポイント(AOSS Data) を作成
- AOSS Data 用の Interface エンドポイント
- サブネットは EC2 からアクセス可能に
- Security Group は EC2 → VPCE の 443 を許可
✔ 踏み台 EC2 の作成(Amazon Linux 系推奨)
- パブリックサブネットに配置(SSMでポートフォワーディングもできると思うけど今回はこれで)
- セキュリティグループで ローカルPC の IP → 22(SSH) を許可
これで準備完了です。
🎯 本題:踏み台 EC2 経由で Dashboards を開く方法
1. EC2 に必要パッケージをインストール
sudo yum update -y
sudo yum install -y git wget tar golang
2. aws-sigv4-proxy をインストール(ソースからビルド)
最新はここ
https://github.com/awslabs/aws-sigv4-proxy/releases
cd /tmp
wget https://github.com/awslabs/aws-sigv4-proxy/archive/refs/tags/v1.10.tar.gz
tar -xzf v1.10.tar.gz
cd aws-sigv4-proxy-1.10/cmd/aws-sigv4-proxy
ビルド:
go build -o aws-sigv4-proxy .
配置:
sudo mv aws-sigv4-proxy /usr/local/bin/aws-sigv4-proxy
sudo chmod +x /usr/local/bin/aws-sigv4-proxy
動作確認:
aws-sigv4-proxy --help
3. aws-sigv4-proxy を AOSS に向けて起動
以下では、AOSS の Data API エンドポイントを利用します。
(※値はマスキングしてあります)
AOSS_ENDPOINT=https://xxxxxxxxxxxx.ap-northeast-1.aoss.amazonaws.com
起動コマンド:
/usr/local/bin/aws-sigv4-proxy \
--host=xxxxxxxxxxxx.ap-northeast-1.aoss.amazonaws.com \
--sign-host=xxxxxxxxxxxx.ap-northeast-1.aoss.amazonaws.com \
--region=ap-northeast-1 \
--name=aoss \
--unsigned-payload \
--port=:9200
EC2 上でポート 9200 が待ち受け開始します。
4. ローカル PC から EC2 へ SSH トンネルを張る
ローカル PC で以下を実行:
ssh -i "my-ec2-key.pem" \
-L 9200:127.0.0.1:9200 \
ec2-user@ec2-xx-xx-xx-xx.ap-northeast-1.compute.amazonaws.com
これで以下のように接続経路が作られます:
ローカルPC → (SSHトンネル) → EC2:9200 → aws-sigv4-proxy → AOSS
5. ブラウザから Dashboards を開く
ローカルPCのブラウザで:
http://localhost:9200/_dashboards/app/home
これで OpenSearch Serverless Dashboards を GUI で利用できます!
🧪 動作確認(任意)
curl -I http://localhost:9200/_dashboards/api/status
成功例:
HTTP/1.1 200 OK
🎉 まとめ
上記手順を踏むことで、認証(SigV4)が必要な OpenSearch Serverless に対して
踏み台 EC2 + aws-sigv4-proxy + SSH トンネル を組み合わせることで、
ローカル PC のブラウザから安全に Dashboards を閲覧できました