🐟

【AWS】Amazon OpenSearch Serverless を触ってみる

2023/02/16に公開

概要

Amazon OpenSearch Serverless とは

  • Amazon OpenSearch Serviceがサーバレスになりました
  • ただし、Lambda等と異なり利用していない時間は課金されない訳ではないので注意(後述)

Amazon OpenSearch Service からの大きな変更点

この説明を読むよりも、BlackBeltを参照いただくのが良いです
- https://pages.awscloud.com/rs/112-TZM-766/images/AWS-Black-Belt_2023_AmazonOpenSearchServerless_0131_v1.pdf

クラスタのサイジング、スケーリングの考慮が不要

  • OCU(OpenSearch Capacity Unit)という概念が導入された
    • 1 OCU = 1vCPU, 6GiB RAM, 120GiB Disk
  • CPU、メモリ、ディスクリソース、ホットシャードに対する書き込み、読み取り要求の増加により OCU がスケールアウト/スケールイン
    • インデックスと検索のワークロードが分離され、それぞれが個別でスケールできるような構成に
      • 両方を同時にスケールする必要がないので、より効率的になった印象
  • 最低 4 OCU(検索とインデックスに2ずつ)が必要

シャードとインデックスのライフサイクル管理が不要

  • シャード数は自動的に決定される(レプリカシャードは2で固定)
  • インデックスは自動的にローテーションされる

バージョンアップの自動化

  • サービスに影響が無いように自動的に実施される

コレクションという概念の導入

  • コレクション = 論理的なインデックスの集合
  • コレクション単位でエンドポイントとダッシュボードのURLが払い出されるので、従来のドメインに相当
  • 時系列用と検索用の2種類が存在する

触ってみる

以下のワークショップを参考に試してみます。
https://catalog.us-east-1.prod.workshops.aws/workshops/f8d2c175-634d-4c5d-94cb-d83bbc656c6a/en-US

IAM ユーザの作成

以下の手順に沿ってIAMユーザを作成し、Access KeyとSecret Access Keyを発行しておきます。

https://catalog.us-east-1.prod.workshops.aws/workshops/f8d2c175-634d-4c5d-94cb-d83bbc656c6a/en-US/20-getting-started/03-create-iam-credentials

これは後程OpenSearch Dashboardsにログインする際に利用します。
(IAMロールの一時クレデンシャルではログインできませんでした)

コレクションの作成

コレクションの詳細

コレクション名: time-series-workshop
コレクションタイプ: 時系列

暗号化

ネットワークアクセスの設定

タグ

データアクセスの設定

ルール名: workshop-data-access-rule

10分程度でアクティブになりました。

OpenSearch Dashboards へのアクセス

最初の手順で発行したAccess KeyとSecret Access Keyでログインします。

ServerlessではないAmazon OpenSearchにはきめ細かなアクセス等がありますが、Serverless側のダッシュボードにはセキュリティ系のメニューが表示されていませんね。

Data Ingestion

以下の手順を参考に実施していますが、スクリプト内にバグがあるので sed コマンドで修正しています。
また、処理は無限ループのようなので途中で止めています。

https://catalog.us-east-1.prod.workshops.aws/workshops/f8d2c175-634d-4c5d-94cb-d83bbc656c6a/en-US/30-time-series/04-data-ingestion-pipelines/02-opensearch-client-ingest

curl -O https://static.us-east-1.prod.workshops.aws/public/33d204e6-6f4f-4bc6-8eb4-75c29f44ddb1/static/ingestion-pipelines/opensearch-client-generator.py

# Fix invalid variable name
sed -i .bak "s/region_name/region/" opensearch-client-generator.py

export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY

pipenv --python 3.9
pipenv install requests_aws4auth boto3 opensearch-py geopy
pipenv run python opensearch-client-generator.py -h hostname.aoss.amazonaws.com -r region

2,550件ほどドキュメントが投入されていることが確認できました。

クライアント視点では大きく変わらず利用できそうですね。

以上

Discussion