🎃
Amazon OpenSearch Serviceに入門してみた。localstack準備編
全3編です
概要
Amazon OpenSearchServiceを触ったことがないのでチュートリアルをやってみる。
入門前のOpenSearchServiceの自分なりの理解は以下。
- 文書の全文検索ができる
- google検索みたいなやつのカスタム版
- 検索用のindexなどが効かせられて早い
- いろんな検索ができる(ログ解析など、出現頻度とか?)
- elastic search(以降ES)を全文検索エンジンとして使用している
- データノードという概念があり、パフォーマンス/コスト、の観点で理解しておく必要がある
記載しないこと
- localstackの準備について
- aws cli awslocalの準備について
環境構築 @localstack
チュートリアルを進めたいが、awsへのdeployは避けたいのでlocalstackで環境を作る
localstackで使用できるAPIは限られていて何でもできるわけではない。
チュートリアルではOpenSearch Dashboardsを使うので、そのパターンの設定をします。
OpenSearch Dashboardを使う場合
リージョン指定に注意!
起動用の設定を作っておきます。
{
"DomainName": "secure-domain",
"ClusterConfig": {
"InstanceType": "r5.large.search",
"InstanceCount": 1,
"DedicatedMasterEnabled": false,
"ZoneAwarenessEnabled": false,
"WarmEnabled": false
},
"EBSOptions": {
"EBSEnabled": true,
"VolumeType": "gp2",
"VolumeSize": 10
},
"EncryptionAtRestOptions": {
"Enabled": true
},
"NodeToNodeEncryptionOptions": {
"Enabled": true
},
"DomainEndpointOptions": {
"EnforceHTTPS": true
},
"AdvancedSecurityOptions": {
"Enabled": false,
"InternalUserDatabaseEnabled": true,
"MasterUserOptions": {
"MasterUserName": "admin",
"MasterUserPassword": "really-secure-passwordAa!1"
}
}
}
localstackを開始します。
後で参照できるようにネットワーク名を指定して起動します。
localstack start --network ls
セキュリティオプションを指定してopensearchのドメインを作ります。
awslocalのデフォルトリージョンがap-northeast-1の場合はリージョン指定を忘れないこと!
awslocal opensearch create-domain --cli-input-json file://./opensearch_domain.json --region us-east-1
セキュリティオプション利用時は以下のようにアクセスし、クラスターが起動状態で健康か確認をします
curl -u 'admin:really-secure-passwordAa!1' http://secure-domain.us-east-1.opensearch.localhost.localstack.cloud:4566/_cluster/health | jq .
IPアドレスを確認します
docker inspect localstack-main | \
jq -r '.[0].NetworkSettings.Networks | to_entries | .[].value.IPAddress'
ダッシュボードを起動します
--dnsには上記で帰ってきたアドレスを設定します。
docker run --rm -p 5601:5601 \
--network ls \
--dns 172.20.0.2 \
-e "OPENSEARCH_HOSTS=http://secure-domain.us-east-1.opensearch.localhost.localstack.cloud:4566" \
-e "OPENSEARCH_USERNAME=admin" -e 'OPENSEARCH_PASSWORD=really-secure-passwordAa!1' \
opensearchproject/opensearch-dashboards:2.11.0
ダッシュボードにアクセスします
とりあえずここまででOpenSearchの準備はできたようです。
OpenSearch Dashboardを使わない場合
cliだけで試す場合は以下で環境を作れます。
localstackを開始します。
localstack start
OpenSearchService Clusterを作るために CreateDomain APIを使います。
awslocal opensearch create-domain --domain-name my-domain
OpenSearchのバージョンが更新されているとダウンロードするために時間がかかる場合があります。
以下で状態を確認できます。
awslocal opensearch describe-domain \
--domain-name my-domain | jq ".DomainStatus.Processing"
falseが返れば準備完了です。
クラスターが正常に動作しているか確認します
curl http://my-domain.us-east-1.opensearch.localhost.localstack.cloud:4566
クラスターが起動状態で健康か確認をします
curl -s http://my-domain.us-east-1.opensearch.localhost.localstack.cloud:4566/_cluster/health | jq .
以上です。
Discussion