在过去的几年里,云计算和无服务器架构已经迅速发展,成为现代应用开发的重要组成部分。AWS作为云计算领域的领导者,提供了一套强大的无服务器服务,帮助开发人员构建高度可扩展、弹性和安全的应用程序。本文将介绍通过AWS API Gateway封装Lambda调用Amazon Bedrock的实验步骤

0. 实验架构

红色方框内的内容

AWS-Serverless.drawio-backend.png

1. 实验准备

1.1 AWS账号

需要一个AWS Global的账号,并且有相应的权限,本例是Full Administrator权限。

2. 创建适用于Lambda的IAM role

2.1 创建IAM role

打开AWS portal,选择Service -> Security, Identity, & Compliance -> IAM

2024-04-25-14-57-54-image.png

角色页面,选择创建角色

2024-04-25-17-50-44-image.png

选择可信实体页面,选择服务为Lambda,点击下一步

2024-04-25-17-52-01-image.png

添加权限页面,添加相应的权限,本例是使用Lambda操作Bedrock,所以加上了BedrockFullAccess权限

2024-04-26-15-59-52-image.png

命名、查看降额创建页面,输入角色名称,并点击下一步

2024-04-26-18-22-13-image.png

3. 创建并配置Lambda

打开AWS portal,选择Service->Compute -> Lambda

2024-05-06-15-40-01-image.png

在Lambda页面,选择Function,点击Create function

2024-05-06-15-40-41-image.png

输入function的名字,选择Nodejs以及相应的版本,点击创建

2024-05-06-15-41-17-image.png

在代码部分,输入相应的NodeJS代码

2024-05-06-15-45-07-image.png

代码输入完成后,点击File->Save,保存代码,同时点击Deploy将代码部署生效

2024-05-06-15-45-19-image.png

打开配置标签也,选择环境变量页面,增加以下两个字段

KEY= AWS_NODEJS_CONNECTION_REUSE_ENABLED

Value=1

KEY= MODEL_ID

Value= anthropic.claude-3-sonnet-20240229-v1:0

2024-05-06-15-45-36-image.png

4. 创建API Gateway

打开AWS portal,选择Service->Networking & Content Delivery -> API Gateway

2024-05-06-15-46-32-image.png

在API Gateway页面,点击创建

2024-05-06-15-46-54-image.png

在API类型选择页面,选择REST API,点击build

2024-05-06-15-47-06-image.png

选择新建API,输入API Gateway的名称,API Gateway的类型选择Edge,点击创建

2024-05-06-15-47-22-image.png

API创建后,相应的方法以及Path如下

2024-05-06-15-47-32-image.png

其中,每种方法开启CORS,并且在Integration response标签页,将以下三个header字段制成*。

2024-05-06-15-47-45-image.png

在ANY方法页面上,将后端选择成Lambda,并选择相应的Lambda函数,同时enable Lambda proxy Integration选项

2024-05-06-15-47-58-image.png

Any方法的Method Response标签也,添加以下三个头部信息

2024-05-06-15-48-10-image.png

配置好以后,需要点击右上角的Deploy,将API Gateway部署成prod。部署成功后如下:

2024-05-06-15-48-54-image.png

部署成功后,如下界面:

2024-05-06-16-10-19-image.png

CORS一定要开启,否则前端调用API的时候,会出现跨域报错