From 4cb7c7176f22155e5116ac87660164da68abc399 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Stormacq?= Date: Tue, 2 Sep 2025 19:48:10 +0200 Subject: [PATCH 1/6] [ci] update workflow to drop Swift 5.x --- .github/workflows/pull_request.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 596dc6d..0cecf08 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -26,14 +26,15 @@ jobs: name: Unit tests uses: apple/swift-nio/.github/workflows/unit_tests.yml@main with: - linux_5_9_enabled: false - linux_5_10_enabled: true + linux_5_10_enabled: false linux_6_0_enabled: true - linux_nightly_6_0_enabled: true + linux_6_1_enabled: true linux_nightly_main_enabled: true - linux_6_0_arguments_override: "--enable-experimental-swift-testing" - linux_nightly_6_0_arguments_override: "--enable-experimental-swift-testing --explicit-target-dependency-import-check error" - linux_nightly_main_arguments_override: "--enable-experimental-swift-testing --explicit-target-dependency-import-check error" + linux_nightly_next_enabled: true + linux_nightly_6_0_arguments_override: "--explicit-target-dependency-import-check error" + linux_nightly_6_1_arguments_override: "--explicit-target-dependency-import-check error" + linux_nightly_main_arguments_override: "--explicit-target-dependency-import-check error" + linux_nightly_next_arguments_override: "--explicit-target-dependency-import-check error" swift-6-language-mode: name: Swift 6 Language Mode @@ -45,7 +46,7 @@ jobs: timeout-minutes: 1 steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: persist-credentials: false - name: Check for Semantic Version label From c995f01632e48461563f9b0058ee78e07669e6a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Stormacq?= Date: Fri, 5 Sep 2025 19:32:10 +0200 Subject: [PATCH 2/6] Update library to support Swift Lambda runtime v2 --- .amazonq/context/swift.md | 104 +++ .amazonq/rules/swift.md | 104 +++ .gitignore | 8 +- .swift-format | 2 +- Examples/quoteapi/.gitignore | 9 +- Examples/quoteapi/Dockerfile | 2 +- Examples/quoteapi/Makefile | 29 +- Examples/quoteapi/Package.swift | 28 +- Examples/quoteapi/README.md | 20 +- .../Sources/LambdaAuthorizer/main.swift | 103 +++ .../QuoteAPI/AuthenticateUserMiddleware.swift | 82 +++ .../Sources/QuoteAPI/QuoteService.swift | 154 +++++ .../openapi-generator-config.yaml | 0 .../Sources/{ => QuoteAPI}/openapi.yaml | 2 + Examples/quoteapi/Sources/QuoteService.swift | 49 -- Examples/quoteapi/events/404.json | 34 + Examples/quoteapi/events/GetQuote.json | 8 +- Examples/quoteapi/events/HealthCheck.json | 34 + Examples/quoteapi/template.yml | 40 +- Package.swift | 12 +- Package@swift-5.10.swift | 35 - Package@swift-5.9.swift | 35 - README.md | 630 ++++-------------- Sources/Exports.swift | 18 + Sources/HttpApi/OpenAPILambdaHttpApi.swift | 2 +- Sources/Middleware/LoggingMiddleware.swift | 48 ++ Sources/OpenAPILambdaHandler.swift | 45 +- ...ambda.swift => OpenAPILambdaService.swift} | 35 +- Sources/OpenAPILambdaTransport.swift | 10 +- .../OpenAPILambdaRouter+SimplifiedAPI.swift | 89 +++ Sources/Router/OpenAPILambdaRouter.swift | 6 +- Sources/Router/OpenAPILambdaRouterNode.swift | 16 +- Sources/Router/OpenAPILambdaRouterTrie.swift | 53 +- .../Router/RouterGraphTest.swift | 17 +- .../Router/RouterNodeTest.swift | 6 +- assets/swift-openapi-lambda-v0x.gif | Bin 0 -> 1506397 bytes assets/swift-openapi-lambda.gif | Bin 1506397 -> 2039410 bytes 37 files changed, 1124 insertions(+), 745 deletions(-) create mode 100644 .amazonq/context/swift.md create mode 100644 .amazonq/rules/swift.md create mode 100644 Examples/quoteapi/Sources/LambdaAuthorizer/main.swift create mode 100644 Examples/quoteapi/Sources/QuoteAPI/AuthenticateUserMiddleware.swift create mode 100644 Examples/quoteapi/Sources/QuoteAPI/QuoteService.swift rename Examples/quoteapi/Sources/{ => QuoteAPI}/openapi-generator-config.yaml (100%) rename Examples/quoteapi/Sources/{ => QuoteAPI}/openapi.yaml (94%) delete mode 100644 Examples/quoteapi/Sources/QuoteService.swift create mode 100644 Examples/quoteapi/events/404.json create mode 100644 Examples/quoteapi/events/HealthCheck.json delete mode 100644 Package@swift-5.10.swift delete mode 100644 Package@swift-5.9.swift create mode 100644 Sources/Exports.swift create mode 100644 Sources/Middleware/LoggingMiddleware.swift rename Sources/{OpenAPILambda.swift => OpenAPILambdaService.swift} (56%) create mode 100644 Sources/Router/OpenAPILambdaRouter+SimplifiedAPI.swift create mode 100644 assets/swift-openapi-lambda-v0x.gif diff --git a/.amazonq/context/swift.md b/.amazonq/context/swift.md new file mode 100644 index 0000000..1421493 --- /dev/null +++ b/.amazonq/context/swift.md @@ -0,0 +1,104 @@ +You are a coding assistant--with access to tools--specializing +in analyzing codebases. Below is the content of the file the +user is working on. Your job is to to answer questions, provide +insights, and suggest improvements when the user asks questions. + +Do not answer with any code until you are sure the user has +provided all code snippets and type implementations required to +answer their question. + +Briefly--in as little text as possible--walk through the solution +in prose to identify types you need that are missing from the files +that have been sent to you. + +Whenever possible, favor Apple programming languages and +frameworks or APIs that are already available on Apple devices. +Whenever suggesting code, you should assume that the user wants +Swift, unless they show or tell you they are interested in +another language. + +Always prefer Swift, Objective-C, C, and C++ over alternatives. + +Pay close attention to the platform that this code is for. +For example, if you see clues that the user is writing a Mac +app, avoid suggesting iOS-only APIs. + +Refer to Apple platforms with their official names, like iOS, +iPadOS, macOS, watchOS and visionOS. Avoid mentioning specific +products and instead use these platform names. + +In most projects, you can also provide code examples using the new +Swift Testing framework that uses Swift Macros. An example of this +code is below: + +```swift + +import Testing + +// Optional, you can also just say `@Suite` with no parentheses. +@Suite("You can put a test suite name here, formatted as normal text.") +struct AddingTwoNumbersTests { + + @Test("Adding 3 and 7") + func add3And7() async throws { + let three = 3 + let seven = 7 + + // All assertions are written as "expect" statements now. + #expect(three + seven == 10, "The sums should work out.") + } + + @Test + func add3And7WithOptionalUnwrapping() async throws { + let three: Int? = 3 + let seven = 7 + + // Similar to `XCTUnwrap` + let unwrappedThree = try #require(three) + + let sum = three + seven + + #expect(sum == 10) + } + +} +``` +When asked to write unit tests, always prefer the new Swift testing framework over XCTest. + +In general, prefer the use of Swift Concurrency (async/await, +actors, etc.) over tools like Dispatch or Combine, but if the +user's code or words show you they may prefer something else, +you should be flexible to this preference. + +Sometimes, the user may provide specific code snippets for your +use. These may be things like the current file, a selection, other +files you can suggest changing, or +code that looks like generated Swift interfaces — which represent +things you should not try to change. + +However, this query will start without any additional context. + +When it makes sense, you should propose changes to existing code. +Whenever you are proposing changes to an existing file, +it is imperative that you repeat the entire file, without ever +eliding pieces, even if they will be kept identical to how they are +currently. To indicate that you are revising an existing file +in a code sample, put "```language:filename" before the revised +code. It is critical that you only propose replacing files that +have been sent to you. For example, if you are revising +FooBar.swift, you would say: + +```swift:FooBar.swift +// the entire code of the file with your changes goes here. +// Do not skip over anything. +``` + +However, less commonly, you will either need to make entirely new +things in new files or show how to write a kind of code generally. +When you are in this rarer circumstance, you can just show the +user a code snippet, with normal markdown: +```swift +// Swift code here +``` + + diff --git a/.amazonq/rules/swift.md b/.amazonq/rules/swift.md new file mode 100644 index 0000000..1421493 --- /dev/null +++ b/.amazonq/rules/swift.md @@ -0,0 +1,104 @@ +You are a coding assistant--with access to tools--specializing +in analyzing codebases. Below is the content of the file the +user is working on. Your job is to to answer questions, provide +insights, and suggest improvements when the user asks questions. + +Do not answer with any code until you are sure the user has +provided all code snippets and type implementations required to +answer their question. + +Briefly--in as little text as possible--walk through the solution +in prose to identify types you need that are missing from the files +that have been sent to you. + +Whenever possible, favor Apple programming languages and +frameworks or APIs that are already available on Apple devices. +Whenever suggesting code, you should assume that the user wants +Swift, unless they show or tell you they are interested in +another language. + +Always prefer Swift, Objective-C, C, and C++ over alternatives. + +Pay close attention to the platform that this code is for. +For example, if you see clues that the user is writing a Mac +app, avoid suggesting iOS-only APIs. + +Refer to Apple platforms with their official names, like iOS, +iPadOS, macOS, watchOS and visionOS. Avoid mentioning specific +products and instead use these platform names. + +In most projects, you can also provide code examples using the new +Swift Testing framework that uses Swift Macros. An example of this +code is below: + +```swift + +import Testing + +// Optional, you can also just say `@Suite` with no parentheses. +@Suite("You can put a test suite name here, formatted as normal text.") +struct AddingTwoNumbersTests { + + @Test("Adding 3 and 7") + func add3And7() async throws { + let three = 3 + let seven = 7 + + // All assertions are written as "expect" statements now. + #expect(three + seven == 10, "The sums should work out.") + } + + @Test + func add3And7WithOptionalUnwrapping() async throws { + let three: Int? = 3 + let seven = 7 + + // Similar to `XCTUnwrap` + let unwrappedThree = try #require(three) + + let sum = three + seven + + #expect(sum == 10) + } + +} +``` +When asked to write unit tests, always prefer the new Swift testing framework over XCTest. + +In general, prefer the use of Swift Concurrency (async/await, +actors, etc.) over tools like Dispatch or Combine, but if the +user's code or words show you they may prefer something else, +you should be flexible to this preference. + +Sometimes, the user may provide specific code snippets for your +use. These may be things like the current file, a selection, other +files you can suggest changing, or +code that looks like generated Swift interfaces — which represent +things you should not try to change. + +However, this query will start without any additional context. + +When it makes sense, you should propose changes to existing code. +Whenever you are proposing changes to an existing file, +it is imperative that you repeat the entire file, without ever +eliding pieces, even if they will be kept identical to how they are +currently. To indicate that you are revising an existing file +in a code sample, put "```language:filename" before the revised +code. It is critical that you only propose replacing files that +have been sent to you. For example, if you are revising +FooBar.swift, you would say: + +```swift:FooBar.swift +// the entire code of the file with your changes goes here. +// Do not skip over anything. +``` + +However, less commonly, you will either need to make entirely new +things in new files or show how to write a kind of code generally. +When you are in this rarer circumstance, you can just show the +user a code snippet, with normal markdown: +```swift +// Swift code here +``` + + diff --git a/.gitignore b/.gitignore index 8c5f9b6..c42160d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,8 @@ .DS_Store -/.aws-sam/ -/.build -/.swiftpm +.aws-sam/ +.build +.index-build +.swiftpm samconfig.toml Package.resolved /*.xcodeproj @@ -10,4 +11,3 @@ DerivedData/ .swiftpm/config/registries.json .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata *key - diff --git a/.swift-format b/.swift-format index f3beb1d..a534950 100644 --- a/.swift-format +++ b/.swift-format @@ -52,7 +52,7 @@ "UseLetInEveryBoundCaseVariable" : false, "UseShorthandTypeNames" : true, "UseSingleLinePropertyGetter" : false, - "UseSynthesizedInitializer" : true, + "UseSynthesizedInitializer" : false, "UseWhereClausesInForLoops" : false }, "spacesAroundRangeFormationOperators" : false, diff --git a/Examples/quoteapi/.gitignore b/Examples/quoteapi/.gitignore index 96a6fbc..218099b 100644 --- a/Examples/quoteapi/.gitignore +++ b/Examples/quoteapi/.gitignore @@ -1,7 +1,8 @@ -/.aws-sam -/.build -/.swiftpm -/.vscode +.aws-sam +.build +.index-build +.swiftpm +.vscode Package.resolved samconfig.toml *.d diff --git a/Examples/quoteapi/Dockerfile b/Examples/quoteapi/Dockerfile index 4f363e0..e797a52 100644 --- a/Examples/quoteapi/Dockerfile +++ b/Examples/quoteapi/Dockerfile @@ -1,3 +1,3 @@ # image used to compile your Swift code -FROM public.ecr.aws/docker/library/swift:5.9.1-amazonlinux2 +FROM public.ecr.aws/docker/library/swift:6.1-amazonlinux2 RUN yum -y install git jq tar zip openssl-devel diff --git a/Examples/quoteapi/Makefile b/Examples/quoteapi/Makefile index 1c29e7a..9660c1c 100644 --- a/Examples/quoteapi/Makefile +++ b/Examples/quoteapi/Makefile @@ -1,6 +1,7 @@ ### Add functions here and link them to builder-bot format MUST BE "build-FunctionResourceName in template.yaml" build-QuoteService: builder-bot +build-LambdaAuthorizer: builder-bot # Helper commands build: @@ -10,16 +11,20 @@ deploy: sam deploy logs: - sam logs --stack-name QuoteService --name QuoteService + sam logs --stack-name QuoteService tail: - sam logs --stack-name QuoteService --name QuoteService --tail + sam logs --stack-name QuoteService --tail local: - LOCAL_LAMBDA_SERVER_ENABLED=true swift run QuoteService + swift run QuoteService + +local-invoke: + curl -v -H 'Authorization: Bearer 123' -X POST --data @events/GetQuote.json http://127.0.0.1:7000/invoke invoke: - curl -v -H 'Authorization: 123' https://k3lbszo7x6.execute-api.us-east-1.amazonaws.com/stocks/AAPL +## curl -v -H 'Authorization: Bearer 123' https:///stocks/AAPL + curl -v -H 'Authorization: Bearer 123' https://lq2rria2n6.execute-api.us-east-1.amazonaws.com/stocks/AAPL ###################### No Change required below this line ########################## @@ -30,17 +35,15 @@ builder-bot: $(eval $@ARTIFACTS_DIR = $(PWD)/.aws-sam/build/$($@PRODUCT)) ## Building from swift-openapi-lambda in a local directory (not from Github) -## 1. git clone https://github.com/swift-server/swift-openapi-lambda .. -## 2. Change `Package.swift` dependency to ../swift-openapi-lambda - -## 3. add /.. to BUILD_SRC -## $(eval $@BUILD_SRC = $(PWD)/..) - $(eval $@BUILD_SRC = $(PWD)) +## 2. Change `Package.swift` dependency to path: "../.." -## 4. add `cd quoteapi &&` to the docker BUILD_CMD -## $(eval $@BUILD_CMD = "ls && cd quoteapi && swift build --static-swift-stdlib --product $($@PRODUCT) -c release --build-path /build-target") +## 3. add /../.. to BUILD_SRC + $(eval $@BUILD_SRC = $(PWD)/../..) +## $(eval $@BUILD_SRC = $(PWD)) - $(eval $@BUILD_CMD = "swift build --static-swift-stdlib --product $($@PRODUCT) -c release --build-path /build-target") +## 4. add `cd Examples/quoteapi &&` to the docker BUILD_CMD + $(eval $@BUILD_CMD = "ls && cd Examples/quoteapi && swift build --static-swift-stdlib --product $($@PRODUCT) -c release --build-path /build-target") +## $(eval $@BUILD_CMD = "swift build --static-swift-stdlib --product $($@PRODUCT) -c release --build-path /build-target") # build docker image to compile Swift for Linux docker build -f Dockerfile . -t swift-builder diff --git a/Examples/quoteapi/Package.swift b/Examples/quoteapi/Package.swift index da8d483..9e1b0c8 100644 --- a/Examples/quoteapi/Package.swift +++ b/Examples/quoteapi/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version: 5.9 +// swift-tools-version: 6.0 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription @@ -6,18 +6,19 @@ import PackageDescription let package = Package( name: "QuoteService", platforms: [ - .macOS(.v13), .iOS(.v15), .tvOS(.v15), .watchOS(.v6), + .macOS(.v15) ], products: [ .executable(name: "QuoteService", targets: ["QuoteService"]) ], dependencies: [ .package(url: "https://github.com/apple/swift-openapi-generator.git", from: "1.4.0"), - .package(url: "https://github.com/apple/swift-openapi-runtime.git", from: "1.5.0"), - .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime.git", from: "1.0.0-alpha.3"), - .package(url: "https://github.com/swift-server/swift-aws-lambda-events.git", from: "0.4.0"), - .package(url: "https://github.com/swift-server/swift-openapi-lambda.git", from: "0.2.0"), - // .package(name: "swift-openapi-lambda", path: "../swift-openapi-lambda") + .package(url: "https://github.com/apple/swift-openapi-runtime.git", from: "1.8.2"), + .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime.git", from: "2.0.0-beta.3"), + .package(url: "https://github.com/swift-server/swift-aws-lambda-events.git", from: "1.2.0"), + // .package(url: "https://github.com/swift-server/swift-openapi-lambda.git", from: "0.3.0"), + .package(name: "swift-openapi-lambda", path: "../.."), + .package(url: "https://github.com/swift-server/swift-service-lifecycle.git", from: "2.8.0"), ], targets: [ .executableTarget( @@ -27,8 +28,9 @@ let package = Package( .product(name: "AWSLambdaRuntime", package: "swift-aws-lambda-runtime"), .product(name: "AWSLambdaEvents", package: "swift-aws-lambda-events"), .product(name: "OpenAPILambda", package: "swift-openapi-lambda"), + .product(name: "ServiceLifecycle", package: "swift-service-lifecycle"), ], - path: "Sources", + path: "Sources/QuoteAPI", resources: [ .copy("openapi.yaml"), .copy("openapi-generator-config.yaml"), @@ -39,6 +41,14 @@ let package = Package( package: "swift-openapi-generator" ) ] - ) + ), + .executableTarget( + name: "LambdaAuthorizer", + dependencies: [ + .product(name: "AWSLambdaRuntime", package: "swift-aws-lambda-runtime"), + .product(name: "AWSLambdaEvents", package: "swift-aws-lambda-events"), + ], + path: "Sources/LambdaAuthorizer" + ), ] ) diff --git a/Examples/quoteapi/README.md b/Examples/quoteapi/README.md index b68303e..a03de35 100644 --- a/Examples/quoteapi/README.md +++ b/Examples/quoteapi/README.md @@ -20,6 +20,11 @@ The **sam build** command uses Docker to compile your Swift Lambda function and sam build ``` +On macOS, you might need to run this command if `sam` doesn't see `docker`: +```bash +export DOCKER_HOST=unix://$HOME/.docker/run/docker.sock +``` + ## Deploy the application The **sam deploy** command creates the Lambda function and API Gateway in your AWS account. @@ -28,13 +33,7 @@ The **sam deploy** command creates the Lambda function and API Gateway in your A sam deploy --guided ``` -Accept the default response to every prompt, except the following warning: - -```bash -QuoteService may not have authorization defined, Is this okay? [y/N]: y -``` - -The project creates a publicly accessible API endpoint. This is a warning to inform you the API does not have authorization. If you are interested in adding authorization to the API, please refer to the [SAM Documentation](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-httpapi.html). +The project creates an API endpoint protected by a bearer token authorization. Use token value '123' while testing. Youc an change the token validation logic in the `LambdaAuthorizer` function. To learn more about Lambda authorizer function, refer to [the API Gateway documentation](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html). ## Use the API @@ -54,7 +53,7 @@ Use cURL or a tool such as [Postman](https://www.postman.com/) to interact with **Invoke the API Endpoint** ```bash -curl https://[your-api-endpoint]/stocks/AMZN +curl -H 'Authorization: Bearer 123' https://[your-api-endpoint]/stocks/AMZN ``` ## Test the API Locally @@ -70,6 +69,11 @@ When a Lambda function is invoked, API Gateway sends an event to the function wi sam local invoke QuoteService --event events/GetQuote.json ``` +On macOS, you might need to run this command if `sam` doesn't see `docker`: +```bash +export DOCKER_HOST=unix://$HOME/.docker/run/docker.sock +``` + ## Cleanup When finished with your application, use SAM to delete it from your AWS account. Answer **Yes (y)** to all prompts. This will delete all of the application resources created in your AWS account. diff --git a/Examples/quoteapi/Sources/LambdaAuthorizer/main.swift b/Examples/quoteapi/Sources/LambdaAuthorizer/main.swift new file mode 100644 index 0000000..2a19873 --- /dev/null +++ b/Examples/quoteapi/Sources/LambdaAuthorizer/main.swift @@ -0,0 +1,103 @@ +//===----------------------------------------------------------------------===// +// +// This source file is part of the Swift OpenAPI Lambda open source project +// +// Copyright (c) 2023 Amazon.com, Inc. or its affiliates +// and the Swift OpenAPI Lambda project authors +// Licensed under Apache License v2.0 +// +// See LICENSE.txt for license information +// See CONTRIBUTORS.txt for the list of Swift OpenAPI Lambda project authors +// +// SPDX-License-Identifier: Apache-2.0 +// +//===----------------------------------------------------------------------===// + +//===----------------------------------------------------------------------===// +// +// This source file is part of the SwiftAWSLambdaRuntime open source project +// +// Copyright (c) 2024 Apple Inc. and the SwiftAWSLambdaRuntime project authors +// Licensed under Apache License v2.0 +// +// See LICENSE.txt for license information +// See CONTRIBUTORS.txt for the list of SwiftAWSLambdaRuntime project authors +// +// SPDX-License-Identifier: Apache-2.0 +// +//===----------------------------------------------------------------------===// + +import AWSLambdaEvents +import AWSLambdaRuntime + +// +// This is an example of a policy authorizer that always authorizes the request. +// The policy authorizer returns an IAM policy document that defines what the Lambda function caller can do and optional context key-value pairs +// +// This code is shown for the example only and is not used in this demo. +// This code doesn't perform any type of token validation. It should be used as a reference only. +// let policyAuthorizerHandler: +// (APIGatewayLambdaAuthorizerRequest, LambdaContext) async throws -> APIGatewayLambdaAuthorizerPolicyResponse = { +// (request: APIGatewayLambdaAuthorizerRequest, context: LambdaContext) in + +// context.logger.debug("+++ Policy Authorizer called +++") + +// // typically, this function will check the validity of the incoming token received in the request + +// // then it creates and returns a response +// return APIGatewayLambdaAuthorizerPolicyResponse( +// principalId: "John Appleseed", + +// // this policy allows the caller to invoke any API Gateway endpoint +// policyDocument: .init(statement: [ +// .init( +// action: "execute-api:Invoke", +// effect: .allow, +// resource: "*" +// ) + +// ]), + +// // this is additional context we want to return to the caller +// context: [ +// "abc1": "xyz1", +// "abc2": "xyz2", +// ] +// ) +// } + +// +// This is an example of a simple authorizer that always authorizes the request. +// A simple authorizer returns a yes/no decision and optional context key-value pairs +// +// This code doesn't perform any type of token validation. It should be used as a reference only. +let simpleAuthorizerHandler: + (APIGatewayLambdaAuthorizerRequest, LambdaContext) async throws -> APIGatewayLambdaAuthorizerSimpleResponse = { + (request: APIGatewayLambdaAuthorizerRequest, context: LambdaContext) in + + context.logger.debug("+++ Simple Authorizer called +++") + + guard let authToken = request.headers["authorization"] + else { + context.logger.warning("Missing Authorization header") + return .init(isAuthorized: false, context: [:]) + } + + // do not take an authorization decision here. + // bring the token to the OpenAPI service and let the developer + // verify authorization there. + + return APIGatewayLambdaAuthorizerSimpleResponse( + // this is the authorization decision: yes or no + isAuthorized: true, + + // this is additional context we want to return to the caller + // these values can be retrieved in requestContext.authorizer of the APIGatewayv2 request + context: ["token": authToken] + ) + } + +// create the runtime and start polling for new events. +// in this demo we use the simple authorizer handler +let runtime = LambdaRuntime(body: simpleAuthorizerHandler) +try await runtime.run() diff --git a/Examples/quoteapi/Sources/QuoteAPI/AuthenticateUserMiddleware.swift b/Examples/quoteapi/Sources/QuoteAPI/AuthenticateUserMiddleware.swift new file mode 100644 index 0000000..f93ba7c --- /dev/null +++ b/Examples/quoteapi/Sources/QuoteAPI/AuthenticateUserMiddleware.swift @@ -0,0 +1,82 @@ +//===----------------------------------------------------------------------===// +// +// This source file is part of the Swift OpenAPI Lambda open source project +// +// Copyright (c) 2023 Amazon.com, Inc. or its affiliates +// and the Swift OpenAPI Lambda project authors +// Licensed under Apache License v2.0 +// +// See LICENSE.txt for license information +// See CONTRIBUTORS.txt for the list of Swift OpenAPI Lambda project authors +// +// SPDX-License-Identifier: Apache-2.0 +// +//===----------------------------------------------------------------------===// + +//===----------------------------------------------------------------------===// +// +// This source file is part of the SwiftOpenAPIGenerator open source project +// +// Copyright (c) 2023 Apple Inc. and the SwiftOpenAPIGenerator project authors +// Licensed under Apache License v2.0 +// +// See LICENSE.txt for license information +// See CONTRIBUTORS.txt for the list of SwiftOpenAPIGenerator project authors +// +// SPDX-License-Identifier: Apache-2.0 +// +//===----------------------------------------------------------------------===// +import OpenAPIRuntime +import HTTPTypes + +/// A server middleware that authenticates the incoming user based on the value of +/// the `Authorization` header field and injects the identifier `User` information +/// into a task local value, allowing the request handler to use it. +package struct AuthenticationServerMiddleware: Sendable { + + /// Information about an authenticated user. + package struct User: Hashable { + + /// The name of the authenticated user. + package var name: String + + /// Creates a new user. + /// - Parameter name: The name of the authenticated user. + package init(name: String) { self.name = name } + + /// The task local value of the currently authenticated user. + @TaskLocal package static var current: User? + } + + /// The closure that authenticates the user based on the value of the `Authorization` + /// header field. + private let authenticate: @Sendable (String) -> User? + + /// Creates a new middleware. + /// - Parameter authenticate: The closure that authenticates the user based on the value + /// of the `Authorization` header field. + package init(authenticate: @Sendable @escaping (String) -> User?) { self.authenticate = authenticate } +} + +extension AuthenticationServerMiddleware: ServerMiddleware { + package func intercept( + _ request: HTTPRequest, + body: HTTPBody?, + metadata: ServerRequestMetadata, + operationID: String, + next: @Sendable (HTTPRequest, HTTPBody?, ServerRequestMetadata) async throws -> (HTTPResponse, HTTPBody?) + ) async throws -> (HTTPResponse, HTTPBody?) { + // Extracts the `Authorization` value, if present. + // Even if when we use a Lambda authorizer, the original authorization header is forwarded + // If no `Authorization` header field value was provided, no User is injected into + // the task local. + guard let authorizationHeaderFieldValue = request.headerFields[.authorization] else { + return try await next(request, body, metadata) + } + + // Delegate the authentication logic to the closure. + let user = authenticate(authorizationHeaderFieldValue) + // Inject the authenticated user into the task local and call the next middleware. + return try await User.$current.withValue(user) { try await next(request, body, metadata) } + } +} diff --git a/Examples/quoteapi/Sources/QuoteAPI/QuoteService.swift b/Examples/quoteapi/Sources/QuoteAPI/QuoteService.swift new file mode 100644 index 0000000..e90a9b8 --- /dev/null +++ b/Examples/quoteapi/Sources/QuoteAPI/QuoteService.swift @@ -0,0 +1,154 @@ +//===----------------------------------------------------------------------===// +// +// This source file is part of the Swift OpenAPI Lambda open source project +// +// Copyright (c) 2023 Amazon.com, Inc. or its affiliates +// and the Swift OpenAPI Lambda project authors +// Licensed under Apache License v2.0 +// +// See LICENSE.txt for license information +// See CONTRIBUTORS.txt for the list of Swift OpenAPI Lambda project authors +// +// SPDX-License-Identifier: Apache-2.0 +// +//===----------------------------------------------------------------------===// + +import Foundation +import Logging +import OpenAPIRuntime +import OpenAPILambda +import ServiceLifecycle + +@main +struct QuoteServiceImpl: APIProtocol, OpenAPILambdaHttpApi { + + let logger: Logger + + func register(transport: OpenAPILambdaTransport) throws { + + // you have a chance here to customize the routes, for example + try transport.router.get("/health") { _, _ in + "OK" + } + logger.trace("Available Routes\n\(transport.router)") // print the router tree (for debugging purposes) + + // to log all requests and their responses, add a logging middleware + let loggingMiddleware = LoggingMiddleware(logger: logger) + + // This app includes a sample authorization middleware + // It transforms the bearer token into a username. + // The user name can be access through a TaskLocal variable. + let authenticationMiddleware = self.authenticationMiddleware() + + try self.registerHandlers(on: transport, middlewares: [loggingMiddleware, authenticationMiddleware]) + } + + static func main() async throws { + + // when you just need to run the Lambda function, call Self.run() + let openAPIService = QuoteServiceImpl(i: 42) // with dependency injection + try await openAPIService.run() + + // ============================= + + // when you need to have access to the runtime for advanced usage + // (dependency injection, Service LifeCycle, etc) + // + // 1. Create the open API lambda service, + // 2. Pass it to an OpenAPI Lambda Handler + // 3. Create the Lambda Runtime service, passing the handler + // 4. Either start the runtime, or add it to a service lifecycle group. + + // Here is an example where you start your own Lambda runtime + + // let openAPIService = QuoteServiceImpl(i: 42) // 1. + // let lambda = try OpenAPILambdaHandler(withService: openAPIService) // 2. + // let lambdaRuntime = LambdaRuntime(body: lambda.handle) // 3. + // try await lambdaRuntime.run() // 4. + + + // ============================= + + // Here is an example with Service Lifecycle + // Add the following in Package.swift + // .package(url: "https://github.com/swift-server/swift-service-lifecycle.git", from: "2.8.0"), + // and + // .product(name: "ServiceLifecycle", package: "swift-service-lifecycle"), + // Add `import ServiceLifecycle` at the top of this file` + + // let openAPIService = QuoteServiceImpl(i: 42) // 1. + // let lambda = try OpenAPILambdaHandler(withService: openAPIService) // 2. + // let lambdaRuntime = LambdaRuntime(body: lambda.handle) // 3. + // let serviceGroup = ServiceGroup( + // services: [lambdaRuntime], + // gracefulShutdownSignals: [.sigterm], + // cancellationSignals: [.sigint], + // logger: Logger(label: "ServiceGroup") + // ) + // try await serviceGroup.run() // 4. + + } + + // example of dependency injection + let i: Int + init(i: Int) { + self.i = i + var logger = Logger(label: "QuoteService") + logger.logLevel = .trace + self.logger = logger + } + + func getQuote(_ input: Operations.getQuote.Input) async throws -> Operations.getQuote.Output { + + // Check if the Authentication Middleware has been able to authenticate the user + guard let user = AuthenticationServerMiddleware.User.current else { return .unauthorized(.init()) } + + // You can log events to the AWS Lambda logs here + logger.trace("GetQuote for \(user) - Started") + + let symbol = input.path.symbol + + var date: Date = Date() + if let dateString = input.query.date { + let dateFormatter = DateFormatter() + dateFormatter.dateFormat = "yyyyMMdd" + date = dateFormatter.date(from: dateString) ?? Date() + } + + let price = Components.Schemas.quote( + symbol: symbol, + price: Double.random(in: 100..<150).rounded(), + change: Double.random(in: -5..<5).rounded(), + changePercent: Double.random(in: -0.05..<0.05), + volume: Double.random(in: 10000..<100000).rounded(), + timestamp: date + ) + + logger.trace("GetQuote - Returning") + + return .ok(.init(body: .json(price))) + } + + func authenticationMiddleware() -> AuthenticationServerMiddleware { + AuthenticationServerMiddleware(authenticate: { stringValue in + // Warning: this is an overly simplified authentication strategy, checking + // for well-known tokens. + // + // In your project, here you would likely call out to a library that performs + // a cryptographic validation, or similar. + // + // The code is for illustrative purposes only and should not be used directly. + switch stringValue { + case "123": + // A known user authenticated. + return .init(name: "Seb") + case "456": + // A known user authenticated. + return .init(name: "Nata") + default: + // Unknown credentials, no authenticated user. + return nil + } + }) + } +} diff --git a/Examples/quoteapi/Sources/openapi-generator-config.yaml b/Examples/quoteapi/Sources/QuoteAPI/openapi-generator-config.yaml similarity index 100% rename from Examples/quoteapi/Sources/openapi-generator-config.yaml rename to Examples/quoteapi/Sources/QuoteAPI/openapi-generator-config.yaml diff --git a/Examples/quoteapi/Sources/openapi.yaml b/Examples/quoteapi/Sources/QuoteAPI/openapi.yaml similarity index 94% rename from Examples/quoteapi/Sources/openapi.yaml rename to Examples/quoteapi/Sources/QuoteAPI/openapi.yaml index 726129f..3151706 100644 --- a/Examples/quoteapi/Sources/openapi.yaml +++ b/Examples/quoteapi/Sources/QuoteAPI/openapi.yaml @@ -50,5 +50,7 @@ paths: $ref: '#/components/schemas/quote' 400: description: Bad Request + 401: + description: Authentication required 404: description: Not Found diff --git a/Examples/quoteapi/Sources/QuoteService.swift b/Examples/quoteapi/Sources/QuoteService.swift deleted file mode 100644 index d233596..0000000 --- a/Examples/quoteapi/Sources/QuoteService.swift +++ /dev/null @@ -1,49 +0,0 @@ -//===----------------------------------------------------------------------===// -// -// This source file is part of the Swift OpenAPI Lambda open source project -// -// Copyright (c) 2023 Amazon.com, Inc. or its affiliates -// and the Swift OpenAPI Lambda project authors -// Licensed under Apache License v2.0 -// -// See LICENSE.txt for license information -// See CONTRIBUTORS.txt for the list of Swift OpenAPI Lambda project authors -// -// SPDX-License-Identifier: Apache-2.0 -// -//===----------------------------------------------------------------------===// - -import Foundation -import OpenAPIRuntime -import OpenAPILambda - -@main -struct QuoteServiceImpl: APIProtocol, OpenAPILambdaHttpApi { - - init(transport: OpenAPILambdaTransport) throws { - try self.registerHandlers(on: transport) - } - - func getQuote(_ input: Operations.getQuote.Input) async throws -> Operations.getQuote.Output { - - let symbol = input.path.symbol - - var date: Date = Date() - if let dateString = input.query.date { - let dateFormatter = DateFormatter() - dateFormatter.dateFormat = "yyyyMMdd" - date = dateFormatter.date(from: dateString) ?? Date() - } - - let price = Components.Schemas.quote( - symbol: symbol, - price: Double.random(in: 100..<150).rounded(), - change: Double.random(in: -5..<5).rounded(), - changePercent: Double.random(in: -0.05..<0.05), - volume: Double.random(in: 10000..<100000).rounded(), - timestamp: date - ) - - return .ok(.init(body: .json(price))) - } -} diff --git a/Examples/quoteapi/events/404.json b/Examples/quoteapi/events/404.json new file mode 100644 index 0000000..15a4dd7 --- /dev/null +++ b/Examples/quoteapi/events/404.json @@ -0,0 +1,34 @@ +{ + "rawQueryString": "", + "headers": { + "host": "b2k1t8fon7.execute-api.us-east-1.amazonaws.com", + "x-forwarded-port": "443", + "content-length": "0", + "x-amzn-trace-id": "Root=1-6571d134-63dbe8ee21efa87555d59265", + "x-forwarded-for": "191.95.148.219", + "x-forwarded-proto": "https", + "accept": "*/*", + "user-agent": "curl/8.1.2" + }, + "requestContext": { + "apiId": "b2k1t8fon7", + "http": { + "sourceIp": "191.95.148.219", + "userAgent": "curl/8.1.2", + "method": "GET", + "path": "/undefined", + "protocol": "HTTP/1.1" + }, + "timeEpoch": 1701957940365, + "domainPrefix": "b2k1t8fon7", + "accountId": "486652066693", + "time": "07/Dec/2023:14:05:40 +0000", + "stage": "$default", + "domainName": "b2k1t8fon7.execute-api.us-east-1.amazonaws.com", + "requestId": "Pk2gOia2IAMEPOw=" + }, + "isBase64Encoded": false, + "version": "2.0", + "routeKey": "$default", + "rawPath": "/undefined" +} \ No newline at end of file diff --git a/Examples/quoteapi/events/GetQuote.json b/Examples/quoteapi/events/GetQuote.json index 40e0e20..c8ace6e 100644 --- a/Examples/quoteapi/events/GetQuote.json +++ b/Examples/quoteapi/events/GetQuote.json @@ -8,7 +8,8 @@ "x-forwarded-for": "191.95.148.219", "x-forwarded-proto": "https", "accept": "*/*", - "user-agent": "curl/8.1.2" + "user-agent": "curl/8.1.2", + "authorization": "Bearer 123" }, "requestContext": { "apiId": "b2k1t8fon7", @@ -19,6 +20,11 @@ "path": "/stocks/AAPL", "protocol": "HTTP/1.1" }, + "authorizer": { + "lambda": { + "abc1": "xyz1" + } + }, "timeEpoch": 1701957940365, "domainPrefix": "b2k1t8fon7", "accountId": "486652066693", diff --git a/Examples/quoteapi/events/HealthCheck.json b/Examples/quoteapi/events/HealthCheck.json new file mode 100644 index 0000000..3c879fd --- /dev/null +++ b/Examples/quoteapi/events/HealthCheck.json @@ -0,0 +1,34 @@ +{ + "rawQueryString": "", + "headers": { + "host": "b2k1t8fon7.execute-api.us-east-1.amazonaws.com", + "x-forwarded-port": "443", + "content-length": "0", + "x-amzn-trace-id": "Root=1-6571d134-63dbe8ee21efa87555d59265", + "x-forwarded-for": "191.95.148.219", + "x-forwarded-proto": "https", + "accept": "*/*", + "user-agent": "curl/8.1.2" + }, + "requestContext": { + "apiId": "b2k1t8fon7", + "http": { + "sourceIp": "191.95.148.219", + "userAgent": "curl/8.1.2", + "method": "GET", + "path": "/health", + "protocol": "HTTP/1.1" + }, + "timeEpoch": 1701957940365, + "domainPrefix": "b2k1t8fon7", + "accountId": "486652066693", + "time": "07/Dec/2023:14:05:40 +0000", + "stage": "$default", + "domainName": "b2k1t8fon7.execute-api.us-east-1.amazonaws.com", + "requestId": "Pk2gOia2IAMEPOw=" + }, + "isBase64Encoded": false, + "version": "2.0", + "routeKey": "$default", + "rawPath": "/health" +} \ No newline at end of file diff --git a/Examples/quoteapi/template.yml b/Examples/quoteapi/template.yml index 3e487da..14a3507 100644 --- a/Examples/quoteapi/template.yml +++ b/Examples/quoteapi/template.yml @@ -8,12 +8,12 @@ Globals: CodeUri: . Handler: swift.bootstrap Runtime: provided.al2 - MemorySize: 512 + MemorySize: 128 Architectures: - arm64 Resources: - # Lambda function + # QuoteService Lambda function QuoteService: Type: AWS::Serverless::Function Properties: @@ -32,12 +32,25 @@ Resources: ApiId: !Ref MyProtectedApi Path: /{proxy+} Method: ANY - Auth: - Authorizer: MyLambdaAuthorizer Metadata: BuildMethod: makefile + # Lambda authorizer function + LambdaAuthorizer: + Type: AWS::Serverless::Function + Properties: + Timeout: 29 # max 29 seconds for Lambda authorizers + Environment: + Variables: + # by default, AWS Lambda runtime produces no log + # use `LOG_LEVEL: debug` for for lifecycle and event handling information + # use `LOG_LEVEL: trace` for detailed input event information + LOG_LEVEL: trace + Metadata: + BuildMethod: makefile + + # The API Gateway MyProtectedApi: Type: AWS::Serverless::HttpApi Properties: @@ -45,17 +58,24 @@ Resources: DefaultAuthorizer: MyLambdaAuthorizer Authorizers: MyLambdaAuthorizer: - AuthorizerPayloadFormatVersion: 2.0 - EnableFunctionDefaultPermissions: true - EnableSimpleResponses: true - FunctionArn: arn:aws:lambda:us-east-1:486652066693:function:LambdaAuthorizer-LambdaAuthorizer-TSH4AsHiqICi + FunctionArn: !GetAtt LambdaAuthorizer.Arn Identity: Headers: - - Authorization + - Authorization + AuthorizerPayloadFormatVersion: "2.0" + EnableSimpleResponses: true + + # Give the API Gateway permissions to invoke the Lambda authorizer + AuthorizerPermission: + Type: AWS::Lambda::Permission + Properties: + Action: lambda:InvokeFunction + FunctionName: !Ref LambdaAuthorizer + Principal: apigateway.amazonaws.com + SourceArn: !Sub arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:${MyProtectedApi}/* # print API endpoint Outputs: SwiftAPIEndpoint: Description: "API Gateway endpoint URL for your application" Value: !Sub "https://${MyProtectedApi}.execute-api.${AWS::Region}.amazonaws.com" - # Value: !Sub "https://${ServerlessHttpApi}.execute-api.${AWS::Region}.amazonaws.com" diff --git a/Package.swift b/Package.swift index eaccbfb..e77fe98 100644 --- a/Package.swift +++ b/Package.swift @@ -5,13 +5,12 @@ import PackageDescription let package = Package( name: "swift-openapi-lambda", - platforms: [.macOS(.v12)], + platforms: [.macOS(.v15)], products: [.library(name: "OpenAPILambda", targets: ["OpenAPILambda"])], dependencies: [ - .package(url: "https://github.com/apple/swift-openapi-runtime.git", from: "1.0.0"), - .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime.git", from: "1.0.0-alpha.3"), - .package(url: "https://github.com/swift-server/swift-aws-lambda-events.git", from: "1.0.0"), - .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.3.0"), + .package(url: "https://github.com/apple/swift-openapi-runtime.git", from: "1.8.2"), + .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime.git", from: "2.0.0-beta.3"), + .package(url: "https://github.com/swift-server/swift-aws-lambda-events.git", from: "1.2.0"), ], targets: [ .target( @@ -21,8 +20,7 @@ let package = Package( .product(name: "AWSLambdaEvents", package: "swift-aws-lambda-events"), .product(name: "OpenAPIRuntime", package: "swift-openapi-runtime"), ], - path: "Sources", - swiftSettings: [.enableExperimentalFeature("StrictConcurrency=complete")] + path: "Sources" ), // test targets .testTarget( diff --git a/Package@swift-5.10.swift b/Package@swift-5.10.swift deleted file mode 100644 index b155807..0000000 --- a/Package@swift-5.10.swift +++ /dev/null @@ -1,35 +0,0 @@ -// swift-tools-version: 5.10 -// The swift-tools-version declares the minimum version of Swift required to build this package. - -import PackageDescription - -let package = Package( - name: "swift-openapi-lambda", - platforms: [.macOS(.v12)], - products: [.library(name: "OpenAPILambda", targets: ["OpenAPILambda"])], - dependencies: [ - .package(url: "https://github.com/apple/swift-openapi-runtime.git", from: "1.0.0"), - .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime.git", from: "1.0.0-alpha.3"), - .package(url: "https://github.com/swift-server/swift-aws-lambda-events.git", from: "1.0.0"), - .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.3.0"), - ], - targets: [ - .target( - name: "OpenAPILambda", - dependencies: [ - .product(name: "AWSLambdaRuntime", package: "swift-aws-lambda-runtime"), - .product(name: "AWSLambdaEvents", package: "swift-aws-lambda-events"), - .product(name: "OpenAPIRuntime", package: "swift-openapi-runtime"), - ], - path: "Sources", - swiftSettings: [.enableExperimentalFeature("StrictConcurrency=complete")] - ), - // test targets - .testTarget( - name: "OpenAPILambdaTests", - dependencies: [ - .byName(name: "OpenAPILambda") - ] - ), - ] -) diff --git a/Package@swift-5.9.swift b/Package@swift-5.9.swift deleted file mode 100644 index 5d1d0b4..0000000 --- a/Package@swift-5.9.swift +++ /dev/null @@ -1,35 +0,0 @@ -// swift-tools-version: 5.9 -// The swift-tools-version declares the minimum version of Swift required to build this package. - -import PackageDescription - -let package = Package( - name: "swift-openapi-lambda", - platforms: [.macOS(.v12)], - products: [.library(name: "OpenAPILambda", targets: ["OpenAPILambda"])], - dependencies: [ - .package(url: "https://github.com/apple/swift-openapi-runtime.git", from: "1.0.0"), - .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime.git", from: "1.0.0-alpha.3"), - .package(url: "https://github.com/swift-server/swift-aws-lambda-events.git", from: "1.0.0"), - .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.3.0"), - ], - targets: [ - .target( - name: "OpenAPILambda", - dependencies: [ - .product(name: "AWSLambdaRuntime", package: "swift-aws-lambda-runtime"), - .product(name: "AWSLambdaEvents", package: "swift-aws-lambda-events"), - .product(name: "OpenAPIRuntime", package: "swift-openapi-runtime"), - ], - path: "Sources", - swiftSettings: [.enableExperimentalFeature("StrictConcurrency=complete")] - ), - // test targets - .testTarget( - name: "OpenAPILambdaTests", - dependencies: [ - .byName(name: "OpenAPILambda") - ] - ), - ] -) diff --git a/README.md b/README.md index 19be796..23512f3 100644 --- a/README.md +++ b/README.md @@ -1,603 +1,241 @@ [![Build & Test on GitHub](https://github.com/swift-server/swift-openapi-lambda/actions/workflows/pull_request.yml/badge.svg)](https://github.com/swift-server/swift-openapi-lambda/actions/workflows//pull_request.yml) - -![language](https://img.shields.io/badge/swift-5.9-blue) -![language](https://img.shields.io/badge/swift-5.10-blue) ![language](https://img.shields.io/badge/swift-6.0-blue) +![language](https://img.shields.io/badge/swift-6.1-blue) ![platform](https://img.shields.io/badge/platform-macOS-green) ![platform](https://img.shields.io/badge/platform-Linux-orange) [![license](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](LICENSE) -# AWS Lambda transport for Swift OpenAPI +# AWS Lambda transport for Swift OpenAPI This library provides an [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) transport for [Swift OpenAPI generator](https://github.com/apple/swift-openapi-generator) -This library allows to expose server side Swift OpenAPI implementation generated by the Swift OpenAPI generator as an AWS Lambda function. - -The library provides two capabilities: +This library allows you to expose server-side Swift OpenAPI implementations as AWS Lambda functions with minimal code changes. -- a default implementation of an AWS Lambda function that consumes your OpenAPI service implementation -- a binding with the [Amazon API Gateway (HTTP API mode)](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api.html) (aka `APIGatewayV2`) event type. +The library provides: -Other Lambda function bindings (event types) are supported as well, depending on your needs. [We include instructions](#implement-your-own-openapilambda-to-support-other-event-types) to create a binding with an [Amazon API Gateway (REST API mode)](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-rest-api.html) +- A default AWS Lambda Swift function that consumes your OpenAPI service implementation +- Built-in support for [Amazon API Gateway HTTP API](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api.html) events +- Re-exported dependencies to minimize `Package.swift` complexity +We strongly recommend to never deploy openly available API. The QuoteAPI example project shows you how to add a Lambda Authorizer function to the API Gateway. ## Prerequisites -To write and deploy AWS Lambda functions based on an OpenAPI API definition, you need the following: - -- an [AWS Account](https://console.aws.amazon.com/) -- the [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) - install the CLI and [configure](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html) it with credentials to your AWS account -- the [AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html) - a command-line tool used to create serverless workloads on AWS -- the [Docker Desktop](https://www.docker.com/products/docker-desktop/) - to compile your Swift code for Linux deployment to AWS Lambda - -## TL;DR +- [AWS Account](https://console.aws.amazon.com/) +- [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) - configured with your AWS credentials +- [AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html) - for serverless deployment +- [Docker Desktop](https://www.docker.com/products/docker-desktop/) - for cross compilation to Linux, when using macOS or Windows. +## Quick Start If you already have an OpenAPI definition, you already generated the server stubs, and wrote an implementation, here are the additional steps to expose your OpenAPI service implementation as a AWS Lambda function and an Amazon API Gateway HTTP API (aka `APIGatewayV2`). -If you don't know how to start, read the next section, there is [a tutorial with step-by-step instructions](#tutorial-a-quick-start-with-a-stock-quote-api-service-example). - To expose your OpenAPI implementation as an AWS Lambda function: -1. Add the dependency to your `Package.swift` - - The project dependencies: +### 1. Add dependencies to Package.swift ```swift - dependencies: [ - .package(url: "https://github.com/apple/swift-openapi-generator.git", from: "1.0.0"), - .package(url: "https://github.com/apple/swift-openapi-runtime.git", from: "1.0.0"), +dependencies: [ + .package(url: "https://github.com/apple/swift-openapi-generator.git", from: "1.4.0"), + .package(url: "https://github.com/apple/swift-openapi-runtime.git", from: "1.8.2"), // add these three dependencies - .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime.git", from: "1.0.0-alpha.1"), - .package(url: "https://github.com/swift-server/swift-aws-lambda-events.git", from: "0.1.0"), - .package(url: "https://github.com/sebsto/swift-openapi-lambda", from: "0.1.1") - ], -``` + .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime.git", from: "2.0.0-beta.3"), + .package(url: "https://github.com/swift-server/swift-aws-lambda-events.git", from: "1.2.0"), + .package(url: "https://github.com/swift-server/swift-openapi-lambda.git", from: "2.0.0"), +], +targets: [ + .executableTarget( + name: "YourOpenAPIService", + dependencies: [ + .product(name: "OpenAPIRuntime", package: "swift-openapi-runtime"), - The target dependencies: - -```swift - .executableTarget( - name: "YourOpenAPIService", - dependencies: [ - .product(name: "OpenAPIRuntime",package: "swift-openapi-runtime"), - - // add these three dependencies - .product(name: "AWSLambdaRuntime", package: "swift-aws-lambda-runtime"), - .product(name: "AWSLambdaEvents", package: "swift-aws-lambda-events"), - .product(name: "OpenAPILambda",package: "swift-openapi-lambda"), - ], + // add these three products + .product(name: "AWSLambdaRuntime", package: "swift-aws-lambda-runtime"), + .product(name: "AWSLambdaEvents", package: "swift-aws-lambda-events"), + .product(name: "OpenAPILambda", package: "swift-openapi-lambda"), + ] + ) +] ``` -2. Add a protocol and a constructor to your existing OpenAPI service implementation +### 2. Update your service implementation -There are only four changes to make to your existing implementation: +Add a protocol and a constructor to your existing OpenAPI service implementation + +There are only five changes to make to your existing implementation: ![Animated GIF to show the changes](assets/swift-openapi-lambda.gif) ```swift -import Foundation import OpenAPIRuntime import OpenAPILambda // <-- 1. import this library @main // <-- 2. flag this struct as the executable target entrypoint struct QuoteServiceImpl: APIProtocol, OpenAPILambdaHttpApi { // <-- 3. add the OpenAPILambdaHttpApi protocol - init(transport: OpenAPILambdaTransport) throws { // <-- 4. add this constructor (don't remove the call to `registerHandlers(on:)`) + // The registration of your OpenAPI handlers + func register(transport: OpenAPILambdaTransport) throws { // <-- 4. add this method (calls registerHandlers) try self.registerHandlers(on: transport) } - // the rest below is unmodified - - func getQuote(_ input: Operations.getQuote.Input) async throws -> Operations.getQuote.Output { - - let symbol = input.path.symbol - - let price = Components.Schemas.quote( - symbol: symbol, - price: Double.random(in: 100..<150).rounded(), - change: Double.random(in: -5..<5).rounded(), - changePercent: Double.random(in: -0.05..<0.05), - volume: Double.random(in: 10000..<100000).rounded(), - timestamp: Date()) - - return .ok(.init(body: .json(price))) - } -} - -``` - -3. Package and deploy your Lambda function + create an HTTP API Gateway (aka `APIGatewayV2`) - -🎉 Enjoy! - -## Tutorial (a Quick Start with a Stock Quote API service example) - -### Part 1 - the code - -1. Create a Swift executable project - -```sh -mkdir quoteapi && cd quoteapi -swift package init --name quoteapi --type executable -``` - -2. Write or import an OpenAI API definition in YAML or JSON - -```sh -# -# the $ signs are escaped (\$) to work with the cat << EOF command -# if you choose to copy the content directly to a text editor, -# be sure to remove the \ (that means \$ becomes $) -# -``` - -```yaml -cat << EOF > Sources/openapi.yaml -openapi: 3.1.0 -info: - title: StockQuoteService - version: 1.0.0 - -components: - schemas: - quote: - type: object - properties: - symbol: - type: string - price: - type: number - change: - type: number - changePercent: - type: number - volume: - type: number - timestamp: - type: string - format: date-time - -paths: - /stocks/{symbol}: - get: - summary: Get the latest quote for a stock - operationId: getQuote - parameters: - - name: symbol - in: path - required: true - schema: - type: string - tags: - - stocks - responses: - 200: - description: OK - content: - application/json: - schema: - \$ref: '#/components/schemas/quote' - 400: - description: Bad Request - 404: - description: Not Found -EOF -``` - -3. Add a Swift OpenAPI generator configuration file to generate only the server side - -```sh -cat << EOF > Sources/openapi-generator-config.yaml -generate: - - types - - server -EOF -``` - -4. Use this `Package.swift` file to define targets and their dependencies - -```sh -cat << EOF > Package.swift -// swift-tools-version: 5.9 -// The swift-tools-version declares the minimum version of Swift required to build this package. - -import PackageDescription - -let package = Package( - name: "QuoteService", - platforms: [ - .macOS(.v13), .iOS(.v15), .tvOS(.v15), .watchOS(.v6), - ], - products: [ - .executable(name: "QuoteService", targets: ["QuoteService"]), - ], - dependencies: [ - .package(url: "https://github.com/apple/swift-openapi-generator.git", from: "1.0.0"), - .package(url: "https://github.com/apple/swift-openapi-runtime.git", from: "1.0.0"), - .package(url: "https://github.com/swift-server/swift-aws-lambda-runtime.git", from: "1.0.0-alpha.1"), - .package(url: "https://github.com/swift-server/swift-aws-lambda-events.git", from: "0.1.0"), - .package(url: "https://github.com/sebsto/swift-openapi-lambda", from: "0.1.1") - ], - targets: [ - .executableTarget( - name: "QuoteService", - dependencies: [ - .product(name: "AWSLambdaRuntime", package: "swift-aws-lambda-runtime"), - .product(name: "AWSLambdaEvents", package: "swift-aws-lambda-events"), - .product(name: "OpenAPIRuntime",package: "swift-openapi-runtime"), - .product(name: "OpenAPILambda",package: "swift-openapi-lambda"), - ], - path: "Sources", - resources: [ - .copy("openapi.yaml"), - .copy("openapi-generator-config.yaml") - ], - plugins: [ - .plugin( - name: "OpenAPIGenerator", - package: "swift-openapi-generator" - ) - ] - ), - ] -) -EOF -``` - -5. Generate server side Swift stub of the OpenAPI API definition - -```sh -swift build -``` - -6. Replace `main.swift` with your own implementation - -```sh -rm Sources/main.swift -cat << EOF > Sources/QuoteService.swift -import Foundation -import OpenAPIRuntime -import OpenAPILambda - -@main -struct QuoteServiceImpl: APIProtocol, OpenAPILambdaHttpApi { - - init(transport: OpenAPILambdaTransport) throws { - try self.registerHandlers(on: transport) + // the entry point for your Lambda function + static func main() async throws { // <-- 5. add this entry point to start the lambdaRuntime + try await Self.run() } + // Your existing OpenAPI implementation func getQuote(_ input: Operations.getQuote.Input) async throws -> Operations.getQuote.Output { - let symbol = input.path.symbol - let price = Components.Schemas.quote( symbol: symbol, price: Double.random(in: 100..<150).rounded(), change: Double.random(in: -5..<5).rounded(), changePercent: Double.random(in: -0.05..<0.05), volume: Double.random(in: 10000..<100000).rounded(), - timestamp: Date()) - + timestamp: Date() + ) return .ok(.init(body: .json(price))) } } -EOF ``` -7. Build the project to ensure everything works +### 3. Deploy with SAM -```sh -swift build +```bash +sam build && sam deploy --guided ``` -### Part 2 - the deployment +## Complete Example -1. Add the Lambda build instructions as a Docker file and a Makefile. We build for Swift 5.9 on Amazon Linux 2 +See the [Examples/quoteapi](Examples/quoteapi) directory for a complete working example that includes: -```sh -# -# the $ signs are escaped (\$) to work with the cat << EOF command -# if you choose to copy the content directly to a text editor, -# be sure to remove the \ (that means \$ becomes $) -# -``` +- Stock quote API with OpenAPI 3.1 specification +- Lambda authorizer for protected endpoints +- Use `make` for common commands +- SAM deployment configuration +- Local testing setup -```sh -cat << EOF > Dockerfile -# image used to compile your Swift code -FROM public.ecr.aws/docker/library/swift:5.9.1-amazonlinux2 -RUN yum -y install git jq tar zip openssl-devel -EOF +## Testing -cat << EOF > Makefile -### Add functions here and link them to builder-bot format MUST BE "build-FunctionResourceName in template.yaml" +### Local Development -build-QuoteService: builder-bot +```bash +# Run locally with built-in development server +swift run QuoteService -# Helper commands -deploy: - sam deploy - -logs: - sam logs --stack-name QuoteService --name QuoteService - -tail: - sam logs --stack-name QuoteService --name QuoteService --tail - -###################### No Change required below this line ########################## - -builder-bot: - \$(eval \$@PRODUCT = \$(subst build-,,\$(MAKECMDGOALS))) - \$(eval \$@BUILD_DIR = \$(PWD)/.aws-sam/build-swift) - \$(eval \$@STAGE = \$(\$@BUILD_DIR)/lambda) - \$(eval \$@ARTIFACTS_DIR = \$(PWD)/.aws-sam/build/\$(\$@PRODUCT)) - - # build docker image to compile Swift for Linux - docker build -f Dockerfile . -t swift-builder - - # prep directories - mkdir -p \$(\$@BUILD_DIR)/lambda \$(\$@ARTIFACTS_DIR) - - # compile application inside Docker image using source code from local project folder - docker run --rm -v \$(\$@BUILD_DIR):/build-target -v \`pwd\`:/build-src -w /build-src swift-builder bash -cl "swift build --static-swift-stdlib --product \$(\$@PRODUCT) -c release --build-path /build-target" - - # create lambda bootstrap file - docker run --rm -v \$(\$@BUILD_DIR):/build-target -v \`pwd\`:/build-src -w /build-src swift-builder bash -cl "cd /build-target/lambda && ln -s \$(\$@PRODUCT) /bootstrap" - - # copy binary to stage - cp \$(\$@BUILD_DIR)/release/\$(\$@PRODUCT) \$(\$@STAGE)/bootstrap - - # copy app from stage to artifacts dir - cp \$(\$@STAGE)/* \$(\$@ARTIFACTS_DIR) - -EOF +# Test from another terminal +curl -H 'Authorization: Bearer 123' -X POST \ + --data @events/GetQuote.json \ + http://127.0.0.1:7000/invoke ``` -2. Add a SAM template to deploy the Lambda function and the API Gateway +### Production Testing -```sh -# -# the $ signs are escaped (\$) to work with the cat << EOF command -# if you choose to copy the content directly to a text editor, -# be sure to remove the \ (that means \$ becomes $) -# +```bash +# Test deployed API (replace with your endpoint) +curl -H 'Authorization: Bearer 123' \ + https://your-api-id.execute-api.region.amazonaws.com/stocks/AAPL ``` -```sh -cat << EOF > template.yml -AWSTemplateFormatVersion: '2010-09-09' -Transform: AWS::Serverless-2016-10-31 -Description: SAM Template for QuoteService - -Globals: - Function: - Timeout: 60 - CodeUri: . - Handler: swift.bootstrap - Runtime: provided.al2 - MemorySize: 512 - Architectures: - - arm64 - -Resources: - # Lambda function - QuoteService: - Type: AWS::Serverless::Function - Properties: - Events: - # pass through all HTTP verbs and paths - Api: - Type: HttpApi - Properties: - Path: /{proxy+} - Method: ANY - - Metadata: - BuildMethod: makefile - -# print API endpoint and name of database table -Outputs: - SwiftAPIEndpoint: - Description: "API Gateway endpoint URL for your application" - Value: !Sub "https://\${ServerlessHttpApi}.execute-api.\${AWS::Region}.amazonaws.com" -EOF -``` - -3. Build the Lambda function executable for Amazon Linux 2 - -```sh -sam build -``` - -4. Deploy the Lambda function and create an API Gateway in front of it - -```sh -# use --guided for the first deployment only. -# SAM cli collects a few parameters and store them in `samconfig.toml` - -sam deploy --guided --stack-name QuoteService -``` - -Accept all the default values, except: - -```sh -QuoteService has no authentication. Is this okay? [y/N]: <-- answer Y here -``` - -This command outputs the URL of the API Gateway, for example: - -```sh -Outputs ------------------------------------------------------------------------------------------------------------------------------ -Key SwiftAPIEndpoint -Description API Gateway endpoint URL for your application -Value https://747ukfmah7.execute-api.us-east-1.amazonaws.com ------------------------------------------------------------------------------------------------------------------------------ -``` - -5. Test your setup - -```sh -curl [[ Replace with SWIFTAPIEndpoint value ]]/stocks/AAPL -{ - "change" : -4, - "changePercent" : -0.030052760210257923, - "price" : 111, - "symbol" : "AAPL", - "timestamp" : "2023-12-13T03:12:35Z", - "volume" : 63812 -} -``` +## Deployment Costs -## Deployment costs +New AWS accounts get 1 million Lambda invocations and 1 million API Gateway requests free per month. After the free tier, costs are approximately $1.00 per million API calls. -On new AWS accounts, there is no costs associated with the deployment and test of this sample code, up to 1 million invocation per month. It falls under the permananet AWS free Tier for [AWS Lambda](https://aws.amazon.com/lambda/pricing/) and [Amazon API Gateway](https://aws.amazon.com/api-gateway/pricing/) +## Cleanup -When you're account is older than a year, you are charged $1.0 per million calls to the API Gateway. AWS Lambda function invocation stays free up to 4 million invocations and 400.000 GB-second compute time per month. - -## Cleanup - -To delete the AWS Lambda function, the API Gateway, and the roles and permissions created with `sam`, just type: - -```sh +```bash sam delete ``` -## Local Testing - -``` -git clone https://github.com/sebsto/swift-openapi-lambda.git && cd swift-openapi-lambda -# In the directory of the Swift OpenAPI Lambda transport project -LOCAL_LAMBDA_SERVER_ENABLED=true swift run - -# from another terminal, in the directory of the QuoteAPI sample project -curl -v -X POST --header "Content-Type: application/json" --data @events/GetQuote.json http://127.0.0.1:7000/invoke -``` - -## Implement your own `OpenAPILambda` to support other AWS Lambda event types - -When you expose your AWS Lambda function to other event types, you have to specialize the `OpenAPILambda` protocol and implement the two methods that transform your Lambda function input data to an `OpenAPIRequest` and the other way around, transform an `OpenAPIResponse` to your Lambda function output type. +## Lambda Authorizers -Here is an example with the [Amazon API Gateway (Rest Api)](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-rest-api.htm), (aka the original API Gateway). - -I start with an OpenAPI stub implementation - unmodified. +The library supports Lambda authorizers for API protection. See [Examples/quoteapi/Sources/LambdaAuthorizer](Examples/quoteapi/Sources/LambdaAuthorizer) for a complete implementation that validates a Bearer token. ```swift -import Foundation -import OpenAPIRuntime - -struct QuoteServiceImpl: APIProtocol { - func getQuote(_ input: Operations.getQuote.Input) async throws -> Operations.getQuote.Output { - - let symbol = input.path.symbol - - let price = Components.Schemas.quote( - symbol: symbol, - price: Double.random(in: 100..<150).rounded(), - change: Double.random(in: -5..<5).rounded(), - changePercent: Double.random(in: -0.05..<0.05), - volume: Double.random(in: 10000..<100000).rounded(), - timestamp: Date()) - - return .ok(.init(body: .json(price))) - } +let simpleAuthorizerHandler: (APIGatewayLambdaAuthorizerRequest, LambdaContext) async throws -> APIGatewayLambdaAuthorizerSimpleResponse = { + guard let authToken = $0.headers["authorization"], + authToken == "Bearer 123" else { + return .init(isAuthorized: false, context: [:]) + } + return .init(isAuthorized: true, context: ["user": "authenticated"]) } ``` -Next, I implement a `struct` that conforms to `OpenAPILambda`. This `struct` defines: +## Advanced Usage -- the event input and output the Lambda function will work on (from [AWS Lambda Event Types](https://github.com/swift-server/swift-aws-lambda-events) library). -- the mandatory constructor `init(transport:)` -- the executable target entrypoint (`@main`) +### Custom Event Types -Here is an example using `APIGatewayRequest` and `APIGatewayResponse`: +To support other Lambda event types beyond API Gateway, implement the `OpenAPILambda` protocol: ```swift @main -struct QuoteServiceLambda: OpenAPILambda { - typealias Event = APIGatewayRequest - typealias Output = APIGatewayResponse - public init(transport: OpenAPILambdaTransport) throws { - let openAPIHandler = QuoteServiceImpl() - try openAPIHandler.registerHandlers(on: transport) +struct CustomServiceLambda: OpenAPILambda { + typealias Event = YourCustomEvent + typealias Output = YourCustomResponse + + func register(transport: OpenAPILambdaTransport) throws { + let handler = YourServiceImpl() + try handler.registerHandlers(on: transport) + } + + func request(context: LambdaContext, from event: Event) throws -> OpenAPILambdaRequest { + // Transform your event to HTTPRequest + } + + func output(from response: OpenAPILambdaResponse) -> Output { + // Transform HTTPResponse to your output type } } ``` -Next step is to implement two methods from `OpenAPILambda` protocol to convert your Lambda function input data (`APIGatewayRequest`) to an `OpenAPIRequest` and the other way around, transform an `OpenAPIResponse` to your Lambda function output type (`APIGatewayResponses`). +### Service Lifecycle Integration ```swift -extension OpenAPILambda where Event == APIGatewayRequest { - /// Transform a Lambda input (`APIGatewayRequest` and `LambdaContext`) to an OpenAPILambdaRequest (`HTTPRequest`, `String?`) - public func request(context: LambdaContext, from request: Event) throws -> OpenAPILambdaRequest { - (try request.httpRequest(), request.body) - } -} - -extension OpenAPILambda where Output == APIGatewayResponse { - /// Transform an OpenAPI response (`HTTPResponse`, `String?`) to a Lambda Output (`APIGatewayResponse`) - public func output(from response: OpenAPILambdaResponse) -> Output { - var apiResponse = APIGatewayResponse(from: response.0) - apiResponse.body = response.1 - return apiResponse - } +import ServiceLifecycle + +// In your OpenAPI service, explicitly create and manage the LambdaRuntime +static func main() async throws { + let lambdaRuntime = try LambdaRuntime(body: Self.handler()) + let serviceGroup = ServiceGroup( + services: [lambdaRuntime], + gracefulShutdownSignals: [.sigterm], + cancellationSignals: [.sigint], + logger: Logger(label: "ServiceGroup") + ) + try await serviceGroup.run() } ``` -To keep the above code short, simple, and readable, we suggest to implement whatever extension on the Lambda source Event type. Here are the extensions required to support the above code. These are simple data transformation methods from one type to the other. +### Dependency Injection + +For advanced use cases requiring dependency injection: ```swift -extension APIGatewayRequest { +@main +struct QuoteServiceImpl: APIProtocol, OpenAPILambdaHttpApi { + let customDependency: Int - /// Return an `HTTPRequest.Method` for this `APIGatewayRequest` - public func httpRequestMethod() throws -> HTTPRequest.Method { - guard let method = HTTPRequest.Method(rawValue: self.httpMethod.rawValue) else { - throw OpenAPILambdaHttpError.invalidMethod(self.httpMethod.rawValue) - } - return method + init(customDependency: Int = 0) { + self.customDependency = customDependency } - - /// Return an `HTTPRequest` for this `APIGatewayV2Request` - public func httpRequest() throws -> HTTPRequest { - try HTTPRequest( - method: self.httpRequestMethod(), - scheme: "https", - authority: "", - path: self.path, - headerFields: self.headers.httpFields() - ) + + // the entry point can be in another file / struct as well. + static func main() async throws { + let service = QuoteServiceImpl(customDependency: 42) + let lambda = try OpenAPILambdaHandler(service: service) + let lambdaRuntime = LambdaRuntime(body: lambda.handler) + try await lambdaRuntime.run() } -} - -extension APIGatewayResponse { - /// Create a `APIGatewayV2Response` from an `HTTPResponse` - public init(from response: HTTPResponse) { - self = APIGatewayResponse( - statusCode: .init(code: UInt(response.status.code)), - headers: .init(from: response.headerFields), - isBase64Encoded: false - ) + func register(transport: OpenAPILambdaTransport) throws { + try self.registerHandlers(on: transport) } } ``` -You can apply the same design to support other AWS Lambda event types. However, keep in mind that the `OpenAPILAmbda` implementation is heavily biased towards receiving, routing, and responding to HTTP requests. - -## References - -### Swift OpenAPI generator - -To get started with the Swift OpenAPI generator, check out the full [documentation](https://swiftpackageindex.com/apple/swift-openapi-generator/documentation), which contains [a step-by-step tutorial](https://swiftpackageindex.com/apple/swift-openapi-generator/0.3.5/tutorials/swift-openapi-generator). - - -### Swift on AWS Lambda - -The Swift Runtime for AWS Lambda allows you to write AWS Lambda functions in the Swift programming language. - -To get started, check out [this step-by-step tutorial](https://swiftpackageindex.com/swift-server/swift-aws-lambda-runtime/main/tutorials/table-of-content) and [the documentation](https://swiftpackageindex.com/swift-server/swift-aws-lambda-runtime). - -### Serverless Application Model (SAM) +## References -Read "[What is SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html)" to understand and get started with SAM. +- [Swift OpenAPI Generator](https://swiftpackageindex.com/apple/swift-openapi-generator/documentation) - Complete documentation and tutorials +- [Swift AWS Lambda Runtime](https://swiftpackageindex.com/swift-server/swift-aws-lambda-runtime) - Swift runtime for AWS Lambda +- [AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html) - Serverless Application Model documentation +- [API Gateway Lambda Authorizers](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-use-lambda-authorizer.html) - Lambda authorization documentation \ No newline at end of file diff --git a/Sources/Exports.swift b/Sources/Exports.swift new file mode 100644 index 0000000..ceb8f66 --- /dev/null +++ b/Sources/Exports.swift @@ -0,0 +1,18 @@ +//===----------------------------------------------------------------------===// +// +// This source file is part of the Swift OpenAPI Lambda open source project +// +// Copyright (c) 2025 Amazon.com, Inc. or its affiliates +// and the Swift OpenAPI Lambda project authors +// Licensed under Apache License v2.0 +// +// See LICENSE.txt for license information +// See CONTRIBUTORS.txt for the list of Swift OpenAPI Lambda project authors +// +// SPDX-License-Identifier: Apache-2.0 +// +//===----------------------------------------------------------------------===// + +// re-export AWSLambdaRuntime and AWSLambdaEvents so that users don't have to. +@_exported import AWSLambdaRuntime +@_exported import AWSLambdaEvents diff --git a/Sources/HttpApi/OpenAPILambdaHttpApi.swift b/Sources/HttpApi/OpenAPILambdaHttpApi.swift index 6220d90..226fda3 100644 --- a/Sources/HttpApi/OpenAPILambdaHttpApi.swift +++ b/Sources/HttpApi/OpenAPILambdaHttpApi.swift @@ -24,7 +24,7 @@ public enum OpenAPILambdaHttpError: Error { } /// An specialization of the `OpenAPILambda` protocol that works with Amazon API Gateway HTTP Mode, aka API Gateway v2 -public protocol OpenAPILambdaHttpApi: OpenAPILambda +public protocol OpenAPILambdaHttpApi: OpenAPILambdaService where Event == APIGatewayV2Request, Output == APIGatewayV2Response diff --git a/Sources/Middleware/LoggingMiddleware.swift b/Sources/Middleware/LoggingMiddleware.swift new file mode 100644 index 0000000..c6d385b --- /dev/null +++ b/Sources/Middleware/LoggingMiddleware.swift @@ -0,0 +1,48 @@ +//===----------------------------------------------------------------------===// +// +// This source file is part of the Swift OpenAPI Lambda open source project +// +// Copyright (c) 2023 Amazon.com, Inc. or its affiliates +// and the Swift OpenAPI Lambda project authors +// Licensed under Apache License v2.0 +// +// See LICENSE.txt for license information +// See CONTRIBUTORS.txt for the list of Swift OpenAPI Lambda project authors +// +// SPDX-License-Identifier: Apache-2.0 +// +//===----------------------------------------------------------------------===// + +import HTTPTypes +import Logging +import OpenAPIRuntime + +/// A middleware that logs request and response metadata. +/// Only active at .trace level +public struct LoggingMiddleware: ServerMiddleware { + + private let logger: Logger + public init(logger: Logger) { + self.logger = logger + } + + public func intercept( + _ request: HTTPRequest, + body: HTTPBody?, + metadata: ServerRequestMetadata, + operationID: String, + next: (HTTPRequest, HTTPBody?, ServerRequestMetadata) async throws -> (HTTPResponse, HTTPBody?) + ) async throws -> (HTTPResponse, HTTPBody?) { + + logger.trace(">>>: \(request.method.rawValue) \(request.path ?? "")") + do { + let (response, responseBody) = try await next(request, body, metadata) + logger.trace("<<<: \(response.status.code)") + return (response, responseBody) + } catch { + logger.trace("!!!: \(error.localizedDescription)") + throw error + } + } + +} diff --git a/Sources/OpenAPILambdaHandler.swift b/Sources/OpenAPILambdaHandler.swift index 58d312b..b2784a7 100644 --- a/Sources/OpenAPILambdaHandler.swift +++ b/Sources/OpenAPILambdaHandler.swift @@ -18,23 +18,28 @@ import OpenAPIRuntime import HTTPTypes /// Specialization of LambdaHandler which runs an OpenAPILambda -public struct OpenAPILambdaHandler: LambdaHandler { +public struct OpenAPILambdaHandler: LambdaHandler, Sendable { + + private let transport: OpenAPILambdaTransport + private let openAPIService: OALS /// the input type for this Lambda handler (received from the `OpenAPILambda`) - public typealias Event = L.Event + public typealias Event = OALS.Event /// the output type for this Lambda handler (received from the `OpenAPILambda`) - public typealias Output = L.Output + public typealias Output = OALS.Output /// Initialize `OpenAPILambdaHandler`. /// - /// Create application, set it up and create `OpenAPILambda` from application and create responder + /// This initializer decouples the OpenAPILambdaService creation from the registration of the transport + /// this allows users to control the lifecycle of their service and to inject dependencies. + /// /// - Parameters - /// - context: Lambda initialization context - public init(context: LambdaInitializationContext) throws { - self.router = TrieRouter() - self.transport = OpenAPILambdaTransport(router: self.router) - self.lambda = try .init(transport: self.transport) + /// - withService: The OpenAPI Lambda service to bind to this Lambda handler function + public init(withService openAPILambdaService: OALS) throws { + self.openAPIService = openAPILambdaService + self.transport = OpenAPILambdaTransport(router: TrieRouter()) + try self.openAPIService.register(transport: self.transport) } /// The Lambda handling method. @@ -45,17 +50,17 @@ public struct OpenAPILambdaHandler: LambdaHandler { /// - context: Runtime ``LambdaContext``. /// /// - Returns: A Lambda result ot type `Output`. - public func handle(_ request: Event, context: LambdaContext) async throws -> Output { + public func handle(_ event: OALS.Event, context: AWSLambdaRuntime.LambdaContext) async throws -> OALS.Output { - // by default return HTTP 500 + // by default returns HTTP 500 var lambdaResponse: OpenAPILambdaResponse = (HTTPResponse(status: .internalServerError), "unknown error") do { // convert Lambda event source to OpenAPILambdaRequest - let request = try lambda.request(context: context, from: request) + let request = try openAPIService.request(context: context, from: event) // route the request to find the handlers and extract the paramaters - let (handler, parameters) = try await router.route(method: request.0.method, path: request.0.path!) + let (handler, parameters) = try self.transport.router.route(method: request.0.method, path: request.0.path!) // call the request handler (and extract the HTTPRequest and HTTPBody) let httpRequest = request.0 @@ -83,10 +88,10 @@ public struct OpenAPILambdaHandler: LambdaHandler { lambdaResponse = (HTTPResponse(status: .notFound), "There is no route registered for the method \(method)") } - catch OpenAPILambdaRouterError.noRouteForPath(let path) { + catch OpenAPILambdaRouterError.noRouteForPath(let method, let path) { // There is no hadler registered for this path. This is a programming error. - lambdaResponse = (HTTPResponse(status: .notFound), "There is no route registered for the path \(path)") + lambdaResponse = (HTTPResponse(status: .notFound), "There is no route registered for the path \(method) \(path)") } catch OpenAPILambdaHttpError.invalidMethod(let method) { @@ -99,12 +104,12 @@ public struct OpenAPILambdaHandler: LambdaHandler { ) } + catch { + // some other error happened + lambdaResponse = (HTTPResponse(status: .internalServerError), "Unknown error: \(String(reflecting: error))") + } // transform the OpenAPILambdaResponse to the Lambda Output - return lambda.output(from: lambdaResponse) + return openAPIService.output(from: lambdaResponse) } - - let router: OpenAPILambdaRouter - let transport: OpenAPILambdaTransport - let lambda: L } diff --git a/Sources/OpenAPILambda.swift b/Sources/OpenAPILambdaService.swift similarity index 56% rename from Sources/OpenAPILambda.swift rename to Sources/OpenAPILambdaService.swift index 9ae193e..949a78c 100644 --- a/Sources/OpenAPILambda.swift +++ b/Sources/OpenAPILambdaService.swift @@ -14,20 +14,21 @@ //===----------------------------------------------------------------------===// import Foundation import AWSLambdaRuntime +import Logging import OpenAPIRuntime import HTTPTypes /// A Lambda function implemented with a OpenAPI server (implementing `APIProtocol` from Swift OpenAPIRuntime) -public protocol OpenAPILambda { +public protocol OpenAPILambdaService: Sendable { - associatedtype Event: Decodable - associatedtype Output: Encodable + associatedtype Event: Decodable, Sendable + associatedtype Output: Encodable, Sendable - /// Initialize application. + /// Injects the transport. /// - /// This is where you create your OpenAPI service implementation and register the transport - init(transport: OpenAPILambdaTransport) throws - + /// This is where your OpenAPILambdaService implementation must register the transport + func register(transport: OpenAPILambdaTransport) throws + /// Convert from `Event` type to `OpenAPILambdaRequest` /// - Parameters: /// - context: Lambda context @@ -39,11 +40,19 @@ public protocol OpenAPILambda { func output(from: OpenAPILambdaResponse) -> Output } -extension OpenAPILambda { - /// Initializes and runs the Lambda function. +extension OpenAPILambdaService { + + /// Start the Lambda Runtime with the Lambda handler function + /// for this OpenAPI Lambda service implementation with a custom logger, /// - /// If you precede your ``EventLoopLambdaHandler`` conformer's declaration with the - /// [@main](https://docs.swift.org/swift-book/ReferenceManual/Attributes.html#ID626) - /// attribute, the system calls the conformer's `main()` method to launch the lambda function. - public static func main() throws { OpenAPILambdaHandler.main() } + /// - Parameter logger: The logger to use for Lambda runtime logging + public func run(logger: Logger? = nil) async throws { + let _logger = logger ?? Logger(label: "OpenAPILambdaService") + + let lambda = try OpenAPILambdaHandler(withService: self) + let lambdaRuntime = LambdaRuntime(logger: _logger, body: lambda.handle) + try await lambdaRuntime.run() + } } + + diff --git a/Sources/OpenAPILambdaTransport.swift b/Sources/OpenAPILambdaTransport.swift index 0dd6dc8..c3ec064 100644 --- a/Sources/OpenAPILambdaTransport.swift +++ b/Sources/OpenAPILambdaTransport.swift @@ -35,12 +35,16 @@ public typealias OpenAPIHandler = @Sendable (HTTPRequest, HTTPBody?, ServerReque ) /// Lambda Transport for OpenAPI generator -public struct OpenAPILambdaTransport: ServerTransport { +public struct OpenAPILambdaTransport: ServerTransport, Sendable { - private var router: OpenAPILambdaRouter + /// The router for the OpenAPILambdaTransport + /// Use this router to register your OpenAPI handlers + /// and add your own route, such as /health + public let router: OpenAPILambdaRouter /// Create a `OpenAPILambdaTransport` with the given `OpenAPILambdaRouter` - public init(router: OpenAPILambdaRouter) { self.router = router } + /// - Parameter router: The router to use for the transport. + init(router: OpenAPILambdaRouter) { self.router = router } /// Registers an HTTP operation handler at the provided path and method. /// - Parameters: diff --git a/Sources/Router/OpenAPILambdaRouter+SimplifiedAPI.swift b/Sources/Router/OpenAPILambdaRouter+SimplifiedAPI.swift new file mode 100644 index 0000000..a53922f --- /dev/null +++ b/Sources/Router/OpenAPILambdaRouter+SimplifiedAPI.swift @@ -0,0 +1,89 @@ +//===----------------------------------------------------------------------===// +// +// This source file is part of the Swift OpenAPI Lambda open source project +// +// Copyright (c) 2023 Amazon.com, Inc. or its affiliates +// and the Swift OpenAPI Lambda project authors +// Licensed under Apache License v2.0 +// +// See LICENSE.txt for license information +// See CONTRIBUTORS.txt for the list of Swift OpenAPI Lambda project authors +// +// SPDX-License-Identifier: Apache-2.0 +// +//===----------------------------------------------------------------------===// +import AWSLambdaEvents +import Foundation +import HTTPTypes +import OpenAPIRuntime + + +// TODO: add more method to simplify usage + +// Current API : + +// try router.add( +// method: .get, +// path: "/health" +// ) { (request: HTTPRequest, body: HTTPBody?, metadata: ServerRequestMetadata) -> (HTTPResponse,HTTPBody?) in +// return (.init(status: .ok), .init("OK")) +// } + +// should be + +// try router.get("/health") { _ in +// "OK" +// } + +extension OpenAPILambdaRouter { + + /// Adds a GET route to the router for the given path. + /// + /// The given handler retruns a String that will be converted to the correct response type. + /// It will return an HTTP 200 response or HTTP 500 if your handler throws and error + /// - Parameters: + /// - path: The path for the route. + /// - handler: The handler to be executed for the route. + /// - Throws: An error if the route cannot be added. + public func get( + _ path: String, + handler: @escaping @Sendable (HTTPRequest, HTTPBody?) async throws -> String + ) throws { + try generic(method: .get, path: path, handler: handler) + } + + /// Adds a POST route to the router for the given path. + /// + /// The given handler retruns a String that will be converted to the correct response type. + /// It will return an HTTP 200 response or HTTP 500 if your handler throws and error + /// - Parameters: + /// - path: The path for the route. + /// - handler: The handler to be executed for the route. + /// - Throws: An error if the route cannot be added. + public func post( + _ path: String, + handler: @escaping @Sendable (HTTPRequest, HTTPBody?) async throws -> String + ) throws { + try generic(method: .post, path: path, handler: handler) + } + + func generic( + method: HTTPRequest.Method, + path: String, + handler: @escaping @Sendable (HTTPRequest, HTTPBody?) async throws -> Response + ) throws { + + let openAPIHandler: OpenAPIHandler = { + (request: HTTPRequest, body: HTTPBody?, metadata: ServerRequestMetadata) -> (HTTPResponse, HTTPBody?) in + do { + let response = try await handler(request, body) + return (.init(status: .ok), .init(response)) + } + catch { + return (.init(status: .internalServerError), nil) + } + } + + try add(method: method, path: path, handler: openAPIHandler) + } +} diff --git a/Sources/Router/OpenAPILambdaRouter.swift b/Sources/Router/OpenAPILambdaRouter.swift index adaa76d..cf4929d 100644 --- a/Sources/Router/OpenAPILambdaRouter.swift +++ b/Sources/Router/OpenAPILambdaRouter.swift @@ -18,18 +18,18 @@ import HTTPTypes /// Errors returned by the router public enum OpenAPILambdaRouterError: Error { - case noRouteForPath(String) + case noRouteForPath(HTTPRequest.Method, String) case noHandlerForPath(String) case noRouteForMethod(HTTPRequest.Method) } /// A router API -public protocol OpenAPILambdaRouter { +public protocol OpenAPILambdaRouter: Sendable { /// add a route for a given HTTP method and path and associate a handler func add(method: HTTPRequest.Method, path: String, handler: @escaping OpenAPIHandler) throws /// Retrieve the handler and path parameter for a given HTTP method and path - func route(method: HTTPRequest.Method, path: String) async throws -> ( + func route(method: HTTPRequest.Method, path: String) throws -> ( OpenAPIHandler, OpenAPILambdaRequestParameters ) } diff --git a/Sources/Router/OpenAPILambdaRouterNode.swift b/Sources/Router/OpenAPILambdaRouterNode.swift index 4f0ed97..b109425 100644 --- a/Sources/Router/OpenAPILambdaRouterNode.swift +++ b/Sources/Router/OpenAPILambdaRouterNode.swift @@ -22,24 +22,24 @@ import HTTPTypes /// - a path element (represented as a `String`), /// - a path parameter (represented as a `String`) /// - a handler, only for leaf nodes (represented as `OpenAPIHandler`) -class Node { +final class Node { let value: NodeValue var children: [String: Node] = [:] /// Default init, create a root node - public init() { value = .root } + init() { value = .root } /// Creates a node for an HTTP method - public init(httpMethod: HTTPRequest.Method) { value = .httpMethod(httpMethod) } + init(httpMethod: HTTPRequest.Method) { value = .httpMethod(httpMethod) } /// Creates a node for a path element - public init(pathElement: String) { value = .pathElement(pathElement) } + init(pathElement: String) { value = .pathElement(pathElement) } /// Creates a node for a path parameter - public init(parameterName: String) { value = .pathParameter(parameterName) } + init(parameterName: String) { value = .pathParameter(parameterName) } /// Creates a node for an OpenAPI handler - public init(handler: @escaping OpenAPIHandler) { value = .handler(handler) } + init(handler: @escaping OpenAPIHandler) { value = .handler(handler) } /// Creates a node for an existing node value private init(value: NodeValue) { self.value = value } @@ -62,8 +62,8 @@ class Node { /// - Throws: /// - URIPathCollectionError.canNotAddChildToHandlerNode when trying to add a child to leaf node of type `.handler` /// - URIPathCollectionError.canNotHaveMultipleParamChilds when trying to add multiple child node of type `.parameter` - func add(pathElement: String) throws -> Node { try add(child: NodeValue.pathElement(pathElement)) } + /// Convenience method to add a child node of type path parameter to this node /// - Parameter: /// - pathParameter: the name of a path parameter. A path parameter is a `{name}` usually found between `/` characters in the URI @@ -72,8 +72,8 @@ class Node { /// - Throws: /// - URIPathCollectionError.canNotAddChildToHandlerNode when trying to add a child to leaf node of type `.handler` /// - URIPathCollectionError.canNotHaveMultipleParamChilds when trying to add multiple child node of type `.parameter` - func add(parameter: String) throws -> Node { try add(child: NodeValue.pathParameter(parameter)) } + /// Convenience method to add a child node of type handler to this node /// - Parameter: /// - handler: a function handler. A handler MUST be a leaf node (it has no children) and is of type `OpenAPIHandler` diff --git a/Sources/Router/OpenAPILambdaRouterTrie.swift b/Sources/Router/OpenAPILambdaRouterTrie.swift index 1d5ca2d..d07e776 100644 --- a/Sources/Router/OpenAPILambdaRouterTrie.swift +++ b/Sources/Router/OpenAPILambdaRouterTrie.swift @@ -13,20 +13,57 @@ // //===----------------------------------------------------------------------===// import HTTPTypes +import Synchronization /// A Trie router implementation -public struct TrieRouter: OpenAPILambdaRouter { - private let uriPath: URIPathCollection = URIPath() +final class TrieRouter: OpenAPILambdaRouter, CustomStringConvertible { + private let uriPath = Mutex(URIPath()) /// add a route for a given HTTP method and path and associate a handler - public func add(method: HTTPRequest.Method, path: String, handler: @escaping OpenAPIHandler) throws { - try uriPath.add(method: method, path: path, handler: handler) + func add(method: HTTPRequest.Method, path: String, handler: @escaping OpenAPIHandler) throws { + try self.uriPath.withLock { @Sendable in + try $0.add(method: method, path: path, handler: handler) + } } /// Retrieve the handler and path parameter for a given HTTP method and path - public func route(method: HTTPRequest.Method, path: String) async throws -> ( + func route(method: HTTPRequest.Method, path: String) throws -> ( OpenAPIHandler, OpenAPILambdaRequestParameters - ) { try uriPath.find(method: method, path: path) } + ) { + try self.uriPath.withLock { try $0.find(method: method, path: path) } + } + + var description: String { + uriPath.withLock { uriPath in + var routes: [String] = [] + collectRoutes(from: uriPath.root(), method: nil, path: "", parameters: [], routes: &routes) + return routes.joined(separator: "\n") + } + } + + private func collectRoutes(from node: Node, method: HTTPRequest.Method?, path: String, parameters: [String], routes: inout [String]) { + // If this node has a handler, we found a complete route + if let _ = node.handlerChild(), let method = method { + let paramString = parameters.isEmpty ? "" : " " + parameters.map { "\($0)=value" }.joined(separator: " ") + routes.append("\(method.rawValue) \(path)\(paramString)") + } + + // Traverse all children + for (_, child) in node.children { + switch child.value { + case .httpMethod(let httpMethod): + collectRoutes(from: child, method: httpMethod, path: path, parameters: parameters, routes: &routes) + case .pathElement(let element): + collectRoutes(from: child, method: method, path: path + "/" + element, parameters: parameters, routes: &routes) + case .pathParameter(let param): + var newParams = parameters + newParams.append(param) + collectRoutes(from: child, method: method, path: path + "/{\(param)}", parameters: newParams, routes: &routes) + case .handler, .root: + collectRoutes(from: child, method: method, path: path, parameters: parameters, routes: &routes) + } + } + } } enum URIPathCollectionError: Error { @@ -46,7 +83,7 @@ protocol URIPathCollection { /// Example : /// an URI of GET /stocks/{symbol} will generate a tree `root -> GET -> stocks -> symbol` struct URIPath: URIPathCollection { - private var _root = Node() + private let _root = Node() func root() -> Node { self._root } @@ -126,7 +163,7 @@ struct URIPath: URIPathCollection { currentNode = child } else { - throw OpenAPILambdaRouterError.noRouteForPath(path) + throw OpenAPILambdaRouterError.noRouteForPath(method, path) } } } diff --git a/Tests/OpenAPILambdaTests/Router/RouterGraphTest.swift b/Tests/OpenAPILambdaTests/Router/RouterGraphTest.swift index 610c736..c26fe9e 100644 --- a/Tests/OpenAPILambdaTests/Router/RouterGraphTest.swift +++ b/Tests/OpenAPILambdaTests/Router/RouterGraphTest.swift @@ -14,13 +14,10 @@ //===----------------------------------------------------------------------===// import HTTPTypes import OpenAPIRuntime +import Testing @testable import OpenAPILambda -// only run unit tests on Swift 6.x -#if swift(>=6.0) -import Testing - struct RouterGraphTests { @Test("Path with no parameters") func testPathNoParams() async throws { @@ -323,9 +320,8 @@ struct RouterGraphTests { //when #expect(throws: Never.self) { try graph.find(method: method, path: pathToTest) } - let (handler, metadata) = try graph.find(method: method, path: pathToTest) + let (_, metadata) = try graph.find(method: method, path: pathToTest) #expect(metadata.count == 0) - #expect(handler != nil) } @Test( @@ -346,11 +342,10 @@ struct RouterGraphTests { //when #expect(throws: Never.self) { - let (handler, metadata) = try graph.find(method: method, path: pathToTest) + let (_, metadata) = try graph.find(method: method, path: pathToTest) // then (we can not test if the query string param have been decoded, that's the job of the openapi runtime.) #expect(metadata.count == 1) - #expect(handler != nil) } } @@ -365,9 +360,8 @@ struct RouterGraphTests { //when #expect(throws: Never.self) { try graph.find(method: method, path: pathToTest) } - let (handler, metadata) = try graph.find(method: method, path: pathToTest) + let (_, metadata) = try graph.find(method: method, path: pathToTest) #expect(metadata.count == 1) - #expect(handler != nil) } @Test("Find handler error 1") @@ -439,5 +433,6 @@ struct RouterGraphTests { return graph } + // TODO: add a test to check what happens when two methods + identiacal paths with two different handlers are added + } -#endif diff --git a/Tests/OpenAPILambdaTests/Router/RouterNodeTest.swift b/Tests/OpenAPILambdaTests/Router/RouterNodeTest.swift index dee9a86..23ff5c4 100644 --- a/Tests/OpenAPILambdaTests/Router/RouterNodeTest.swift +++ b/Tests/OpenAPILambdaTests/Router/RouterNodeTest.swift @@ -14,13 +14,10 @@ //===----------------------------------------------------------------------===// import HTTPTypes import OpenAPIRuntime +import Testing @testable import OpenAPILambda -// only run unit tests on Swift 6.x -#if swift(>=6.0) -import Testing - struct RouterNodeTests { @Test("First node is root") func testFirstNodeIsRoot() throws { @@ -212,4 +209,3 @@ struct RouterNodeTests { } } -#endif diff --git a/assets/swift-openapi-lambda-v0x.gif b/assets/swift-openapi-lambda-v0x.gif new file mode 100644 index 0000000000000000000000000000000000000000..7ff4383548caf807eea55fd42e1116f3be469889 GIT binary patch literal 1506397 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

S`KD>(7%aszIt6H^N&oWv7ZY;(DAC8o+ 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