Amazon CloudSearch と API Gateway の統合 - Amazon CloudSearch

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

Amazon CloudSearch と API Gateway の統合

この章では、Amazon CloudSearch と Amazon API Gateway の統合について説明します。API Gateway を使用すると、他のサービスの呼び出しを行う REST API を作成し、ホストできます。Amazon で API Gateway を使用するユースケース CloudSearch には、次のようなものがあります。

  • API キーまたは Amazon Cognito ユーザープールを使用した Amazon CloudSearch 検索エンドポイントの保護の強化

  • CloudWatch を使用した Amazon CloudSearch ドメインへの検索呼び出しのモニタリングとログ記録

  • Amazon CloudSearch API のより限定的なサブセットへのユーザーの制限

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

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

前提条件

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

前提条件 説明
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" ] } ] }

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

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

API を作成するには (コンソール)
  1. AWS Management Console にサインインし、API Gateway コンソール (https://console.aws.amazon.com/apigateway) を開きます。

  2. [API を作成] を選択するか、API Gateway を初めて使用する場合は [開始する] を選択します。

  3. [REST API] (プライベートではない) で、[構築] を選択します。

  4. 名前と、必要に応じて説明を入力した後、[API を作成] をクリックします。

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

  6. [Integration Type] で、[AWS Service] を選択します。

  7. AWS リージョン で、Amazon CloudSearch ドメインが存在するリージョンを選択します。

  8. [AWS Service (サービス)] で、[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. リクエストの検証で、クエリ文字列パラメータおよびヘッダーの検証を選択して、確定します。

  16. [URL クエリ文字列パラメータ] を展開します。[クエリ文字列を追加] を選択し、文字列に q と名前を付けて確定します。必要に応じてクエリ文字列をマークします。

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

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

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

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

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

API をテストするには (コンソール)
  1. メソッドの実行ページに移動します。

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

  3. クエリ文字列 に、Amazon CloudSearch ドメイン内の一部のデータに一致するクエリ文字列を入力します。IMDb 映画データを使用している場合は、q=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 デベロッパーガイド」を参照してください。