mirror of
https://github.com/swift-server/swift-aws-lambda-runtime.git
synced 2026-06-02 07:27:33 +00:00
0777c80172
Add `S3EventNotifier` example ### Motivation: There is currently no example regarding an AWS event triggered lambda, such as a lambda that gets invoked on an S3 object upload. I've had to look for a while to figure out that the `AWSLambdaEvents` exists and that it can be used for that (had to find out via a Java example! 😜) so I think this could be useful and a somewhat common use case ### Modifications: Added an example of a lambda that gets triggered when an object gets uploaded to an S3 bucket. I have not described how to set up the actual S3 event in AWS because I figured if you needed such a lambda you'd know, but I can describe that too in the README if needed --------- Co-authored-by: Sébastien Stormacq <sebastien.stormacq@gmail.com>
34 lines
1.2 KiB
Swift
34 lines
1.2 KiB
Swift
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This source file is part of the SwiftAWSLambdaRuntime open source project
|
|
//
|
|
// Copyright (c) 2025 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
|
|
import Foundation
|
|
|
|
let runtime = LambdaRuntime { (event: S3Event, context: LambdaContext) async throws in
|
|
guard let s3NotificationRecord = event.records.first else {
|
|
context.logger.error("No S3 notification record found in the event")
|
|
return
|
|
}
|
|
|
|
let bucket = s3NotificationRecord.s3.bucket.name
|
|
let key = s3NotificationRecord.s3.object.key.replacingOccurrences(of: "+", with: " ")
|
|
|
|
context.logger.info("Received notification from S3 bucket '\(bucket)' for object with key '\(key)'")
|
|
|
|
// Here you could, for example, notify an API or a messaging service
|
|
}
|
|
|
|
try await runtime.run()
|