实战演练:用 AWS Lambda 和 API Gateway 构建你的第一个 Serverless API

实战演练:用 AWS Lambda 和 API Gateway 构建你的第一个 Serverless API


理论千遍,不如动手一遍!在前面几篇文章中,我们了解了 Serverless 的概念、FaaS 的核心原理以及 BaaS 的重要作用。现在,是时候把这些知识运用起来,亲手构建一个简单但完整的 Serverless 应用了。

本次实战,我们将使用 Amazon Web Services (AWS) 这个主流的云平台,结合它的两个核心 Serverless 服务:

  • AWS Lambda (FaaS): 运行我们的后端代码。
  • AWS API Gateway (BaaS): 创建一个公开的 HTTP 接口,接收请求并触发 Lambda 函数。

目标: 创建一个简单的 HTTP GET API 端点,当用户访问这个端点时,它会返回一个 JSON 消息:“Hello from Lambda!”。

听起来很简单?没错!但这将让你体验到 Serverless 开发的核心流程。

准备工作

在开始之前,请确保你已准备好:

  1. 一个 AWS 账户: 如果没有,可以访问 AWS 官网 免费注册一个。新用户通常有一年的免费套餐额度,足够我们本次实验使用。
  2. 登录 AWS 管理控制台: 我们将主要通过 AWS 的网页界面来完成操作,对新手更友好。
  3. (可选) Node.js 环境: 我们将使用 Node.js 编写 Lambda 函数代码。虽然可以直接在 AWS 控制台编辑,但如果你想在本地编写和测试,需要安装 Node.js (LTS 版本即可)。

准备好了吗?我们开始吧!

第一步:创建 Lambda 函数

我们的“大脑”——处理请求的代码,将放在 Lambda 函数中。

  1. 登录 AWS 管理控制台。
  2. 在顶部的搜索栏中输入 Lambda,然后点击进入 Lambda 服务页面。
  3. 点击 “创建函数” (Create function) 按钮。
  4. 选择 “从头开始创作” (Author from scratch)
  5. 基本信息配置:
    • 函数名称 (Function name): 输入一个有意义的名称,例如 myHelloFunction
    • 运行时 (Runtime): 选择一个较新的 Node.js LTS 版本,例如 Node.js 18.xNode.js 20.x
    • 架构 (Architecture): 保持默认的 x86_64 即可。
    • 权限 (Permissions): 展开 “更改默认执行角色” (Change default execution role)。选择 “创建具有基本 Lambda 权限的新角色” (Create a new role with basic Lambda permissions)。这将自动创建一个允许函数将日志写入 AWS CloudWatch 的角色,方便后续排查问题。
  6. 点击 “创建函数” (Create function)。等待函数创建完成。

编写函数代码:

  1. 函数创建成功后,向下滚动到 “代码源” (Code source) 部分。

  2. 你会看到一个默认的 index.mjsindex.js 文件。将其中的全部内容替换为以下 Node.js 代码:

    // 使用 async/await 语法定义 handler
    export const handler = async 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/80673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

node.js 实战——express图片保存到本地或服务器(七牛云、腾讯云、阿里云)

