Skip to content

Instantly share code, notes, and snippets.

@jwamin
Last active July 12, 2021 23:33
Show Gist options
  • Save jwamin/f50f0791981d96b90afb3321ac7f600c to your computer and use it in GitHub Desktop.
Save jwamin/f50f0791981d96b90afb3321ac7f600c to your computer and use it in GitHub Desktop.
Very Basic Swift Lambda
#!/bin/sh
#build for amazon linux
sudo docker run \
--rm \
--volume "$(pwd)/:/src" \
--workdir "/src/" \
swift:5.3.1-amazonlinux2 \
swift build --product MyLambda -c release -Xswiftc -static-stdlib
#enter build folder
cd .build
#enter release folder
cd release
#recreate symlink
rm bootstrap
ln -s "MyLambda" "bootstrap"
# zip release folder including symlinks
sudo zip --symlinks release.zip *
#upload to s3 bucket
aws s3 cp release.zip s3://jwamin-code-bucket
#update lambda code
aws lambda update-function-code --function-name swiftHello --s3-bucket=jwamin-code-bucket --s3-key=release.zip
#test lambda
curl https://8fm9bmgrg6.execute-api.us-east-1.amazonaws.com/default/swiftHello -H 'Accept: text/plain' -H 'Content-Type: text/plain' --header 'x-api-key: <API_KEY>' --request POST -d "jossy"
import Foundation
import AWSLambdaRuntime
import AWSLambdaEvents
// in this example we are receiving and responding with strings
Lambda.run { (context, event: APIGateway.Request, callback: @escaping (Result<APIGateway.Response, Error>) -> Void) in
let response = APIGateway.Response(statusCode:.ok,body: "Hello, \(event.body ?? "default")")
callback(.success(response))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment