Amazon OpenSearch Service に関する情報を集約するページ
see also: Introduction to OpenSearch
GET /_cat/indices
PUT <index_name>
PUT voice_actor/_doc/1 { "name": "阿澄佳奈" } # 更新 POST voice_actor/_doc/1 { "name": "原田佳奈" }
GET voice_actor/_doc/1
DELETE voice_actor
see also: Query DSL
GET voice_actor/_search?q=name:阿澄 GET voice_actor/_search { "query":{"match_phrase":{ "name":"青山"}}, "size": 10 }
GET voice_actor/_mapping
$ DOMAIN_ENDPOINT=... $ awscurl --region ap-northeast-1 --service es ${DOMAIN_ENDPOINT}/_cat/indices green open .kibana_1 FyeGWV3QSeCkI8LqW7jIXQ 1 0 1 0 4.9kb 4.9kb
see also: Python - Amazon OpenSearch Service への HTTP リクエストの署名
まず pip install boto3 opensearch-py requests requests-aws4auth
コマンドにて関連するライブラリの導入を行う。そののち以下のような実装にてドメインへリクエストを行える。
from opensearchpy import OpenSearch, RequestsHttpConnection, AWSV4SignerAuth import boto3 host = '' # cluster endpoint, for example: my-test-domain.us-east-1.es.amazonaws.com region = '' # e.g. us-west-1 credentials = boto3.Session().get_credentials() auth = AWSV4SignerAuth(credentials, region) index_name = 'movies' client = OpenSearch( hosts = [{'host': host, 'port': 443}], http_auth = auth, use_ssl = True, verify_certs = True, connection_class = RequestsHttpConnection ) q = 'miller' query = { 'size': 5, 'query': { 'multi_match': { 'query': q, 'fields': ['title^2', 'director'] } } } response = client.search( body = query, index = index_name ) print('\nSearch results:') print(response)
OpenSearch Service のセキュリティのレイヤーは以下の 3 つに大別することができる
see also: VPC 内で Amazon OpenSearch Service ドメインを起動する
OpenSearch ドメインを自身の AWS アカウントの VPC 内に設置できる。VPC からのリクエストをドメインが受け付けるためにはセキュリティグループに以下の 2 つのインバウンドルールを設定する必要がある。
アクセスポリシーによるドメインへのアクセス制御の方法として以下の 3 つが用意されている
TODO
前項までは主にリクエストに対してどのようなセキュリティ機構があるかをみてきたが、OpenSearch Service には「データ保管中の暗号化」および「ノード間の通信の暗号化」というデータ保護の観点がある。
KMS 暗号化キーを用いて、すべてのインデックス、OpenSearch ログ、スワップファイル、アプリケーションディレクトリのその他すべてのデータ、自動スナップショットの暗号化が実施できる。なお、手動スナップショット、スロークエリログ、エラーログの暗号化には追加のステップが必要。
OpenSearch Service ドメインはパブリックであるか VPC アクセスであるかに依存せず、専用の VPC 内に配置される。しかしデフォルトでは VPC 内のノード間のトラフィックは暗号化されない。暗号化のためにはノード感の暗号化を有効化する設定が必要で、これにより TLS 1.2 で保護される。
ウェブ界隈でエンジニアとして労働活動に励んでいる @gomi_ningen 個人のブログです