@aws-cdk/aws-apigatewayv2-integrations

中文文档
1.204.0发布于 2023/06/20Apache-2.0TypeScriptCommonJS近 30 天下载 1.3万

AWS APIGateway V2 集成系统

此软件包已被标记为弃用

AWS CDK v1 has reached End-of-Support on 2023-06-01. This package is no longer being updated, and users should migrate to AWS CDK v2. For more information on how to migrate, see https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html

中文使用文档
文档目录8 节
  1. 目录
  2. HTTP API 软件
  3. 兰布达
  4. HTTP 代理服务器
  5. 私营一体化
  6. 请求参数
  7. 网络锁定 APIs
  8. Lambda WebSocket 集成系统

AWS APIGatewayv2 集成


End-of-Support

AWS CDK v1在2023-06-01上达到了支持结束. 此软件包不再更新,用户应该迁移到 AWS CDK v2.

关于如何移徙的更多信息,请参见: 移动到 AWS CDK v2 指南。 。 。 .


目录

HTTP API 软件

整合连接到后端资源的路由. HTTP APIs支持Lambda代理,AWS服务,以及HTTP代理集成. HTTP代理集成也被称为私人集成.

兰布达

Lambda集成可以将HTTP API路由与Lambda功能相融合. 当客户援引路线时 API Gateway服务将请求转发到Lambda函数,并返回该函数对客户端的响应.

API Gateway服务将引用有特定格式的事件有效载荷的lambda函数。 服务预期 以特定格式响应的函数。 有关该格式的详情,请访问 与AWS Lambda合作 代理集成。 。 。 .

以下代码配置一个路由 GET /books 一个Lambda代理集成.

import { HttpLambdaIntegration } from '@aws-cdk/aws-apigatewayv2-integrations';

declare const booksDefaultFn: lambda.Function;
const booksIntegration = new HttpLambdaIntegration('BooksIntegration', booksDefaultFn);

const httpApi = new apigwv2.HttpApi(this, 'HttpApi');

httpApi.addRoutes({
  path: '/books',
  methods: [ apigwv2.HttpMethod.GET ],
  integration: booksIntegration,
});

HTTP 代理服务器

HTTP代理集成使得一个HTTP API路由能够连接到一个公开的routable HTTP端点. 当客户端 引用路由, API Gateway 服务在 API Gateway 端口之间转发整个请求和响应 和整合 HTTP 端点。 更多信息可在 使用 HTTP 代理服务器 整合。 。 。 .

以下代码配置一个路由 GET /books 将 HTTP 代理集成到 HTTP 端点 get-books-proxy.myproxy.internal。 。 。 .

import { HttpUrlIntegration } from '@aws-cdk/aws-apigatewayv2-integrations';

const booksIntegration = new HttpUrlIntegration('BooksIntegration', 'https://get-books-proxy.myproxy.internal');

const httpApi = new apigwv2.HttpApi(this, 'HttpApi');

httpApi.addRoutes({
  path: '/books',
  methods: [ apigwv2.HttpMethod.GET ],
  integration: booksIntegration,
});

私营一体化

私有集成可以将 HTTP API 路由与私有资源整合到 VPC 中,例如应用程序负载平衡器或 亚马逊ECS容器应用. 利用私人集成,VPC中的资源可以被曝出,供 在VPC以外的客户.

支持将以下整合纳入一项自愿参与方案,用于私人资源.

应用程序负载平衡器

以下代码是HTTP API的基本应用程序负载平衡器的私人集成:

import { HttpAlbIntegration } from '@aws-cdk/aws-apigatewayv2-integrations';

const vpc = new ec2.Vpc(this, 'VPC');
const lb = new elbv2.ApplicationLoadBalancer(this, 'lb', { vpc });
const listener = lb.addListener('listener', { port: 80 });
listener.addTargets('target', {
  port: 80,
});

const httpEndpoint = new apigwv2.HttpApi(this, 'HttpProxyPrivateApi', {
  defaultIntegration: new HttpAlbIntegration('DefaultIntegration', listener),
});

当使用导入的负载平衡器时 vpc 选项必须指定 HttpAlbIntegration。 。 。 .

网络负载平衡器

以下代码是 HTTP API 的基本网络负载平衡器私人集成:

import { HttpNlbIntegration } from '@aws-cdk/aws-apigatewayv2-integrations';

const vpc = new ec2.Vpc(this, 'VPC');
const lb = new elbv2.NetworkLoadBalancer(this, 'lb', { vpc });
const listener = lb.addListener('listener', { port: 80 });
listener.addTargets('target', {
  port: 80,
});

const httpEndpoint = new apigwv2.HttpApi(this, 'HttpProxyPrivateApi', {
  defaultIntegration: new HttpNlbIntegration('DefaultIntegration', listener),
});

当使用导入的负载平衡器时 vpc 选项必须指定 HttpNlbIntegration。 。 。 .

云图服务发现

以下代码是 HTTP API 的基本发现服务私人集成:

import * as servicediscovery from '@aws-cdk/aws-servicediscovery';
import { HttpServiceDiscoveryIntegration } from '@aws-cdk/aws-apigatewayv2-integrations';

