🐟
【AWS】Amazon OpenSearch Serverless を触ってみる
概要
- Amazon OpenSearch Serverless が2023/1/25にGAになりましたので、触ってみたいと思います。
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ずつ)が必要
- $0.334/1h/1 OCUなので、 $961/month は最低限必要
- コスト削減を目的に利用するものではなさそう
- https://aws.amazon.com/jp/opensearch-service/pricing/
- $0.334/1h/1 OCUなので、 $961/month は最低限必要
シャードとインデックスのライフサイクル管理が不要
- シャード数は自動的に決定される(レプリカシャードは2で固定)
- インデックスは自動的にローテーションされる
バージョンアップの自動化
- サービスに影響が無いように自動的に実施される
コレクションという概念の導入
- コレクション = 論理的なインデックスの集合
- コレクション単位でエンドポイントとダッシュボードのURLが払い出されるので、従来のドメインに相当
- 時系列用と検索用の2種類が存在する
触ってみる
以下のワークショップを参考に試してみます。
IAM ユーザの作成
以下の手順に沿ってIAMユーザを作成し、Access KeyとSecret Access Keyを発行しておきます。
これは後程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 コマンドで修正しています。
また、処理は無限ループのようなので途中で止めています。
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