はじめに
VPC環境下の作成したOpenSearch Serviceドメインのダッシュボードにアクセスする方法は複数ありますが、どの方法も踏み台のEC2が必要だったり、OpenSearch以外のリソース管理や課金が発生していました。
・踏み台にログインしてブラウザアクセス
・SSM/SSH等でポートフォワード
・Client VPN
etc・・・
昨年の11月にリリースされたOpenSearch アプリケーション(UI)を使うことで、OpenSearchダッシュボードと同様にブラウザからGUIベースでクラスターの操作が可能になります。
しかも追加料金不要です。実際に試してみましょう。
OpenSearchアプリケーションの認証方法
OpenSearchアプリケーションの認証方法として、IAMと IAM Identity Centerをサポートしています。
注意点として、別のリージョンで作成されたIAM Identity Centerはサポートしていません。例えば、組織インスタンスとOpenSearchアプリケーションが異なるリージョンの場合は連携することが出来ません。同一リージョン内にアカウントインスタンスを作成することで回避可能かもしれませんが、未検証です。
今回はIAMユーザーを作成してOpenSearch アプリケーションにログインします。
OpenSearch Serviceドメイン作成
事前準備として、接続先のOpenSearch ServiceドメインをVPCに作成しておきます。
作成する際にきめ細かなアクセスコントロールの有効化とマスターユーザーとしてIAMユーザーを指定しておきます。
AWS CLIのバージョン
まず、AWS CLIのバージョンを確認しましょう。
CLIのバージョンによっては今回使用するコマンドやオプションがサポートされていない場合もあるため、最新版の使用を推奨しています。
aws --version
結果(例):
aws-cli/2.24.15 Python/3.12.9 Darwin/24.3.0 exe/x86_64
OpenSearchアプリケーション作成
app-configsオプションのvalueでIAMユーザーのARNを指定します。
aws opensearch create-application \
--name opensearch-app \
--app-configs "
{
\"key\":\"opensearchDashboards.dashboardAdmin.users\",
\"value\":\"arn:aws:iam::xxxxxxxxxxx:user/opensearch_ui\"
}
"
結果(例):
{
"id": "8y75shjdhb4u5gqf159h",
"name": "opensearch-app",
"arn": "arn:aws:opensearch:ap-northeast-1:xxxxxxx:application/8y75shjdhb4u5gqf159h",
"appConfigs": [
{
"key": "opensearchDashboards.dashboardAdmin.users",
"value": "arn:aws:iam::xxxxxxx:user/opensearch_ui"
}
],
"createdAt": "2025-03-04T17:21:42.371000+09:00"
}
アプリケーションのidを控えておきましょう。
aws opensearch list-applications --query 'ApplicationSummaries[].id' --output text
結果(例):
8y75shjdhb4u5gqf159h
データソース追加
data-sourcesオプションでOpenSearchのARNを指定します。
idオプションに先ほど控えておいたアプリケーションのidを指定します。
※create-applicationでOpenSearchアプリケーション作成時にデータソースを追加することができますが、一部機能でデータソースを認識しない挙動を確認しました。原因は不明ですが、update-applicationで追加した場合は再現しないことを確認しています。
aws opensearch update-application \
--id 8y75shjdhb4u5gqf159h \
--data-sources "[{\"dataSourceArn\": \"arn:aws:es:ap-northeast-1:xxxxxxxxx:domain/uitest\"}]"
結果(例):
{
"id": "8y75shjdhb4u5gqf159h",
"name": "opensearch-app",
"arn": "arn:aws:opensearch:ap-northeast-1:xxxxxxx:application/8y75shjdhb4u5gqf159h",
"dataSources": [
{
"dataSourceArn": "arn:aws:es:ap-northeast-1:xxxxxxxx:domain/uitest"
}
],
"appConfigs": [
{
"key": "opensearchDashboards.dashboardAdmin.users",
"value": "arn:aws:iam::xxxxxxxxxx:user/opensearch_ui"
}
],
"createdAt": "2025-03-04T17:21:42.371000+09:00",
"lastUpdatedAt": "2025-03-04T17:22:21.507000+09:00"
}
VPCエンドポイントアクセスの承認
OpenSearchドメインにVPCアクセスするプリンシパルを登録します。
ここではOpenSearchアプリケーションを認可するプリンシパルとして登録します。
aws opensearch authorize-vpc-endpoint-access \
--domain-name uitest \
--service application.opensearchservice.amazonaws.com \
--region ap-northeast-1
結果(例):
{
"AuthorizedPrincipal": {
"PrincipalType": "AWS Service",
"Principal": "application.opensearchservice.amazonaws.com"
}
}
これで接続の準備が整いました。
OpenSearchアプリケーションにログイン
マスターユーザーに指定したIAMユーザーでOpenSearchアプリケーションにログインしてみましょう
動作確認
簡単なクエリを叩いてOpenSearchドメインへの接続に問題がないか確認してみます。
ログイン画面左下の「Dev Tools」をクリックします。
続いて、画面左下の[Data administration]をクリックします。
Indexの確認、ユーザー権限管理といったドメイン管理に必要な操作が可能です。
さいごに
追加料金なしで気軽にダッシュボード操作可能になったのは嬉しいですね。
クエリの発行も可能なのでローカルのダッシュボードの代替としても十分に思いました。今回はCLIで操作しましたが、マネジメントコンソールでの追加作業も比較的容易でした。
本来はワークスペース上で提供されるオブザービリティやセキュリティ分析機能がメインの機能とされているようなので、別の機会で触れてみたいと思います。