本地 ✅ 使用formidable 读取表单内容 npm i formidable ✅ 使用mime-types 获取图片后缀 npm install mime-types✅ js 中提交form表单 document.getElementById(uploadForm).addEventListener(submit, function(e){e.preventDefault();const blob preview._blob;if(!blob)…

2025最新:3分钟使用Docker快速部署单节点Redis

🧑‍🏫 详细教程:通过 Docker 安装单节点 Redis 🛠️ 前提条件: 你需要在 Ubuntu 系统上进行操作(如果你在其他系统上操作,可以按相似步骤进行调整)。已安装 Docker 和 Docker Com…

CentOS 7 系统下安装 OpenSSL 1.0.2k 依赖问题的处理

前面有提到过这个openssl的版本冲突问题,也是在这次恢复服务器时遇到的问题,我整理如下,供大家参考。小小一个软件的安装,挺坑的。 一、问题 项目运行环境需要,指定PHP7.0.9这个版本,但是‌系统版本与软件…

LoRA(Low-Rank Adaptation)原理详解

LoRA(Low-Rank Adaptation)原理详解 LoRA(低秩适应)是一种参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)技术,旨在以极低的参数量实现大模型在特定任务上的高效适配。其核心思想基于低秩分解假设,即模型在适应新任务时,参数更新矩阵具有低秩特性,可用少量参…

Solana批量转账教程:提高代币持有地址和生态用户空投代币

前言 Solana区块链因其高吞吐量和低交易费用成为批量操作(如空投)的理想选择。本教程将介绍几种在Solana上进行批量转账的方法,帮助您高效地向多个地址空投代币。 solana 账户模型 在Solana中有三类账户: 数据账户,…

基于LSTM与SHAP可解释性分析的神经网络回归预测模型【MATLAB】

基于LSTM与SHAP可解释性分析的神经网络回归预测模型【MATLAB】 一、引言 在数据驱动的智能时代,时间序列预测已成为许多领域(如金融、气象、工业监测等)中的关键任务。长短期记忆网络(LSTM)因其在捕捉时间序列长期依…

手机网页提示ip被拉黑名单什么意思?怎么办

‌当您使用手机浏览网页时,突然看到“您的IP地址已被列入黑名单”的提示,是否感到困惑和不安?这种情况在现代网络生活中并不罕见,但确实会给用户带来诸多不便。本文将详细解释IP被拉黑的含义、常见原因,并提供一系列实…

Java消息队列性能优化实践:从理论到实战

Java消息队列性能优化实践:从理论到实战 1. 引言 在现代分布式系统架构中,消息队列(Message Queue,MQ)已经成为不可或缺的中间件组件。它不仅能够实现系统间的解耦,还能提供异步通信、流量削峰等重要功能…

BUUCTF——Cookie is so stable

BUUCTF——Cookie is so stable 进入靶场 页面有点熟悉 跟之前做过的靶场有点像 先简单看一看靶场信息 有几个功能点 flag.php 随便输了个admin 根据题目提示 应该与cookie有关 抓包看看 构造payload Cookie: PHPSESSIDef0623af2c1a6d2012d57f3529427d52; user{{7*7}}有…

json格式不合法情况下,如何尽量保证数据可用性

背景 在工作流程中,并非所有数据都如人所愿,即使json版本也会由于csv、tsv、excel、text等不同文件格式转化、获取数据源不完整等问题,造成我们要处理的json文件存在不合法。 尝试方案 除了人为修正外,有效的方法是使用json“修…

Python基础总结(十)之函数

Python函数 函数是Python中也是非常重要的,函数是带名字的代码块,用于完成具体的工作。要执行函数定义的特定任务,可调用该函数。 一、函数的定义 函数的定义要使用def关键字,def后面紧跟函数名,缩进的为函数的代码块。 def test():print("Hello,World")上述…

懒人美食帮SpringBoot订餐系统开发实现

概述 快速构建一个订餐系统,今天,我们将通过”懒人美食帮”这个基于SpringBoot的订餐系统项目,为大家详细解析从用户登录到多角色权限管理的完整实现方案。本教程特别适合想要学习企业级应用开发的初学者。 主要内容 1. 用户系统设计与实现…

AI(学习笔记第三课) 使用langchain进行AI开发(2)

文章目录 AI(学习笔记第三课) 使用langchain进行AI开发(2)学习内容:1. 返回结构化数据(structured_output pydantic)1.1 使用背景1.2 返回结构化数据示例代码(pydantic)1.3 执行测试代码2 返回结构化数据(json)2.1 示例代码2.2 执行结果3 给提供一些例子(few shot pr…

unity 使用蓝牙通讯(PC版,非安卓)

BlueTooth in pc with unity 最近接到的需求是在unity里面开发蓝牙功能,其实一开始我并不慌,因为据我所知,unity有丰富的插件可以使用,但是问题随之而来 1.unity里面无法直接与蓝牙通讯(后来找到了开启runtime一类的东西,但是我找了半天也没找到在哪里可以打开) 2.引入dll通过d…

MySQL中的意向锁 + next-key锁 + 间隙锁

引言 在数据库并发控制中,锁机制是保障数据一致性和隔离性的核心手段。MySQL中意向锁、间隙锁以及next-key锁等复杂锁类型,旨在协调表级锁与行级锁之间的关系,防止数据的脏读、不可重复读和幻读现象,尤其是在可重复读隔离级别下发…

机器学习 数据集

数据集 1. scikit-learn工具介绍1.1 scikit-learn安装1.2 Scikit-learn包含的内容 2 数据集2.1 sklearn玩具数据集介绍2.2 sklearn现实世界数据集介绍2.3 sklearn加载玩具数据集示例1:鸢尾花数据示例2:分析糖尿病数据集 2.4 sklearn获取现实世界数据集示…

Linux-c语言串口程序

c语言串口程序 // C library headers #include <stdio.h> #include <string.h>// Linux headers #include <fcntl.h> // Contains file controls like O_RDWR #include <errno.h> // Error integer and strerror() function #include <termios.h&g…

TCP IP

TCP/IP 通信协议&#xff0c;不是单一协议&#xff0c;是一组协议的集合 TCP IP UDP 1.建立链接 三次握手 第一步&#xff1a;客户端发送一个FIN报文&#xff0c;SEQX,等待服务器回应 第二步&#xff1a;服务器端受到&#xff0c;发送ackx1,seqy, 等待客户端回应 第三步&am…

用uniapp在微信小程序实现画板(电子签名)功能,使用canvas实现功能

效果&#xff1a; 功能&#xff1a;实现重签 退出 保存 等功能 解决的问题: 电子签名画布抖动问题解 注意&#xff1a; 保存的时候上传到自己的服务器地址&#xff0c;后端返回图片地址 代码&#xff1a; <template><view><view class"signature&qu…

机器学习经典算法:用决策树原理优化新能源汽车续航能力

🔥 “用决策树重构新能源车能量大脑!算法推导+代码实战全解,续航暴增15%” 决策树算法就像我们生活中做决策的 “流程指南”,通过层层判断得出最终结论。比如你去超市买水果,站在琳琅满目的货架前,就不自觉地用上了决策树思维。首先,你可能会想 “今天想吃酸的还是甜的…