Amazon CloudSearch と API Gateway の統合 - Amazon CloudSearch

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon CloudSearch と API Gateway の統合

この章では、Amazon CloudSearch と Amazon API Gateway の統合に関する情報を提供します。API Gateway を使用すると、他のサービスの呼び出しを行う REST API を作成し、ホストできます。Amazon CloudSearch の API Gateway を使用したユースケースには、以下のようなものがあります:

  • API キーや Amazon Cognito ユーザープールを使用して Amazon CloudSearch 検索エンドポイントの安全性を強化する

  • CloudWatchを使用して Amazon CloudSearch ドメインに対する検索呼び出しをモニタリングおよびログする

  • ユーザーをより限られた Amazon CloudSearch API サブセットに制限する

  • リクエスト数にレート制限を適用する

API Gateway の利点の詳細については、API Gateway デベロッパーガイドを参照してください。

Prerequisites

Amazon CloudSearch と API Gateway を統合する前に、次のリソースが必要です。

前提条件 説明
Amazon CloudSearch ドメイン

テスト用に、ドメインには検索可能なデータをいくつか用意してください。IMDb ムービーデータなどが最適です。

ドメインには次のアクセスポリシーが必要です。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/my-api-gateway-role" }, "Action": [ "cloudsearch:search", "cloudsearch:suggest" ] } ] }

このポリシーは、Amazon CloudSearch ドメインを設定し、API Gateway のみ (場合によってはアカウント所有者) がアクセスできます。詳細については、「Amazon CloudSearch ドメインの作成」および「Amazon CloudSearch のアクセス設定」を参照してください。

ヒント

アカウント所有者のアクセス権を制限したい場合は、AWS 全般リファレンスの「AWS アクセスキーを管理するためのベストプラクティス」を参照してください。

IAM ロール

このロールは API Gateway にアクセス許可を委任し、Amazon CloudSearch に対してリクエストを行うことを許可します。この章では、このロールは my-api-gateway-role と呼ばれ、次のアクセス許可があります:

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:PutLogEvents", "logs:GetLogEvents", "logs:FilterLogEvents" ], "Resource": "*" }] }

ロールにはまた、次の信頼関係が必要です:

{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "apigateway.amazonaws.com" }, "Action": "sts:AssumeRole" }] }

詳細については、IAM ユーザーガイドの「ロールの作成」を参照してください。

API の作成と設定 (コンソール)

API の作成に関するステップは、リクエストがパラメータを使用するか、リクエストボディを必要とするか、特定のヘッダーが必要か、およびその他多くの要素のいずれかによって異なります。次の手順では、1 つの関数を持つ API を作成します。これは Amazon CloudSearch ドメインの検索を実行します。API の設定の詳細については、「Amazon API Gateway での API の作成」を参照してください。

API を作成するには (コンソール)

  1. https://aws.amazon.com にアクセスし、[コンソールにサインイン] を選択します。

  2. [ネットワーキング & コンテンツ配信] の下にある API Gateway を選択します。

  3. API の作成 を選択します。

    API Gateway を初めて使用する場合は、始める を選択します。

  4. 新しい API を選択し、API に名前をつけ、必要に応じて説明を入力します。エンドポイントタイプリージョンを選択してから、API の作成を選択します。

  5. アクションメソッドの作成 の順に選択します。ドロップダウンメニューから GET を選択して確定します。

  6. 統合タイプ で、AWS のサービス を選択します。

  7. AWS リージョンでは、Amazon CloudSearch ドメインが置かれているリージョンを選択します。

  8. AWS のサービス で、CloudSearch を選択します。

  9. AWS サブドメイン で、Amazon CloudSearch ドメインの検索エンドポイントのサブドメインを指定します。

    例えば、ドメインの検索エンドポイントが search-my-test-asdf5asdfasdfasdfasd5asdfg.us-west-1.cloudsearch.amazonaws.com の場合、search-my-test-asdf5ambgebbgmmodhhq5asdfg を指定します。

  10. HTTP MethodGET を選択します。

  11. アクションの種類 で、パス上書きの使用 を選択し、/2013-01-01/search と指定します。

  12. 実行ロール で、my-api-gateway-role の ARN (例: arn:aws:iam::123456789012:role/my-api-gateway-role) を指定します。

  13. コンテンツの処理で、パススルー を選択し、デフォルトのタイムアウトを使用して保存を選択します。

  14. 新しいメソッドを選択し、メソッドリクエストを選択します。

  15. URL クエリ文字列パラメータ)で、クエリ文字列の追加を選択します。文字列に q と名前を付け、必須のマークを付けて、確定します。

  16. リクエストの検証で、クエリ文字列パラメータおよびヘッダーの検証を選択して、確定します。

  17. メソッドの実行を選択して、メソッドの要約に戻ります。

  18. 統合リクエストを選択します。

  19. URL クエリ文字列パラメータで、クエリ文字列の追加を選択します。文字列に q と名前を付け、method.request.querystring.q のマッピングを指定して、確定します。

API をテストする (コンソール)

この時点で、メソッドが 1 つある API が作成されています。API をデプロイする前に、テストする必要があります。

API をテストするには (コンソール)

  1. メソッドの実行ページに移動します。

  2. テストを選択します。

  3. [q] フィールドに、Amazon CloudSearch ドメインの一部のデータに一致するクエリ文字列を入力します。IMDb ムービーデータを使用している場合は、thor を試してみてください。

  4. テストを選択します。

  5. レスポンス本文に、次のように検索結果が含まれていることを検証します。

    { "status": { "rid": "rcWTo8IsviEK+own", "time-ms": 1 }, "hits": { "found": 7, "start": 0, "hit": [ { "id": "tt0800369", "fields": { "rating": "7.0", "genres": [ "Action", "Adventure", "Fantasy" ], "title": "Thor", "release_date": "2011-04-21T00:00:00Z", "plot": "The powerful but arrogant god Thor is cast out of Asgard to live amongst humans in Midgard (Earth), where he soon becomes one of their finest defenders.", "rank": "135", "running_time_secs": "6900", "directors": [ "Kenneth Branagh", "Joss Whedon" ], "image_url": "http://ia.media-imdb.com/images/M/MV5BMTYxMjA5NDMzNV5BMl5BanBnXkFtZTcwOTk2Mjk3NA@@._V1_SX400_.jpg", "year": "2011", "actors": [ "Chris Hemsworth", "Anthony Hopkins", "Natalie Portman" ] } }, ... ] } }

この時点で、機能する API ができています。メソッドを追加して、より堅牢な検索リクエスト、API のデプロイとレート制限の設定、API キーの作成と使用の指定、Amazon Cognito ユーザープール 認証の追加などを行うことができます。詳細については、API Gateway デベロッパーガイドを参照してください。