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 デベロッパーガイド」を参照してください。

前提条件

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

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

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

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

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

IAM ロール

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

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

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

JSON
{ "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. にサインインし AWS マネジメントコンソール、https://console.aws.amazon.com/apigateway で API Gateway コンソールを開きます。

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

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

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

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

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

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

  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 デベロッパーガイド」を参照してください。