本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
允許未經驗證的訪客使用API金鑰存取您的應用程式
當您APIs在應用程式中呼叫 Amazon Location Service 時,您通常會以已授權進行呼叫的身分進行此API呼叫。不過,在某些情況下,您不想驗證應用程式的每位使用者。例如,您可能想要讓任何使用網站的人都可以使用顯示您業務位置的 Web 應用程式,無論他們是否已登入。在這種情況下,其中一個替代方法是使用 API 金鑰進行API呼叫。
API 金鑰是與 中特定 Amazon Location Service 資源, AWS 帳戶以及您可以對這些資源執行的特定動作相關聯的金鑰值。您可以使用應用程式中的 API金鑰,對這些資源的 Amazon Location 進行未經驗證APIs的呼叫。例如,如果您將API索引鍵與地圖資源 myMap和GetMap*
動作建立關聯,則使用該API索引鍵的應用程式將能夠檢視使用該資源建立的地圖,而且您的帳戶將按照您帳戶的任何其他用量收費。相同的API金鑰不會授予變更或更新映射資源的許可,只允許使用該資源。
注意
API 金鑰僅適用於映射 、放置 和路由資源,您無法修改或建立這些資源。如果您的應用程式需要存取未驗證使用者的其他資源或動作,您可以使用 Amazon Cognito 提供存取,並搭配 金鑰,或代替 API 金鑰。如需詳細資訊,請參閱允許未經驗證的訪客使用 Amazon Cognito 存取您的應用程式。
API 金鑰包含純文字值,可讓您存取 中的一或多個資源 AWS 帳戶。如果有人複製您的API金鑰,他們可以存取這些相同的資源。若要避免這種情況,您可以指定建立API金鑰時可以使用金鑰的網域。這些網域稱為參考。如有需要,您也可以透過設定API金鑰的過期時間來建立短期API金鑰。
API 金鑰與 Amazon Cognito 的比較
API 金鑰和 Amazon Cognito 以類似方式用於類似案例,所以為什麼您會使用一個而不是另一個? 下列清單會反白顯示兩者之間的部分差異。
-
API 金鑰僅適用於地圖、位置和路由資源,且僅適用於特定動作。Amazon Cognito 可用於驗證對大多數 Amazon Location Service 的存取APIs。
-
使用 API金鑰的映射請求效能通常比使用 Amazon Cognito 的類似案例更快。更簡單的身分驗證意味著在短時間內再次取得相同的地圖動態磚時,服務往返和快取請求較少。
-
使用 Amazon Cognito 時,您可以使用自己的身分驗證程序,或使用 Amazon Cognito 聯合身分結合多種身分驗證方法。如需詳細資訊,請參閱 Amazon Cognito 開發人員指南 中的聯合身分入門。
建立API金鑰
您可以建立API金鑰,並將其與 中的一或多個資源建立關聯 AWS 帳戶。
您可以使用 Amazon Location Service 主控台、 AWS CLI或 Amazon Location 建立API金鑰APIs。
使用 API 金鑰呼叫 Amazon Location API
建立API金鑰後,您可以使用金鑰值,在APIs應用程式中呼叫 Amazon Location。
支援API金鑰APIs的 具有使用API金鑰值的其他參數。例如,如果您呼叫 GetPlace
API,您可以填寫金鑰參數,如下所示
GET /places/v0/indexes/
IndexName
/places/PlaceId
?key=KeyValue
如果您填寫此值,則不需要像平常一樣使用 AWS Sig v4 驗證API呼叫。
對於 JavaScript 開發人員,您可以使用 Amazon Location JavaScript 驗證協助程式來協助使用API金鑰驗證API操作。
對於行動開發人員,您可以使用下列 Amazon Location 行動身分驗證 SDKs:
對於 AWS CLI 使用者,當您使用 --key
參數時,您也應該使用 --no-sign-request
參數,以避免使用 Sig v4 簽署。
注意
如果您在對 Amazon Location Service 的呼叫中同時包含 key
和 AWS Sig v4 簽章,則只會使用 API金鑰。
使用 API 金鑰轉譯映射
您可以使用 API 鍵值,在應用程式中使用 轉譯映射 MapLibre。這與您直接APIs呼叫的其他 Amazon 位置使用API金鑰稍有不同,因為 會為您呼叫 MapLibre 這些金鑰。
下列範例程式碼顯示使用 API金鑰,透過使用 MapLibre GL JS 地圖控制項,在簡單的網頁中呈現地圖。若要讓此程式碼正常運作,請取代 v1.public.your-api-key-value
,
us-east-1
和 ExampleMap
字串,其值與您的 相符 AWS 帳戶。
<!-- index.html --> <html> <head> <link href="https://unpkg.com/maplibre-gl@1.14.0/dist/maplibre-gl.css" rel="stylesheet" /> <style> body { margin: 0; } #map { height: 100vh; } </style> </head> <body> <!-- Map container --> <div id="map" /> <!-- JavaScript dependencies --> <script src="https://unpkg.com/maplibre-gl@1.14.0/dist/maplibre-gl.js"></script> <script> const apiKey = "
v1.public.your-api-key-value
"; // API key const region = "us-east-1
"; // Region const mapName = "ExampleMap
"; // Map name // URL for style descriptor const styleUrl = `https://maps.geo.${region}.amazonaws.com/maps/v0/maps/${mapName}/style-descriptor?key=${apiKey}`; // Initialize the map const map = new maplibregl.Map({ container: "map", style: styleUrl, center: [-123.1187, 49.2819], zoom: 11, }); map.addControl(new maplibregl.NavigationControl(), "top-left"); </script> </body> </html>
管理API金鑰生命週期
您可以建立無限期運作的API金鑰。不過,如果您想要建立臨時API金鑰、定期輪換API金鑰或撤銷現有API金鑰,您可以使用API金鑰過期 。
建立新API金鑰或更新現有金鑰時,您可以設定該API金鑰的過期時間。
-
當API金鑰達到其過期時間時,金鑰會自動停用。非作用中金鑰無法再用於提出映射請求。
-
您可以在停用API金鑰 90 天後刪除金鑰。
-
如果您有尚未刪除的非作用中金鑰,您可以透過將過期時間更新為未來時間來還原。
-
若要建立永久金鑰,您可以移除過期時間。
-
如果您嘗試停用過去 7 天內已使用的API金鑰,系統會提示您確認是否要進行變更。如果您使用 Amazon Location Service API或 AWS CLI,除非您將
ForceUpdate
參數設定為 true,否則會收到錯誤。