このトピックでは、curl を使用してコマンドラインから Alibaba Cloud Elasticsearch クラスターに接続する方法について説明します。
事前準備
クラスターエンドポイントの取得
Elasticsearch クラスターには、VPC プライベートネットワーク経由の内部エンドポイント、またはパブリックエンドポイントを使用して接続できます。
-
内部エンドポイント:Elasticsearch クラスターへの低レイテンシーで安定性の高い接続を提供します。このエンドポイントは、クラスター作成時にデフォルトで有効になります。
-
パブリックエンドポイント:インターネット経由で Elasticsearch クラスターに接続できます。このエンドポイントは手動で有効にする必要があります。
パブリックアクセスの有効化
-
Elasticsearch コンソールにログインし、お使いのインスタンスの基本情報ページに移動します。
-
ナビゲーションペインで、設定と管理 > セキュリティ設定 を選択し、パブリックアクセスを有効にします。クラスターのステータスが 初期化中 から 有効 に変更されると、パブリックアクセスが有効になります。
[パブリックアクセス] を有効にすると、[パブリックエンドポイント] は
es-cn-<instance_ID>.public.elasticsearch.aliyuncs.comの形式になります。[パブリック IP ホワイトリスト] はデフォルトでは空であり、設定する必要があります。重要パブリックエンドポイントを使用すると、Elasticsearch クラスターのセキュリティが損なわれる可能性があります。パブリックエンドポイントを使用する場合は、必ず IP ホワイトリストを設定し、使用後はパブリックアクセスを無効にしてください。
IP ホワイトリストの設定
クラスターを保護するには、アクセスに使用するデバイスの IP アドレスを、Elasticsearch クラスターの VPC プライベートネットワークまたはパブリック IP ホワイトリストに追加する必要があります。ホワイトリストに登録された IP アドレスを持つデバイスのみがクラスターにアクセスできます。
-
アクセスに使用するデバイスの IP アドレスを取得します。
次の表では、さまざまなシナリオで IP アドレスを取得する方法を説明します。
シナリオ:
IP アドレス:
方法:
ローカルデバイスから Elasticsearch クラスターに接続する
ローカルデバイスのパブリック IP アドレス。
ローカルデバイスが家庭用ネットワークや企業ネットワークなどのローカルエリアネットワーク (LAN) 上にある場合は、LAN のゲートウェイのパブリック IP アドレスをクラスターのパブリック IP ホワイトリストに追加する必要があります。
curl ipinfo.io/ipコマンドを実行して、ローカルデバイスのパブリック IP を確認します。異なる VPC の ECS インスタンスから Elasticsearch クラスターに接続する
ECS インスタンスのパブリック IP アドレス。
ECS コンソールにログインして、インスタンスリストで確認します。
同じ VPC の ECS インスタンスから Elasticsearch クラスターに接続する
ECS インスタンスのプライベート IP アドレス。
ECS コンソールにログインして、インスタンスリストで確認します。
-
この IP アドレスをホワイトリストグループに追加します。
-
Elasticsearch コンソールにログインします。 インスタンスの基本情報ページで、ナビゲーションペインから設定と管理 > セキュリティ設定を選択します。 変更をクリックして、VPC プライベートネットワークまたはパブリック IP ホワイトリストを設定します。
-
default グループの右側にある[設定]をクリックします。表示されるダイアログボックスで、VPC プライベートネットワークまたはパブリック IP ホワイトリストに IP アドレスを追加します。クラスターには、最大 300 個の IP アドレスまたは CIDR ブロックを追加できます。複数のエントリはコンマ (,) で区切り、スペースは追加しないでください。
-
また、Add IP address whitelist Group をクリックしてカスタムグループを作成することもできます。
-
ホワイトリストグループは IP アドレス管理のためのものであり、アクセス権限には影響しません。すべてのグループのすべての IP アドレスは同じ権限を持ちます。
設定タイプ:
形式と例:
重要な注意事項:
IPv4 アドレス形式
-
単一 IP:
192.168.0.1 -
CIDR ブロック:
192.168.0.0/24
-
すべてのアクセスを拒否:
127.0.0.1 -
すべてのアクセスを許可:
0.0.0.0/0重要これは高いセキュリティリスクをもたらします。
0.0.0.0/0を設定しないことを強く推奨します。7.16 や 8.5 などの一部のクラスターバージョンおよびリージョンでは、
0.0.0.0/0はサポートされていません。詳細については、コンソール UI またはエラーメッセージをご参照ください。
IPv6 アドレス形式
(China (Hangzhou) リージョンの v2 デプロイメントアーキテクチャクラスターでのみサポートされています)
-
単一 IP:
2401:XXXX:1000:24::5 -
CIDR ブロック:
2401:XXXX:1000::/48
-
すべてのアクセスを拒否:
::1 -
すべてのアクセスを許可:
::/0重要これは高いセキュリティリスクをもたらします。
::/0を設定しないことを強く推奨します。クラスターのバージョンによっては、
::/0をサポートしていません。詳細については、コンソール UI または設定プロンプトをご参照ください。
-
-
OK をクリックします。
-
プロトコルと証明書
-
パブリック HTTPS: 信頼できる証明機関 (CA) によって発行された証明書を使用します。特別なクライアント設定は必要ありません。
https://プロトコルを使用して直接接続します。 -
プライベート HTTPS: 自己署名証明書を暗号化伝送に使用します。VPC プライベートネットワークは中間者攻撃に対して安全であるため、
-kパラメーターを使用して証明書の検証をバイパスすることで、クラスターに安全にアクセスできます。
クラスターへの接続
コマンド構文
# パブリック HTTPS
curl -u '<UserName>:<YourPassword>' 'https://<YourEsHost>:port'
# プライベート HTTP
curl -u '<UserName>:<YourPassword>' 'http://<YourEsHost>:port'
# プライベート HTTPS (-k を使用して証明書検証をバイパス)
curl -k -u '<UserName>:<YourPassword>' 'https://<YourEsHost>:port'
|
パラメータ: |
説明: |
|
UserName |
デフォルトのユーザー名 elastic は、クラスター上で最も高い権限を持つ管理者アカウントです。 セキュリティ上の理由から、本番環境ではこのデフォルトの管理者アカウントを使用しないことを推奨します。Elasticsearch X-Pack のロールベースのアクセス制御 (RBAC) メカニズムを使用して、カスタムロールを作成し、権限を割り当て、ユーザーにロールを割り当てることで、きめ細かなアクセス制御を行うことができます。詳細については、「Elasticsearch X-Pack ロールを使用したユーザー権限の管理」をご参照ください。 |
|
YourPassword |
指定した UserName のパスワード。 |
|
https |
アクセスプロトコル。HTTP プロトコルはデフォルトで有効になっています。 転送中のデータの機密性、安全性、完全性を確保するために、HTTPS プロトコルを有効にして使用することをお勧めします。 HTTPS を有効にするには、Elasticsearch コンソールにログオンします。 インスタンスの 基本情報 ページで、ナビゲーションペインの 設定と管理 > セキュリティ設定 を選択し、HTTPS プロトコルを有効にします。 重要
|
|
YourEsHost |
「事前準備」のセクションで取得したクラスターエンドポイントです:
|
|
port |
クラスターにアクセスするためのポート。VPC プライベートネットワークとパブリックアクセスの両方で、デフォルトのポートは 9200 です。 |
例
# パブリック HTTPS アクセス
curl -u 'user123:Passw0rd!' 'https://es-xx-xxxxxxxxxxxxxxxxx.public.elasticsearch.aliyuncs.com:9200'
# プライベート HTTP アクセス
curl -u 'user123:Passw0rd!' 'http://es-cn-0pp1****.elasticsearch.aliyuncs.com:9200'
# プライベート HTTPS アクセス (-k を使用して証明書検証をバイパス)
curl -k -u 'user123:Passw0rd!' 'https://es-cn-0pp1****.elasticsearch.aliyuncs.com:9200'
接続が成功すると、以下のようなクラスター情報が返されます。その後、Elasticsearch REST API を使用してクラスターを管理したり、インデックス操作を実行したりできます。
{
"name" : "es-cn-aic**************-master-i-2",
"cluster_name" : "es-cn-aic**************",
"cluster_uuid" : "InmpfI1oQB2ijtdZ******",
"version" : {
"number" : "8.17.0",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "0bdf7********************************50279ae7c",
"build_date" : "2025-03-05T02:31:55.853663566Z",
"build_snapshot" : false,
"lucene_version" : "10.0.0",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
接続失敗のトラブルシューティング
Elasticsearch クラスターに接続できない場合は、次の項目を順番に確認してください:
-
ネットワーク接続: Elasticsearch クラスターとクライアントが同じ VPC にあることを確認してください。同じ VPC にない場合は、Cloud Enterprise Network (CEN) または NAT ゲートウェイを使用して 2 つのネットワークを接続してください。
-
セキュリティグループルール: ECS セキュリティグループのインバウンドルールでポート 9200 が開いているかどうかを確認してください。RDS for MySQL データ同期のシナリオでは、Elasticsearch クラスターと RDS for MySQL インスタンスの両方が、互いの IP アドレスを パブリック IP ホワイトリストまたは VPC プライベートネットワークホワイトリストに追加していることを確認してください。
-
Docker ルートテーブル:クライアントが Docker コンテナで実行されている場合、Docker がホストのルートテーブルを変更して、同じ VPC 内のホスト間の接続を中断させることがあります。クライアントで
route -nコマンドを実行してルートテーブルを検査し、ルーティングの問題を特定します。 -
ドメイン名とポート: クラスターエンドポイント (ドメイン名) とポートに誤りがないことを確認してください。エンドポイントの取得の詳細については、このトピックの「事前準備」セクションをご参照ください。
-
ファイアウォールとルーティング制限: ネットワーク上のエンタープライズファイアウォールまたはその他のルーティング制限がポート 9200 をブロックしているかどうかを確認してください。
-
タイムアウト設定: 誤ったタイムアウトによる接続失敗を回避するため、クライアント側で
ConnectTimeoutおよびSocketTimeoutパラメーターの値を大きくします。
関連する設定については、以下もご参照ください:
-
クラスターのパスワードを忘れた場合は、Elasticsearch コンソールでリセットできます。
-
初めてパブリックアクセスを有効にする場合、default ホワイトリストグループから
127.0.0.1を削除し、お使いのデバイスのパブリック Egress IP アドレスを追加します。詳細については、このトピックの「IP ホワイトリストの設定」セクションをご参照ください。