將 Amazon CloudSearch 與 API Gateway 集成 - Amazon CloudSearch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將 Amazon CloudSearch 與 API Gateway 集成

本章提供有關整合 Amazon CloudSearch 與 Amazon API Gateway 的資訊。API Gateway 可讓您建立和託管 REST API,以呼叫其他服務。將 API Gateway 與 Amazon 搭配使用的一些使用案例 CloudSearch 包括:

  • 使用 API 金鑰或 Amazon Cognito 使用者集區進一步保護亞馬遜 CloudSearch 搜尋端點

  • 用 CloudWatch 於監控和記錄對 Amazon CloudSearch 網域的搜尋呼叫

  • 將使用者限制為更有限的 Amazon CloudSearch API 子集

  • 針對請求數量強制執行速率限制

若要進一步了解 API Gateway 的優點,請參閱 API Gateway 開發人員指南

必要條件

在將 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

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 的步驟將有所不同。下列程序會建立具有一個功能的 API:在 Amazon CloudSearch 網域上執行搜尋。如需有關設定 API 的詳細資訊,請參閱在 Amazon API 閘道中建立 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 (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 Method (HTTP 方法),選擇 GET

  11. 在「動作類型」中,選擇「使用路徑覆寫」 並輸入/2013-01-01/search

  12. 針對 Execution role (執行角色),請指定 my-api-gateway-role 的 ARN,例如 arn:aws:iam::123456789012:role/my-api-gateway-role

  13. 針對 Content Handling (內容處理),選擇 Passthrough (傳遞),使用預設的逾時,然後選擇 Save (儲存)

  14. 選擇 Method Request (方法請求)

  15. 針對 Request Validator (請求驗證程式),請選擇 Validate query string parameters and headers (驗證查詢字串參數和標頭),然後確認。

  16. 展開 URL Query String Parameters (URL 查詢字串參數)。選擇 [新增查詢字串]、命名字串q,然後確認。視需要標記查詢字串。

  17. 選擇 Method Execution (方法執行) 以返回方法摘要。

  18. 選擇 Integration Request (整合請求)

  19. 展開 URL Query String Parameters (URL 查詢字串參數)。選擇 [新增查詢字串] q、命名字串、提供對應method.request.querystring.q,然後確認。

測試 API (主控台)

此時,您已建立擁有一個方法的 API。在部署 API 之前,您應進行 API 測試。

測試 API (主控台)
  1. 導覽至 Method Execution (方法執行) 頁面。

  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 開發人員指南