本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 AWS SAM 範本控制API存取
控制 API Gateway 的存取APIs有助於確保您的無伺服器應用程式安全無虞,而且只能透過您啟用的授權存取。您可以在 AWS SAM 範本中啟用授權,以控制誰可以存取您的 API Gateway APIs。
AWS SAM 支援多種控制API閘道存取的機制APIs。AWS::Serverless::HttpApi
和AWS::Serverless::Api
資源類型之間的支援機制集不同。
下表摘要說明每個資源類型支援的機制。
控制存取的機制 | AWS::Serverless::HttpApi | AWS::Serverless::Api |
---|---|---|
Lambda 授權人 | ✓ | ✓ |
IAM權限 | ✓ | |
Amazon Cognito 使用者集區 | ✓ * | ✓ |
API鑰匙 | ✓ | |
資源政策 | ✓ | |
OAuth2.0/ 授權JWT人 | ✓ |
* 您可以使用 Amazon Cognito 做為具有AWS::Serverless::HttpApi
資源類型的JSON網頁權杖 (JWT) 發行者。
-
Lambda 授權者 — Lambda 授權者 (以前稱為自訂授權者) 是您提供的 Lambda 函數,用於控制您的. API 呼API叫您時,會使用要求內容或用戶端應用程式提供的授權權杖來叫用此 Lambda 函數。Lambda 函數會回應呼叫者是否獲授權執行要求的作業。
AWS::Serverless::HttpApi
和AWS::Serverless::Api
資源類型都支援 Lambda 授權者。如需使用 Lambda 授權者的詳細資訊
AWS::Serverless::HttpApi
,請參閱API閘道開發人員指南HTTPAPIs中的與 AWS Lambda 授權人合作。如需使用 Lambda 授權者的詳細資訊AWS::Serverless::Api
,請參閱API閘道開發人員指南中的使用閘API道 Lambda 授權人員。如需任一資源類型的 Lambda 授權者範例,請參閱以 Lambda 項目的授權者範例 AWS SAM。
-
IAM權限 — 您可以控制誰可以叫API用您的 using AWS Identity and Access Management (IAM) 權限。呼叫您的使用者API必須使用認證進行驗IAM證。只有在有代表呼叫者的使用IAM者、包含IAM使用者的IAM群組或使用API者所擔任的IAM角色時,才會API成功呼叫您的呼叫。
只有資
AWS::Serverless::Api
源類型支援IAM權限。如需詳細資訊,請參閱《API閘道開發人員指南》中的控制對API具有IAM權限的存取。如需範例,請參閱IAM權限範例 AWS SAM。
-
Amazon Cognito 使用者集區 — Amazon Cognito 使用者集區是 Amazon Cognito 中的使用者目錄。您的客戶端API必須首先將用戶登錄到用戶池並獲取用戶的身份或訪問令牌。然後客戶端API使用返回的令牌之一調用您的。只有當所需的令牌有效時,API呼叫才會成功。
資
AWS::Serverless::Api
源類型支援 Amazon Cognito 使用者集區。資AWS::Serverless::HttpApi
源類型支援使用 Amazon Cognito 做為JWT發行者。如需詳細資訊,請參閱《API閘道開發人員指南》中的控制RESTAPI使用 Amazon Cognito 使用者集區做為授權者的存取。如需範例,請參閱Amazon Cognito 用戶池示例 AWS SAM。
-
APIkey — 金API鑰是您分發給應用程式開發人員客戶的英數字串值,以授與您的API.
只有資
AWS::Serverless::Api
源類型支援API金鑰。如需有關API金鑰的詳細資訊,請參閱《API閘道開發人員指南》中的使用方案與API金鑰建立和使用。如需API金鑰的範例,請參閱API關鍵範例 AWS SAM。
-
資源策略 — 資源JSON策略是您可以附加至API閘道的策略文件API。使用資源策略來控制指定的主參與者 (通常是使用IAM者或角色) 是否可以呼叫API.
只有資
AWS::Serverless::Api
源類型支援資源策略,做為控制API閘道存取的機制APIs。如需API有關資源政策的詳細資訊,請參閱《API閘道開發人員指南》中的控制對使用API閘道資源政策的存取。如需資源策略的範例,請參閱資源策略範例 AWS SAM。
-
OAuth2.0/ JWT 授權者 — 您可JWTs以使用 OpenID Connect(OIDC)
和 OAuth2.0 框架的一部分來控制對您的. APIs API閘道會驗證用戶端JWTs是否透過API要求提交,並根據權杖驗證和權杖中的範圍 (選擇性) 允許或拒絕要求。 只有資
AWS::Serverless::HttpApi
源類型支援 OAuth 2.0/ JWT 授權者。如需詳細資訊,請參閱《API閘道開發人員指南》中的「HTTPAPIs透過JWT授權者控制存取權」。如需範例,請參閱OAuth2.0/ JWT 授權者示例 AWS SAM。
選擇控制存取的機制
您選擇用來控制API閘道存取的機制APIs取決於幾個因素。例如,如果您的綠地專案未設定授權或存取控制,則 Amazon Cognito 使用者集區可能是您的最佳選擇。這是因為當您設定使用者集區時,您也會自動設定驗證和存取控制。
不過,如果您的應用程式已設定驗證,則使用 Lambda 授權者可能是您的最佳選擇。這是因為您可以呼叫現有的驗證服務,並根據回應傳回原則文件。此外,如果您的應用程式需要使用者集區不支援的自訂驗證或存取控制邏輯,則 Lambda 授權者可能是您的最佳選擇。
選擇要使用的機制之後,請參閱中範例的對應章節,瞭解如何使用 AWS SAM 來設定應用程式以使用該機制。
自訂錯誤回應
您可以使用 AWS SAM 來自訂某些API閘道錯誤回應的內容。只有資AWS::Serverless::Api
源類型支援自訂API閘道回應。
如需API閘道回應的詳細資訊,請參閱閘道開發人員指南中的API閘道回應。API如需自訂回應的範例,請參閱自訂回應範例 AWS SAM。