翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 映画データなどが最適です。 ドメインには次のアクセスポリシーが必要です。
このポリシーは、API Gateway (およびおそらくアカウント所有者) のみがアクセスできるように Amazon CloudSearch ドメインを設定します。詳細については、Amazon CloudSearch ドメインの作成「」および「Amazon のアクセスの設定 CloudSearch」を参照してください。 |
IAM ロール |
このロールは API Gateway にアクセス許可を委任し、Amazon にリクエストできるようにします CloudSearch。この章では、このロールは
ロールにはまた、次の信頼関係が必要です:
詳細については、「IAM ユーザーガイド」の「ロールの作成」を参照してください。 |
API の作成と設定 (コンソール)
API の作成に関するステップは、リクエストがパラメータを使用するか、リクエストボディを必要とするか、特定のヘッダーが必要か、およびその他多くの要素によって異なります。次の手順では、Amazon CloudSearch ドメインで検索を実行するという 1 つの関数を持つ API を作成します。API の設定の詳細については、「Amazon API Gateway での API の作成」を参照してください。
API を作成するには (コンソール)
-
AWS Management Console にサインインし、API Gateway コンソール (https://console.aws.amazon.com/apigateway
) を開きます。 -
[API を作成] を選択するか、API Gateway を初めて使用する場合は [開始する] を選択します。
-
[REST API] (プライベートではない) で、[構築] を選択します。
-
名前と、必要に応じて説明を入力した後、[API を作成] をクリックします。
-
[アクション]、[メソッドを作成] の順に選択します。ドロップダウンメニューから GET を選択して確定します。
-
[Integration Type] で、[AWS Service] を選択します。
-
AWS リージョン で、Amazon CloudSearch ドメインが存在するリージョンを選択します。
-
[AWS Service (サービス)] で、[CloudSearch] を選択します。
-
AWS サブドメイン には、Amazon CloudSearch ドメインの検索エンドポイントのサブドメインを指定します。
例えば、ドメインの検索エンドポイントが
search-my-test-asdf5asdfasdfasdfasd5asdfg.us-west-1.cloudsearch.amazonaws.com
の場合、search-my-test-asdf5ambgebbgmmodhhq5asdfg
を指定します。 -
HTTP Method で GET を選択します。
-
[アクションの種類] で、[パス上書きの使用] を選択し、
/2013-01-01/search
を入力します。 -
実行ロール で、
の ARN (例:my-api-gateway-role
arn:aws:iam::
) を指定します。123456789012
:role/my-api-gateway-role
-
コンテンツの処理で、パススルー を選択し、デフォルトのタイムアウトを使用して保存を選択します。
-
[メソッドリクエスト] を選択します。
-
リクエストの検証で、クエリ文字列パラメータおよびヘッダーの検証を選択して、確定します。
-
[URL クエリ文字列パラメータ] を展開します。[クエリ文字列を追加] を選択し、文字列に
q
と名前を付けて確定します。必要に応じてクエリ文字列をマークします。 -
メソッドの実行を選択して、メソッドの要約に戻ります。
-
統合リクエストを選択します。
-
[URL クエリ文字列パラメータ] を展開します。[クエリ文字列を追加] を選択します。文字列に
q
と名前を付け、method.request.querystring.q
のマッピングを指定して、確定します。
API をテストする (コンソール)
この時点で、メソッドが 1 つある API が作成されています。API をデプロイする前に、テストする必要があります。
API をテストするには (コンソール)
メソッドの実行ページに移動します。
-
テストを選択します。
-
クエリ文字列 に、Amazon CloudSearch ドメイン内の一部のデータに一致するクエリ文字列を入力します。IMDb 映画データを使用している場合は、
q=thor
を試してみてください。 -
テストを選択します。
-
レスポンス本文に、次のように検索結果が含まれていることを検証します。
{ "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 デベロッパーガイド」を参照してください。