CloudSearchを使ってみた


はじめに

SAPの勉強中にCloudSearchというサービスを初めて知ったので試しに触ってみます。

CloudSearchの概要

  • ウェブサイト、アプリケーション向けの検索機能を実装できるフルマネージド型サービス
  • アーキテクチャ
    • 構成サービス:検索ドメイン作成・構成
    • ドキュメントサービス
    • 検索サービス
  • 検索インスタンスが1つ以上存在(自動的にスケールアップ・スケールアウト)
  • アップデートが2015年で停止(https://aws.amazon.com/jp/cloudsearch/whats-new/)

料金

  • 初めての使用の場合、30日間無料
  • 通常料金
    • 検索インスタンスタイプsearch.m1.small $0.082/hour
    • マルチAZなら単純に倍
    • ドキュメントバッチのアップロード $0.1/1000件
    • IndexDocumentsリクエスト(インデックス構成変更) $0.98/検索ドメインに格納されたデータ1GB
    • データ転送(イン) 無料
    • データ転送(アウト) 最初の10TB/月 $0.14/1GB
    • データ転送量は少し複雑なので鵜呑みにせず公式サイト参照のこと

https://aws.amazon.com/jp/cloudsearch/pricing/

使ってみた

コンソールからCloudSearchに移動し、Create a new search domainをクリック。

ドメイン名やインスタンスタイプなどを以下の通り入力。

項目
Search Domain Name test
Desired Instance Type Use default (search small)
Desired Replication Count Use default (0)

Use defaultの既定値は、ドメイン作成後に以下の通りcliを使用して確認しました。

[cloudshell-user@ip-10-0-142-142 ~]$ aws cloudsearch describe-scaling-parameters --domain-name test
{
    "ScalingParameters": {
        "Options": {
            "DesiredReplicationCount": 0,
            "DesiredPartitionCount": 0
        },
        "Status": {
            "CreationDate": "2021-04-21T13:53:50.348000+00:00",
            "UpdateDate": "2021-04-21T13:53:50.348000+00:00",
            "UpdateVersion": 15,
            "State": "Active",
            "PendingDeletion": false
        }
    }
}
[cloudshell-user@ip-10-0-142-142 ~]$ aws cloudsearch describe-domains --domain-name test --query DomainStatusList[*]["SearchInstanceType"]
[
    [
        "search.small"
    ]
]

インスタンスタイプとレプリケーションカウントは後から変更可能です。
あらかじめ大量のトラフィックやデータが予想されている場合、最初の設定時からインスタンスタイプなどを大きく設定できます。
CloudSearchは自動的にスケールしますが、希望したインスタンスタイプやレプリケーションカウントを下回ることはありません。
設定した内容を下限として動作します。

今回、インデックス作成にはデモを使用します。

デモを使用しているので、良い感じに設定してくれています。
実際に自分が設定するとなると時間がかかりそうですね。

自分が使用しているグローバルIPアドレスを指定します。

内容を確認します。

ドメインの初期化に10分ほど時間がかかります。

完了するまで待ちます。

完了しました。
ドキュメントがないので、デモをダウンロードします。

5000のドキュメントがアップロードされます。

jacksonで検索をかけると一致するものが表示されました。

ブラウザからエンドポイントを入力しても表示されます。
Search Endpoint/2013-01-01/search?q=jackson&format=xml

Access Policyを全て拒否に設定すると、以下のようにブラウザからの検索はできなくなります。

ブラウザからも検索できていたのは、Access Policyで自分のグローバルIPを許可していたからだということがはっきりと分かりました。

おわりに

実際にアプリなどに組み込むときはどのようにするのか気になります。
今回の目的はとりあえずCloudSearchに触れてみることなので、ここまでにしておきます。