

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

# AWS 云前端-网关-lambda
<a name="aws-cloudfront-apigateway-lambda"></a>

![](http://docs.aws.amazon.com/zh_cn/solutions/latest/constructs/images/experimental.png)


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

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


|  **语言**  |  **程序包**  | 
| --- | --- | 
|  ![](http://docs.aws.amazon.com/zh_cn/solutions/latest/constructs/images/python.png) Python  |  aws\_solutions\_constructs.aws\_cloudfront\_apigateway\_lambda  | 
|  ![](http://docs.aws.amazon.com/zh_cn/solutions/latest/constructs/images/typescript.png) TypeScript  |  @aws-solutions-constructs/aws-cloudfront-apigateway-lambda  | 
|  ![](http://docs.aws.amazon.com/zh_cn/solutions/latest/constructs/images/java.png) Java  |  software.amazon.awsconstructs.services.cloudfrontapigatewaylambda  | 

## Overview
<a name="overview-3"></a>

 此 AWS 解决方案构造在 Amazon API Gateway LambDA 支持的 REST API 前面实现了一个 Amazon CloudFront 分发。

 以下是 TypeScript 中的最小可部署模式定义：

```
import { CloudFrontToApiGatewayToLambda } from '@aws-solutions-constructs/aws-cloudfront-apigateway-lambda';

new CloudFrontToApiGatewayToLambda(this, 'test-cloudfront-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'
    }
});
```

## Initializer
<a name="initializer-3"></a>

```
new CloudFrontToApiGatewayToLambda(scope: Construct, id: string, props: CloudFrontToApiGatewayToLambdaProps);
```

 *参数* 
+  scope[https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_core.Construct.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_core.Construct.html) 
+  id`string` 
+  props[`CloudFrontToApiGatewayToLambdaProps`](#pattern-construct-props-3) 

## 模式构造道具
<a name="pattern-construct-props-3"></a>


|  **名称**  |  **类型**  |  **描述**  | 
| --- | --- | --- | 
|  现在的兰姆道夫？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.Function.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.Function.html)  |  Lambda 函数对象的现有实例，提供了这个和lambdaFunctionProps会导致错误。 | 
|  Lambda 功能道具？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.FunctionProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.FunctionProps.html)  |  用户提供的可选属性，用于覆盖 Lambda 函数的默认属性。忽略existingLambdaObj提供。 | 
|  养蜂网关道具？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-apigateway.LambdaRestApiProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-apigateway.LambdaRestApiProps.html)  |  用户提供的可选道具来覆盖 API Gateway 的默认道具  | 
|  云前端分发道具？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cloudfront.DistributionProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cloudfront.DistributionProps.html)  |  可选的用户提供的道具来覆盖 CloudFront 分发的默认道具。 | 
|  是否插入安全标头？  |  boolean  |  可选用户提供的道具，用于在 CloudFront 的所有响应中打开/关闭最佳实践 HTTP 安全标头的自动注入  | 
|  日志组道具？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-logs.LogGroupProps.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-logs.LogGroupProps.html)  |  用户提供的可选道具，用于覆盖 CloudWatch Logs 日志组的默认道具。 | 

## 模式属性
<a name="pattern-properties-3"></a>


|  **名称**  |  **类型**  |  **描述**  | 
| --- | --- | --- | 
|  APIGateway  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-apigateway.RestApi.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-apigateway.RestApi.html)  |  返回由模式创建的 API Gateway REST API 的实例。 | 
|  网关云监视角色  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-iam.Role.html)  |  返回由模式创建的 IAM 角色的实例，该模式允许从 API Gateway REST API 访问日志记录到 CloudWatch。 | 
|  网关日志组  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-logs.LogGroup.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-logs.LogGroup.html)  |  返回由 API Gateway REST API 访问日志发送到的模式创建的日志组的实例。 | 
|  云前端记录存储桶？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.Bucket.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-s3.Bucket.html)  |  返回由 CloudFront Web 分发模式创建的日志记录存储桶的实例。 | 
|  云前端网络分发  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cloudfront.CloudFrontWebDistribution.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-cloudfront.CloudFrontWebDistribution.html)  |  返回由模式创建的 CloudFront Web 分发的实例。 | 
|  埃德格兰姆达功能版本？  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.Version.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.Version.html)  |  返回由模式创建的 Lambda 边函数版本的实例。 | 
|  LambdaFunction  |  [https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.Function.html](https://docs.aws.amazon.com/cdk/api/latest/docs/@aws-cdk_aws-lambda.Function.html)  |  返回由模式创建的 Lambda 函数的实例。 | 

## 默认设置
<a name="default-settings-3"></a>

 没有任何覆盖的此模式的开箱即用实现将设置以下默认值：

### Amazon CloudFront
<a name="amazon-cloudfront"></a>
+  为 CloudFront 网络分发配置访问日志记录 
+  支持在 CloudFront 网络分发的所有响应中自动注入最佳实践 HTTP 安全标头 

### Amazon API Gateway
<a name="amazon-api-gateway-3"></a>
+  部署区域 API 终端节点 
+  为 API Gateway 启用 CloudWatch 日志 
+  为 API Gateway 配置最低权限访问 IAM 角色 
+  将所有 API 方法的默认授权类型设置为 IAM 
+  启用 X-Ray 跟踪

### AWS Lambda 函数
<a name="aws-lambda-function-1"></a>
+  为 Lambda 配置受限权限访问 IAM 角色 
+  使用节点 JS Lambda 函数保持活动状态，启用重复使用连接 
+  启用 X-Ray 跟踪
+  设置环境变量：
  +  `AWS_NODEJS_CONNECTION_REUSE_ENABLED`（用于节点 10.x 和更高版本的功能）

## Architecture
<a name="architecture-3"></a>

![](http://docs.aws.amazon.com/zh_cn/solutions/latest/constructs/images/aws-cloudfront-apigateway-lambda.png)


## GitHub
<a name="github-3"></a>


<table>
<thead>
  <tr><th colspan="2"> 要查看此模式的代码、创建/查看问题和拉取请求等，请执行以下操作： </th></tr>
</thead>
<tbody>
  <tr><td> ![](http://docs.aws.amazon.com/zh_cn/solutions/latest/constructs/images/GitHub-Mark-32px.png) </td><td> [@aws-解决方案结构/aw-云前端-网关-lambda](https://github.com/awslabs/aws-solutions-constructs/tree/master/source/patterns/%40aws-solutions-constructs/aws-cloudfront-apigateway-lambda) </td></tr>
</tbody>
</table>
