aw-認識-意大利-拉姆達 - AWS 解決方案建構

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

aw-認識-意大利-拉姆達

所有類都在積極開發中,並且在任何未來版本中都會受到非向後兼容的更改或刪除。這些不受語義版本控制模型。這意味著,雖然您可以使用它們,但在升級到此軟件包的較新版本時,您可能需要更新源代碼。

請注意: 為了確保功能正確,專案中的 AWS 解決方案建構套件和 AWS CDK 套件必須是相同的版本。

語言 套件
Python
aws_solutions_constructs.aws_cognito_apigateway_lambda
打字稿
@aws-solutions-constructs/aws-cognito-apigateway-lambda
Java
software.amazon.awsconstructs.services.cognitoapigatewaylambda

Overview

這個 AWS 解決方案建構實作了 Amazon Cognito 保護 Amazon API Gateway 支援 LambDA 的 REST API。

下面是 TypeScript 中的最小可部署模式定義:

import { CognitoToApiGatewayToLambda } from '@aws-solutions-constructs/aws-cognito-apigateway-lambda'; new CognitoToApiGatewayToLambda(this, 'test-cognito-apigateway-lambda', { lambdaFunctionProps: { runtime: lambda.Runtime.NODEJS_14_X, // This assumes a handler function in lib/lambda/index.js code: lambda.Code.fromAsset(`${__dirname}/lambda`), handler: 'index.handler' } });

如果您在 API 上定義資源和方法(例如proxy = false),您必須調用addAuthorizers()方法完全定義 API 之後。這可確保 API 中的每個方法都受到保護。

請見此處 TypeScript:

import { CognitoToApiGatewayToLambda } from '@aws-solutions-constructs/aws-cognito-apigateway-lambda'; const construct = new CognitoToApiGatewayToLambda(this, 'test-cognito-apigateway-lambda', { lambdaFunctionProps: { // This assumes a handler function in lib/lambda/index.js code: lambda.Code.fromAsset(`${__dirname}/lambda`), runtime: lambda.Runtime.NODEJS_12_X, handler: 'index.handler' }, apiGatewayProps: { proxy: false } }); const resource = construct.apiGateway.root.addResource('foobar'); resource.addMethod('POST'); // Mandatory to call this method to Apply the Cognito Authorizers on all API methods construct.addAuthorizers();

Initializer

new CognitoToApiGatewayToLambda(scope: Construct, id: string, props: CognitoToApiGatewayToLambdaProps);

參數

模式建立道具

名稱 類型 描述
現在還有蘭姆達伯 lambda.Function Lambda 函數對象的現有實例,同時提供這個和lambdaFunctionProps會造成錯誤。
拉姆針灸道具? lambda.FunctionProps 選用的使用者提供的屬性來覆寫 Lambda 函數的預設屬性。忽略existingLambdaObj提供。
阿比格特威道具? api.LambdaRestApiProps 可選用的使用者提供的道具來覆寫 API Gateway 的預設道具
干邑吐司道具? cognito.UserPoolProps 選用的使用者提供的道具,以覆寫 Cognito 使用者集區的預設道具
認識吐司游泳池客戶道具? cognito.UserPoolClientProps 選擇性的使用者提供的道具,可覆寫 Cognito 使用者集區用戶端的預設道具
記錄群組道具? logs.LogGroupProps 使用者提供的選用道具,用於覆寫 CloudWatch Logs 日誌群組的預設道具。

模式性質

名稱 類型 描述
ApeGateway api.RestApi 返回由模式創建的 API Gateway REST API 的實例。
LambdaFunction lambda.Function 返回由模式創建的 Lambda 函數的實例。
userPool cognito.UserPool 傳回由模式建立的 Cognito 使用者集區的執行個體。
UserPoolClient cognito.UserPoolClient 傳回由模式建立的 Cognito 使用者集區用戶端的執行個體。
雲端觀察角色 iam.Role 傳回模式所建立的 IAM 角色執行個體,該模式可啟用從 API Gateway REST API 存取記錄至 CloudWatch。
應用路徑記錄群組 logs.LogGroup 傳回傳送 API Gateway REST API 存取記錄檔的模式所建立之記錄群組的執行個體。
應用程式授權器 api.CfnAuthorizer 返回由模式創建的 API Gateway 授權的實例。

預設設定

此模式的開箱即用實現沒有任何覆蓋將設置以下默認值:

Amazon Cognito

  • 設定使用者集區的密碼策略

  • 強制執行「使用者集區」的進階安全模式

Amazon API Gateway

  • 部署邊緣最佳化的 API 端點

  • 啟用適用於 API Gateway 的 CloudWatch 日誌

  • 設定 API Gateway 的最低權限存取 IAM 角色

  • 將所有 API 方法的預設授權類型設定為 IAM

  • 啟用 X-Ray 追蹤

AWS Lambda 功能

  • 針對 Lambda 函數設定有限的權限存取 IAM 角色

  • 針對 NodeJS Lambda 函數啟用具有持續作用的重複使用連線

  • 啟用 X-Ray 追蹤

  • 設定環境變數:

    • AWS_NODEJS_CONNECTION_REUSE_ENABLED(對於節點 10.x 和更高版本的函數)

Architecture

GitHub

要查看此模式的代碼,創建/查看問題和提取請求,以及更多:
@aws-解決方案-構造/AW-認識-應用-lambda