本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將 Amazon CloudSearch 與 API Gateway 整合
本章提供有關整合 Amazon CloudSearch 與 Amazon API Gateway 的資訊。API Gateway 可讓您建立和託管 REST APIs以呼叫其他 服務。搭配 Amazon CloudSearch 使用 API Gateway 的一些使用案例包括:
-
使用 API 金鑰或 Amazon Cognito 使用者集區進一步保護 Amazon CloudSearch 搜尋端點的安全 Amazon Cognito
-
使用 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 提出請求。此章中的角色稱為
此角色也必須具有下列信任關係:
若要進一步了解,請參閱《IAM 使用者指南》中的建立角色。 |
建立與設定 API (主控台)
依據請求是否使用參數、需要請求內文、需要特定標頭,以及許多其他因素而定,建立 API 的步驟將有所不同。下列程序會建立具有一個函數的 API:在 Amazon CloudSearch 網域上執行搜尋。如需設定 APIs的詳細資訊,請參閱在 Amazon API Gateway 中建立 API。
建立 API (主控台)
-
登入 AWS Management Console,並在 https://https://console.aws.amazon.com/apigateway
開啟 API Gateway 主控台。 -
選擇建立 API (如果這是您第一次使用 API Gateway,請選擇開始使用)。
-
在 REST API 下選擇建置 (非私有)。
-
提供名稱和選用描述,然後選擇建立 API。
-
選擇動作、建立方法。從下拉式功能表中,選擇 GET 並確認。
-
針對 Integration type (整合類型),選擇 AWS Service (AWS 服務)。
-
針對AWS 區域,選擇 Amazon CloudSearch 網域所在的區域。
-
針對AWS 服務,選擇 CloudSearch。
-
對於AWS 子網域,請指定 Amazon CloudSearch 網域搜尋端點的子網域。
例如,如果網域的搜尋端點是
search-my-test-asdf5asdfasdfasdfasd5asdfg.us-west-1.cloudsearch.amazonaws.com
,請指定search-my-test-asdf5ambgebbgmmodhhq5asdfg
。 -
針對 HTTP Method (HTTP 方法),選擇 GET。
-
針對動作類型,選擇使用路徑覆寫,然後輸入
/2013-01-01/search
。 -
針對 Execution role (執行角色),請指定
的 ARN,例如my-api-gateway-role
arn:aws:iam::
。123456789012
:role/my-api-gateway-role
-
針對 Content Handling (內容處理),選擇 Passthrough (傳遞),使用預設的逾時,然後選擇 Save (儲存)。
-
選擇 Method Request (方法請求)。
-
針對 Request Validator (請求驗證程式),請選擇 Validate query string parameters and headers (驗證查詢字串參數和標頭),然後確認。
-
展開 URL Query String Parameters (URL 查詢字串參數)。選擇新增查詢字串、命名字串
q
,並確認。視需要標記查詢字串。 -
選擇 Method Execution (方法執行) 以返回方法摘要。
-
選擇 Integration Request (整合請求)。
-
展開 URL Query String Parameters (URL 查詢字串參數)。選擇新增查詢字串、命名字串
q
、提供 的映射method.request.querystring.q
,然後確認。
測試 API (主控台)
此時,您已建立擁有一個方法的 API。在部署 API 之前,您應進行 API 測試。
測試 API (主控台)
導覽至 Method Execution (方法執行) 頁面。
-
選擇測試。
-
在查詢字串下,輸入符合 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 開發人員指南。