const vpc = new ec2.Vpc(this, 'VPC');
const vpcLink = new apigwv2.VpcLink(this, 'VpcLink', { vpc });
const namespace = new servicediscovery.PrivateDnsNamespace(this, 'Namespace', {
  name: 'boobar.com',
  vpc,
});
const service = namespace.createService('Service');

const httpEndpoint = new apigwv2.HttpApi(this, 'HttpProxyPrivateApi', {
  defaultIntegration: new HttpServiceDiscoveryIntegration('DefaultIntegration', service, {
    vpcLink,
  }),
});

请求参数

请求参数映射允许客户端的API请求在达到后端集成之前被修改. 参数映射可用于指定对请求参数的修改. 见 转换 API 请求和 答复。 。 。 .

以下示例创建了新标题 - header2 - 作为副本 header1 并删除 header1。 。 。 .

import { HttpAlbIntegration } from '@aws-cdk/aws-apigatewayv2-integrations';

declare const lb: elbv2.ApplicationLoadBalancer;
const listener = lb.addListener('listener', { port: 80 });
listener.addTargets('target', {
  port: 80,
});

const httpEndpoint = new apigwv2.HttpApi(this, 'HttpProxyPrivateApi', {
  defaultIntegration: new HttpAlbIntegration('DefaultIntegration', listener, {
    parameterMapping: new apigwv2.ParameterMapping()
      .appendHeader('header2', apigwv2.MappingValue.requestHeader('header1'))
      .removeHeader('header1'),
  }),
});

要添加 CDK 尚未支持的映射密钥和值,请使用 custom() 方法 :

import { HttpAlbIntegration } from '@aws-cdk/aws-apigatewayv2-integrations';

declare const lb: elbv2.ApplicationLoadBalancer;
const listener = lb.addListener('listener', { port: 80 });
listener.addTargets('target', {
  port: 80,
});

const httpEndpoint = new apigwv2.HttpApi(this, 'HttpProxyPrivateApi', {
  defaultIntegration: new HttpAlbIntegration('DefaultIntegration', listener, {
    parameterMapping: new apigwv2.ParameterMapping().custom('myKey', 'myValue'),
  }),
});

网络锁定 APIs

WebSocket集成将一条路由连接到后端资源. CDK支持以下整合.

Lambda WebSocket 集成系统

Lambda集成使WebSocket API路由与Lambda功能相融合成为可能. 当客户端连接/ 断开连接时 或发送特定路由的信息,API Gateway 服务将把请求转发到 Lambda 函数

API Gateway服务将引用有特定格式的事件有效载荷的lambda函数.

以下代码配置 a sendmessage 与Lambda集成的路线

import { WebSocketLambdaIntegration } from '@aws-cdk/aws-apigatewayv2-integrations';

const webSocketApi = new apigwv2.WebSocketApi(this, 'mywsapi');
new apigwv2.WebSocketStage(this, 'mystage', {
  webSocketApi,
  stageName: 'dev',
  autoDeploy: true,
});

declare const messageHandler: lambda.Function;
webSocketApi.addRoute('sendmessage', {
  integration: new WebSocketLambdaIntegration('SendMessageIntegration', messageHandler),
});

版本与发布记录

@aws-cdk/aws-apigatewayv2-integrations 共发布 152 个版本,首次发布于 2020/11/06;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.204.0latest2023/06/203 年前
1.203.02023/06/013 年前
1.202.02023/05/223 年前
1.201.02023/05/113 年前
1.200.02023/04/273 年前
1.199.02023/04/213 年前

关于 @aws-cdk/aws-apigatewayv2-integrations 的常见问题

@aws-cdk/aws-apigatewayv2-integrations 是什么?

AWS APIGateway V2 集成系统注意:该包已被作者标记为弃用——AWS CDK v1 has reached End-of-Support on 2023-06-01. This package is no longer being updated, and users should migrate to AWS CDK v2. For more information on how to migrate, see https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html

如何安装 @aws-cdk/aws-apigatewayv2-integrations?

在项目目录运行 npm install @aws-cdk/aws-apigatewayv2-integrations,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@aws-cdk/aws-apigatewayv2(1.204.0)、@aws-cdk/aws-ec2(1.204.0)、@aws-cdk/aws-elasticloadbalancingv2(1.204.0)、@aws-cdk/aws-iam(1.204.0)、@aws-cdk/aws-lambda(1.204.0)、@aws-cdk/aws-servicediscovery(1.204.0)、@aws-cdk/core(1.204.0)、constructs(^3.3.69)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@aws-cdk/aws-apigatewayv2-integrations 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@aws-cdk/aws-apigatewayv2-integrations 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@aws-cdk/aws-apigatewayv2-integrations 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 14.15.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@aws-cdk/aws-apigatewayv2-integrations 可以商用吗?

@aws-cdk/aws-apigatewayv2-integrations 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@aws-cdk/aws-apigatewayv2-integrations 的下载量有多少?

根据 npm 官方下载统计,@aws-cdk/aws-apigatewayv2-integrations 在 2026/10/07 – 2026/11/05 这 30 天内被下载 12,703 次,日均约 423 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@aws-cdk/aws-apigatewayv2-integrations 还在维护吗?

最新版本 1.204.0 发布于 2023/06/20(3 年前);至今共发布 152 个版本,其中过去 12 个月发布了 0 个;首次发布于 2020/11/06。作者已将其标记为弃用,新项目建议寻找替代方案。