AWS 认知识-养蜂网关-lambda - AWS 解决方案构造

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS 认知识-养蜂网关-lambda

所有类都处于积极开发之中,并且在任何未来版本中都会受到非向后兼容的更改或删除。这些不受语义版本控制模型。这意味着,虽然您可以使用它们,但在升级到此软件包的较新版本时,您可能需要更新源代码。

注意: 为确保正确的功能,您项目中的 AWS 解决方案构造软件包和 AWS CDK 包必须是相同的版本。

语言 程序包
Python
aws_solutions_constructs.aws_cognito_apigateway_lambda
TypeScript
@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 功能道具? lambda.FunctionProps 用户提供的可选属性,用于覆盖 Lambda 函数的默认属性。忽略,如果existingLambdaObj提供。
养蜂网关道具? api.LambdaRestApiProps 用户提供的可选道具来覆盖 API Gateway 的默认道具
认知服务器池道具? cognito.UserPoolProps 用户提供的可选道具来覆盖 Cognito 用户池的默认道具
认知服务器客户端道具? cognito.UserPoolClientProps 用户提供的可选道具来覆盖 Cognito 用户池客户端的默认道具
日志组道具? logs.LogGroupProps 用户提供的可选道具,用于覆盖 CloudWatch Logs 日志组的默认道具。

模式属性

名称 类型 描述
APIGateway 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 角色

  • 使用节点 JS Lambda 函数启用重复使用连接

  • 启用 X-Ray 跟踪

  • 设置环境变量:

    • AWS_NODEJS_CONNECTION_REUSE_ENABLED(用于节点 10.x 和更高版本的功能)

Architecture

GitHub

要查看此模式的代码、创建/查看问题和拉取请求等,请执行以下操作:
@aws-解决方案结构/AWS-认知-养蜂网关-lambda