基于Swift的无服务器函数:面向iOS/macOS开发者的AWS Lambda

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Swift 中使用 AWS Lambda 的无服务器函数入门

移动端与服务器端开发的世界正在快速变化。如果你是一位习惯于使用 Swift 的 iOS/macOS 开发者,你可能曾思考过如何将技能迁移到服务器端。无服务器架构与AWS Lambda为你打开了这扇机会之门。你无需再管理服务器——只需编写响应事件的代码即可。

本文将详细解析如何为 AWS Lambda 创建 Swift 无服务器函数。你将学习如何配置环境、编写一个简单的函数并将其部署到云端。本指南非常适合那些希望扩展自身能力、开始使用 Swift 不仅构建界面也用于后端的开发者。



为何选择 Swift 用于无服务器?

Swift 早已不再仅仅是 iOS 的专属语言。得益于像 Swift AWS Lambda Runtime 这样的项目,你可以使用熟悉的语法和生态系统来编写服务器代码。以下是关键优势:

  • 性能:Swift 编译为原生代码,提供高执行速度和低内存消耗。
  • 类型安全:Swift 的强类型特性有助于在编译时避免许多错误,这对服务器代码至关重要。
  • 统一技术栈:在客户端和服务器端都使用 Swift 可减少上下文切换,并允许复用公共数据模型。
  • 活跃社区:服务器端 Swift 正在积极发展,新的库和工具不断涌现。


环境配置与项目创建

在编写代码之前,你需要安装必要的工具。你需要配备 Xcode(或命令行)的 macOS,以及用于在 Linux 环境下构建的 Docker(因为 AWS Lambda 运行在 Amazon Linux 上)。



第一步:安装 Swift 和 Docker

确保你已安装 Swift 5.5 或更新版本。你可以使用以下命令检查版本:

swift --version

同时安装适用于 macOS 的 Docker Desktop。在为目标 Lambda 架构编译时将会用到它。



第二步:创建新项目

我们将使用 Swift Package Manager (SPM)。创建一个新的可执行包:

mkdir MyLambdaFunctioncd MyLambdaFunctionswift package init --type executable


第三步:添加 AWS Lambda 运行时依赖

打开 Package.swift 文件并添加依赖:

// swift-tools-version:5.5import PackageDescription

let package = Package( name: "MyLambdaFunction", platforms: [.macOS(.v12)], dependencies: [ .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime.git", from: "1.0.0") ], targets: [ .executableTarget( name: "MyLambdaFunction", dependencies: [ .product(name: "AWSLambdaRuntime", package: "swift-aws-lambda-runtime") ] ) ])


编写你的第一个 Swift 无服务器函数

现在进入最有趣的部分——编写代码。打开位于 Sources/MyLambdaFunction/ 文件夹中的 main.swift 文件。



Lambda 函数的基本结构

以下是一个接收名字并返回问候语的函数最小示例:

import AWSLambdaRuntimeimport AWSLambdaEvents

// 定义传入请求的结构struct GreetingRequest: Codable { let name: String}

// 定义响应的结构struct GreetingResponse: Codable { let message: String}

// 主入口点@mainstruct MyLambdaHandler: SimpleLambdaHandler { typealias Event = GreetingRe

博客

书籍推荐