├── .gitignore ├── Dockerfile ├── Package.resolved ├── Package.swift ├── README.md ├── Sources └── SquareNumber │ └── main.swift └── scripts └── package.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /.build 3 | /Packages 4 | /*.xcodeproj 5 | xcuserdata/ 6 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM swift:5.2-amazonlinux2 2 | 3 | RUN yum -y install \ 4 | libuuid-devel \ 5 | libicu-devel \ 6 | libedit-devel \ 7 | libxml2-devel \ 8 | sqlite-devel \ 9 | python-devel \ 10 | ncurses-devel \ 11 | curl-devel \ 12 | openssl-devel \ 13 | libtool \ 14 | jq \ 15 | tar \ 16 | zip 17 | -------------------------------------------------------------------------------- /Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "object": { 3 | "pins": [ 4 | { 5 | "package": "swift-aws-lambda-runtime", 6 | "repositoryURL": "https://github.com/swift-server/swift-aws-lambda-runtime.git", 7 | "state": { 8 | "branch": null, 9 | "revision": "2bac89639fffd7b1197ab597473a4d10c459a230", 10 | "version": "0.2.0" 11 | } 12 | }, 13 | { 14 | "package": "swift-backtrace", 15 | "repositoryURL": "https://github.com/swift-server/swift-backtrace.git", 16 | "state": { 17 | "branch": null, 18 | "revision": "f2fd8c4845a123419c348e0bc4b3839c414077d5", 19 | "version": "1.2.0" 20 | } 21 | }, 22 | { 23 | "package": "swift-log", 24 | "repositoryURL": "https://github.com/apple/swift-log.git", 25 | "state": { 26 | "branch": null, 27 | "revision": "173f567a2dfec11d74588eea82cecea555bdc0bc", 28 | "version": "1.4.0" 29 | } 30 | }, 31 | { 32 | "package": "swift-nio", 33 | "repositoryURL": "https://github.com/apple/swift-nio.git", 34 | "state": { 35 | "branch": null, 36 | "revision": "acf5465b5e7fb9aeda54a34d16fb44c31a399715", 37 | "version": "2.20.2" 38 | } 39 | } 40 | ] 41 | }, 42 | "version": 1 43 | } 44 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version:5.2 2 | // The swift-tools-version declares the minimum version of Swift required to build this package. 3 | 4 | import PackageDescription 5 | 6 | let package = Package( 7 | name: "SquareNumber", 8 | platforms: [ 9 | .macOS(.v10_13), 10 | ], 11 | products: [ 12 | .executable(name: "SquareNumber", targets: ["SquareNumber"]), 13 | ], 14 | dependencies: [ 15 | .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime.git", .upToNextMajor(from:"0.3.0")), 16 | ], 17 | targets: [ 18 | .target( 19 | name: "SquareNumber", 20 | dependencies: [ 21 | .product(name: "AWSLambdaRuntime", package: "swift-aws-lambda-runtime"), 22 | ] 23 | ), 24 | ] 25 | ) 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # swift-aws-lambda-square-number 2 | 3 | This is the repository with all the code for the tutorial ["Getting started with swift-aws-lambda-runtime"](https://fabianfett.de/getting-started-with-swift-aws-lambda-runtime) published on [my website](https://fabianfett.de). 4 | 5 | -------------------------------------------------------------------------------- /Sources/SquareNumber/main.swift: -------------------------------------------------------------------------------- 1 | import AWSLambdaRuntime 2 | 3 | struct Input: Codable { 4 | let number: Double 5 | } 6 | 7 | struct Output: Codable { 8 | let result: Double 9 | } 10 | 11 | Lambda.run { (context, input: Input, callback: @escaping (Result) -> Void) in 12 | callback(.success(Output(result: input.number * input.number))) 13 | } 14 | -------------------------------------------------------------------------------- /scripts/package.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -eu 4 | 5 | executable=$1 6 | 7 | target=.build/lambda/$executable 8 | rm -rf "$target" 9 | mkdir -p "$target" 10 | cp ".build/release/$executable" "$target/" 11 | cd "$target" 12 | ln -s "$executable" "bootstrap" 13 | zip --symlinks lambda.zip * 14 | --------------------------------------------------------------------------------