From 2e575768792c0728fb386dc4e6b33f224526274c Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Sun, 3 May 2020 14:28:11 +0100 Subject: [PATCH 01/19] Update S3Test with aws-sdk-swift 5.0.0-alpha.3 --- .gitignore | 1 + Examples/S3Test/Package.resolved | 97 +++++++++++++++++++++++ Examples/S3Test/Package.swift | 13 ++- Examples/S3Test/Sources/S3Test/main.swift | 12 +-- 4 files changed, 115 insertions(+), 8 deletions(-) create mode 100644 Examples/S3Test/Package.resolved diff --git a/.gitignore b/.gitignore index aae9255..a1eee32 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ lambda.zip swift-shared-libs default.profraw +.swiftpm diff --git a/Examples/S3Test/Package.resolved b/Examples/S3Test/Package.resolved new file mode 100644 index 0000000..d65670c --- /dev/null +++ b/Examples/S3Test/Package.resolved @@ -0,0 +1,97 @@ +{ + "object": { + "pins": [ + { + "package": "async-http-client", + "repositoryURL": "https://github.com/swift-server/async-http-client.git", + "state": { + "branch": null, + "revision": "037b70291941fe43de668066eb6fb802c5e181d2", + "version": "1.1.1" + } + }, + { + "package": "LambdaSwiftSprinter", + "repositoryURL": "https://github.com/swift-sprinter/aws-lambda-swift-sprinter-core", + "state": { + "branch": null, + "revision": "6941e41194bde0e57fb0deb23be620f2b8dd626d", + "version": "1.0.0" + } + }, + { + "package": "LambdaSwiftSprinterNioPlugin", + "repositoryURL": "https://github.com/swift-sprinter/aws-lambda-swift-sprinter-nio-plugin", + "state": { + "branch": null, + "revision": "35d3ab84bf83fc881844b5f7483cb2a1d942a23f", + "version": "1.0.1" + } + }, + { + "package": "aws-sdk-swift", + "repositoryURL": "https://github.com/swift-aws/aws-sdk-swift.git", + "state": { + "branch": null, + "revision": "eeb30fac3d95a377d8c5bb4b33efed932061f42d", + "version": "5.0.0-alpha.3" + } + }, + { + "package": "aws-sdk-swift-core", + "repositoryURL": "https://github.com/swift-aws/aws-sdk-swift-core.git", + "state": { + "branch": null, + "revision": "ccea4b98758e9e8bb907a4dc9bb15d01d8a3c736", + "version": "5.0.0-alpha.3.2" + } + }, + { + "package": "swift-log", + "repositoryURL": "https://github.com/apple/swift-log.git", + "state": { + "branch": null, + "revision": "74d7b91ceebc85daf387ebb206003f78813f71aa", + "version": "1.2.0" + } + }, + { + "package": "swift-nio", + "repositoryURL": "https://github.com/apple/swift-nio.git", + "state": { + "branch": null, + "revision": "e876fb37410e0036b98b5361bb18e6854739572b", + "version": "2.16.0" + } + }, + { + "package": "swift-nio-extras", + "repositoryURL": "https://github.com/apple/swift-nio-extras.git", + "state": { + "branch": null, + "revision": "e0e76733600a2806b3dc4feae8cfebace858c1a2", + "version": "1.4.1" + } + }, + { + "package": "swift-nio-ssl", + "repositoryURL": "https://github.com/apple/swift-nio-ssl.git", + "state": { + "branch": null, + "revision": "ae213938e151964aa691f0e902462fbe06baeeb6", + "version": "2.7.1" + } + }, + { + "package": "swift-nio-transport-services", + "repositoryURL": "https://github.com/apple/swift-nio-transport-services.git", + "state": { + "branch": null, + "revision": "85a67aea7caf5396ed599543dd23cffeb6dbbf96", + "version": "1.5.1" + } + } + ] + }, + "version": 1 +} diff --git a/Examples/S3Test/Package.swift b/Examples/S3Test/Package.swift index 89abe23..81163c1 100644 --- a/Examples/S3Test/Package.swift +++ b/Examples/S3Test/Package.swift @@ -1,9 +1,12 @@ -// swift-tools-version:5.0 +// swift-tools-version:5.1 import PackageDescription let package = Package( name: "S3Test", + products: [ + .executable(name: "S3Test", targets: ["S3Test"]) + ], dependencies: [ // Dependencies declare other packages that this package depends on. // .package(url: /* package url */, from: "1.0.0"), @@ -11,7 +14,7 @@ let package = Package( //.package(url: "https://github.com/swift-sprinter/aws-lambda-swift-sprinter-core", from: "1.0.0-alpha.3"), //.package(path: "../../../aws-lambda-swift-sprinter-nio-plugin"), .package(url: "https://github.com/swift-sprinter/aws-lambda-swift-sprinter-nio-plugin", from: "1.0.0"), - .package(url: "https://github.com/swift-aws/aws-sdk-swift.git", from: "4.0.0"), + .package(url: "https://github.com/swift-aws/aws-sdk-swift.git", from: "5.0.0-alpha.3"), .package(url: "https://github.com/apple/swift-log.git", from: "1.0.0"), ], targets: [ @@ -19,7 +22,11 @@ let package = Package( // Targets can depend on other targets in this package, and on products in packages which this package depends on. .target( name: "S3Test", - dependencies: ["LambdaSwiftSprinterNioPlugin", "S3", "Logging"] + dependencies: [ + "LambdaSwiftSprinterNioPlugin", + .product(name: "AWSS3", package: "aws-sdk-swift"), + "Logging" + ] ), .testTarget( name: "S3TestTests", diff --git a/Examples/S3Test/Sources/S3Test/main.swift b/Examples/S3Test/Sources/S3Test/main.swift index 7d9aff9..1085dd0 100644 --- a/Examples/S3Test/Sources/S3Test/main.swift +++ b/Examples/S3Test/Sources/S3Test/main.swift @@ -18,7 +18,7 @@ import Foundation #endif import LambdaSwiftSprinterNioPlugin import Logging -import S3 +import AWSS3 import NIO import NIOFoundationCompat import AWSSDKSwiftCore @@ -36,18 +36,20 @@ let logger = Logger(label: "AWS.Lambda.S3Test") var s3: S3! +let awsClient: AWSHTTPClient = httpClient as! AWSHTTPClient + if ProcessInfo.processInfo.environment["LAMB_CI_EXEC"] == "1" { //Used for local test s3 = S3(region: .useast1, endpoint: "http://localstack:4572") logger.info("Endpoint-URI: http://localstack:4572") -} else if let awsRegion = ProcessInfo.processInfo.environment["AWS_REGION"], +} else if let awsRegion = ProcessInfo.processInfo.environment["AWS_REGION"] { //The S3 Bucket must be in the same region of the Lambda - let region = Region(rawValue: awsRegion) { - s3 = S3(region: region) + let region = Region(rawValue: awsRegion) + s3 = S3(region: region, httpClientProvider: .shared(awsClient)) logger.info("AWS_REGION: \(region)") } else { //Default configuration - s3 = S3(region: .useast1) + s3 = S3(region: .useast1, httpClientProvider: .shared(awsClient)) logger.info("AWS_REGION: us-east-1") } From afcb9babf6c86372e6d237d75b5f25a8b165487b Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Wed, 6 May 2020 19:25:11 +0100 Subject: [PATCH 02/19] Avoid unwrapping httpClient --- Examples/S3Test/Sources/S3Test/main.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Examples/S3Test/Sources/S3Test/main.swift b/Examples/S3Test/Sources/S3Test/main.swift index 1085dd0..66a90c2 100644 --- a/Examples/S3Test/Sources/S3Test/main.swift +++ b/Examples/S3Test/Sources/S3Test/main.swift @@ -36,7 +36,9 @@ let logger = Logger(label: "AWS.Lambda.S3Test") var s3: S3! -let awsClient: AWSHTTPClient = httpClient as! AWSHTTPClient +guard let awsClient: AWSHTTPClient = httpClient as? AWSHTTPClient else { + preconditionFailure() +} if ProcessInfo.processInfo.environment["LAMB_CI_EXEC"] == "1" { //Used for local test From dd5f62bc788f8be912520e1b1a6fd3d938a4f30b Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Wed, 6 May 2020 19:25:35 +0100 Subject: [PATCH 03/19] Update README.md S3Test --- Examples/S3Test/README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Examples/S3Test/README.md b/Examples/S3Test/README.md index 0ace07d..3e38d27 100644 --- a/Examples/S3Test/README.md +++ b/Examples/S3Test/README.md @@ -22,9 +22,10 @@ import Foundation #endif import LambdaSwiftSprinterNioPlugin import Logging -import S3 +import AWSS3 import NIO import NIOFoundationCompat +import AWSSDKSwiftCore struct Bucket: Codable { let name: String @@ -39,7 +40,10 @@ struct Response: Codable { Change the region with the region of your S3 bucket. ```swift -let s3 = S3(region: .euwest1) +guard let awsClient: AWSHTTPClient = httpClient as? AWSHTTPClient else { + preconditionFailure() +} +let s3 = S3(region: .euwest1, httpClientProvider: .shared(awsClient)) ``` add a logger: From b12bc2f2989ee3998262db51746e08761f45c5e3 Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Thu, 7 May 2020 20:35:50 +0100 Subject: [PATCH 04/19] Support for amazonlinux2 --- Makefile | 21 ++++++++++++------- README.md | 3 ++- bootstrap => docker/5.0.3/bootstrap | 2 +- docker/5.1.5/bootstrap | 3 +++ docker/5.2.3/bootstrap | 3 +++ docker/nightly-amazonlinux2/Dockerfile | 4 ++++ docker/nightly-amazonlinux2/bootstrap | 3 +++ .../swift-shared-libraries.txt | 12 +++++++++++ 8 files changed, 42 insertions(+), 9 deletions(-) rename bootstrap => docker/5.0.3/bootstrap (80%) create mode 100755 docker/5.1.5/bootstrap create mode 100755 docker/5.2.3/bootstrap create mode 100644 docker/nightly-amazonlinux2/Dockerfile create mode 100755 docker/nightly-amazonlinux2/bootstrap create mode 100644 docker/nightly-amazonlinux2/swift-shared-libraries.txt diff --git a/Makefile b/Makefile index 078101b..fd80ddd 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,12 @@ # Use this tag to build a customized local image -SWIFT_VERSION?=5.2.3 -LAYER_VERSION?=5-2-3 +SWIFT_VERSION?=nightly-amazonlinux2 +LAYER_VERSION?=nightly-amazonlinux2 +DOCKER_OS?=amazonlinux2 # SWIFT_VERSION=5.1.5 # LAYER_VERSION=5-1-5 +# DOCKER_OS=xenial DOCKER_TAG=nio-swift:$(SWIFT_VERSION) SWIFT_DOCKER_IMAGE=$(DOCKER_TAG) SWIFT_LAMBDA_LIBRARY=nio-swift-lambda-runtime-$(LAYER_VERSION) @@ -58,6 +60,8 @@ LOCAL_LAMBDA_PATH=$(ROOT_BUILD_PATH)/local LOCALSTACK_TMP=$(ROOT_BUILD_PATH)/.tmp TMP_BUILD_PATH=$(ROOT_BUILD_PATH)/tmp DATETIME=$(shell date +'%y%m%d-%H%M%S') +DOCKER_FOLDER=docker +BOOTSTRAP=$(DOCKER_FOLDER)/$(SWIFT_VERSION)/bootstrap # use this for local development MOUNT_ROOT=$(shell pwd)/.. @@ -145,19 +149,22 @@ clean_layer: package_layer: create_build_directory clean_layer $(eval SHARED_LIBRARIES := $(shell cat docker/$(SWIFT_VERSION)/swift-shared-libraries.txt | tr '\n' ' ')) mkdir -p $(SHARED_LIBS_FOLDER)/lib +ifeq '$(DOCKER_OS)' 'xenial' docker run \ --rm \ --volume "$(shell pwd)/:/src" \ --workdir "/src" \ $(SWIFT_DOCKER_IMAGE) \ cp /lib64/ld-linux-x86-64.so.2 $(SHARED_LIBS_FOLDER) +endif docker run \ --rm \ --volume "$(shell pwd)/:/src" \ --workdir "/src" \ $(SWIFT_DOCKER_IMAGE) \ cp -t $(SHARED_LIBS_FOLDER)/lib $(SHARED_LIBRARIES) - zip -r $(LAYER_BUILD_PATH)/$(LAYER_ZIP) bootstrap $(SHARED_LIBS_FOLDER) + cp $(BOOTSTRAP) $(SHARED_LIBS_FOLDER) + cd $(SHARED_LIBS_FOLDER); pwd; zip -r ../$(LAYER_BUILD_PATH)/$(LAYER_ZIP) bootstrap lib upload_build_to_s3: create_lambda_s3_key aws s3 sync --acl public-read "$(LAMBDA_BUILD_PATH)" s3://$(AWS_BUCKET)/$(LAMBDA_S3_UPLOAD_PATH) --profile $(AWS_PROFILE) @@ -230,8 +237,8 @@ invoke_lambda_local_once: $(eval LOCAL_LAMBDA_EVENT := '$(shell cat $(SWIFT_PROJECT_PATH)/event.json)') docker run --rm \ -v "$(PWD)/$(LOCAL_LAMBDA_PATH)":/var/task:ro,delegated \ - -v "$(PWD)/bootstrap":/opt/bootstrap:ro,delegated \ - -v "$(PWD)/$(SHARED_LIBS_FOLDER)":/opt/swift-shared-libs:ro,delegated \ + -v "$(PWD)/$(BOOTSTRAP)":/opt/bootstrap:ro,delegated \ + -v "$(PWD)/$(SHARED_LIBS_FOLDER)":/opt:ro,delegated \ lambci/lambda:provided $(LAMBDA_HANDLER) $(LOCAL_LAMBDA_EVENT) start_lambda_local_env: @@ -239,8 +246,8 @@ start_lambda_local_env: -e DOCKER_LAMBDA_STAY_OPEN=1 \ -p 9001:9001 \ -v "$(PWD)/$(LOCAL_LAMBDA_PATH)":/var/task:ro,delegated \ - -v "$(PWD)/bootstrap":/opt/bootstrap:ro,delegated \ - -v "$(PWD)/$(SHARED_LIBS_FOLDER)":/opt/swift-shared-libs:ro,delegated \ + -v "$(PWD)/$(BOOTSTRAP)":/opt/bootstrap:ro,delegated \ + -v "$(PWD)/$(SHARED_LIBS_FOLDER)":/opt/:ro,delegated \ lambci/lambda:provided \ $(LAMBDA_HANDLER) diff --git a/README.md b/README.md index c97d264..3916f92 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # aws-lambda-swift-sprinter -[![Swift 5](https://img.shields.io/badge/Swift-5.0-blue.svg)](https://swift.org/download/) [![Swift 5.1.5](https://img.shields.io/badge/Swift-5.1.5-blue.svg)](https://swift.org/download/) [![Swift 5.2.3](https://img.shields.io/badge/Swift-5.2.3-blue.svg)](https://swift.org/download/) ![](https://img.shields.io/badge/version-1.0.0-green) ![](https://travis-ci.com/swift-sprinter/aws-lambda-swift-sprinter.svg?branch=master) ![](https://img.shields.io/badge/@AWS-Open-orange.svg) +![](https://img.shields.io/badge/@AWS-Open-orange.svg) [![Swift 5](https://img.shields.io/badge/Swift-5.0-blue.svg)](https://swift.org/download/) [![Swift 5.1.5](https://img.shields.io/badge/Swift-5.1.5-blue.svg)](https://swift.org/download/) [![Swift 5.2.3](https://img.shields.io/badge/Swift-5.2.3-blue.svg)](https://swift.org/download/) ![](https://img.shields.io/badge/version-1.1.0-green) ![](https://travis-ci.com/swift-sprinter/aws-lambda-swift-sprinter.svg?branch=master) ![](https://img.shields.io/badge/docker-amazonlinux2-orange.svg) ![](https://img.shields.io/badge/docker-ubuntu--xenial-pink.svg) ![](./images/aws-lambda-swift-sprinter.png) @@ -177,6 +177,7 @@ make invoke_lambda \ | AWS_BUCKET | The AWS S3 bucket where the layer and lambdas zip files get uploaded. | aws-lambda-swift-sprinter | | SWIFT_VERSION | Version of Swift used / Matches Dockerfile location too from `docker/` folder. | 5.2.3 | | LAYER_VERSION | Version of the Swift layer that will be created and uploaded for the Lambda to run on. | 5-2-3 | +| DOCKER_OS | amazonlinux2 / xenial | amazonlinux2 | | SWIFT_EXECUTABLE | Name of the binary file. | HelloWorld | | SWIFT_PROJECT_PATH | Path to your Swift project. | Examples/HelloWorld | | LAMBDA_FUNCTION_NAME | Display name of your Lambda in AWS. | HelloWorld | diff --git a/bootstrap b/docker/5.0.3/bootstrap similarity index 80% rename from bootstrap rename to docker/5.0.3/bootstrap index 212a2d6..f4677da 100755 --- a/bootstrap +++ b/docker/5.0.3/bootstrap @@ -1,3 +1,3 @@ #!/bin/sh EXECUTABLE=$LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1)" -/opt/swift-shared-libs/ld-linux-x86-64.so.2 --library-path /opt/swift-shared-libs/lib $EXECUTABLE \ No newline at end of file +/opt/swift-shared-libs/ld-linux-x86-64.so.2 --library-path /opt/lib $EXECUTABLE \ No newline at end of file diff --git a/docker/5.1.5/bootstrap b/docker/5.1.5/bootstrap new file mode 100755 index 0000000..f4677da --- /dev/null +++ b/docker/5.1.5/bootstrap @@ -0,0 +1,3 @@ +#!/bin/sh +EXECUTABLE=$LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1)" +/opt/swift-shared-libs/ld-linux-x86-64.so.2 --library-path /opt/lib $EXECUTABLE \ No newline at end of file diff --git a/docker/5.2.3/bootstrap b/docker/5.2.3/bootstrap new file mode 100755 index 0000000..f4677da --- /dev/null +++ b/docker/5.2.3/bootstrap @@ -0,0 +1,3 @@ +#!/bin/sh +EXECUTABLE=$LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1)" +/opt/swift-shared-libs/ld-linux-x86-64.so.2 --library-path /opt/lib $EXECUTABLE \ No newline at end of file diff --git a/docker/nightly-amazonlinux2/Dockerfile b/docker/nightly-amazonlinux2/Dockerfile new file mode 100644 index 0000000..980dde6 --- /dev/null +++ b/docker/nightly-amazonlinux2/Dockerfile @@ -0,0 +1,4 @@ +FROM swiftlang/swift:nightly-amazonlinux2 as builder + +RUN yum -y update && \ + yum -y install libatomic libedit gcc git \ No newline at end of file diff --git a/docker/nightly-amazonlinux2/bootstrap b/docker/nightly-amazonlinux2/bootstrap new file mode 100755 index 0000000..acdb8f3 --- /dev/null +++ b/docker/nightly-amazonlinux2/bootstrap @@ -0,0 +1,3 @@ +#!/bin/sh +EXECUTABLE=$LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1)" +$EXECUTABLE \ No newline at end of file diff --git a/docker/nightly-amazonlinux2/swift-shared-libraries.txt b/docker/nightly-amazonlinux2/swift-shared-libraries.txt new file mode 100644 index 0000000..921623e --- /dev/null +++ b/docker/nightly-amazonlinux2/swift-shared-libraries.txt @@ -0,0 +1,12 @@ +/usr/lib/swift/linux/libBlocksRuntime.so +/usr/lib/swift/linux/libFoundation.so +/usr/lib/swift/linux/libFoundationNetworking.so +/usr/lib/swift/linux/libFoundationXML.so +/usr/lib/swift/linux/libdispatch.so +/usr/lib/swift/linux/libicudataswift.so.65 +/usr/lib/swift/linux/libicui18nswift.so.65 +/usr/lib/swift/linux/libicuucswift.so.65 +/usr/lib/swift/linux/libswiftCore.so +/usr/lib/swift/linux/libswiftDispatch.so +/usr/lib/swift/linux/libswiftGlibc.so +/usr/lib/swift/linux/libswiftSwiftOnoneSupport.so \ No newline at end of file From f5034c545a91eabf2c9a1805524c37b519291f8c Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Thu, 7 May 2020 21:07:17 +0100 Subject: [PATCH 05/19] Add zlib-dev to amazonlinux2 Dockerfile --- docker/nightly-amazonlinux2/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/nightly-amazonlinux2/Dockerfile b/docker/nightly-amazonlinux2/Dockerfile index 980dde6..df2f3bb 100644 --- a/docker/nightly-amazonlinux2/Dockerfile +++ b/docker/nightly-amazonlinux2/Dockerfile @@ -1,4 +1,4 @@ FROM swiftlang/swift:nightly-amazonlinux2 as builder RUN yum -y update && \ - yum -y install libatomic libedit gcc git \ No newline at end of file + yum -y install libatomic libedit gcc git zlib-dev \ No newline at end of file From f42f3d476b14dc958378597583cf60948622d4b2 Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Thu, 7 May 2020 21:16:21 +0100 Subject: [PATCH 06/19] Add zlib-devel and openssl-devel to amazonlinux2 Dockerfile --- docker/nightly-amazonlinux2/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/nightly-amazonlinux2/Dockerfile b/docker/nightly-amazonlinux2/Dockerfile index df2f3bb..8ec6093 100644 --- a/docker/nightly-amazonlinux2/Dockerfile +++ b/docker/nightly-amazonlinux2/Dockerfile @@ -1,4 +1,4 @@ FROM swiftlang/swift:nightly-amazonlinux2 as builder RUN yum -y update && \ - yum -y install libatomic libedit gcc git zlib-dev \ No newline at end of file + yum -y install libatomic libedit gcc git zlib-devel openssl-devel \ No newline at end of file From e872f2e560d1518a812d8e75244b973d310c31f3 Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Thu, 7 May 2020 22:02:41 +0100 Subject: [PATCH 07/19] fix volumes mapping in docker-compose.yml --- Examples/HTTPSRequest/docker-compose.yml | 4 ++-- Examples/HelloWorld/docker-compose.yml | 4 ++-- Examples/PostgreSQLDemo/docker-compose.yml | 4 ++-- Examples/RedisDemo/docker-compose.yml | 4 ++-- Examples/S3Test/docker-compose.yml | 4 ++-- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Examples/HTTPSRequest/docker-compose.yml b/Examples/HTTPSRequest/docker-compose.yml index ad9a8ae..c1206e7 100644 --- a/Examples/HTTPSRequest/docker-compose.yml +++ b/Examples/HTTPSRequest/docker-compose.yml @@ -4,8 +4,8 @@ services: image: "lambci/lambda:provided" volumes: - ../../.build/local:/var/task:ro,delegated - - ../../bootstrap:/opt/bootstrap:ro,delegated - - ../../swift-shared-libs:/opt/swift-shared-libs:ro,delegated + - ../../swift-shared-libs/bootstrap:/opt/bootstrap:ro,delegated + - ../../swift-shared-libs:/opt/:ro,delegated environment: - DOCKER_LAMBDA_STAY_OPEN=1 - AWS_LAMBDA_FUNCTION_TIMEOUT=10 diff --git a/Examples/HelloWorld/docker-compose.yml b/Examples/HelloWorld/docker-compose.yml index 67ea35b..dfd1478 100644 --- a/Examples/HelloWorld/docker-compose.yml +++ b/Examples/HelloWorld/docker-compose.yml @@ -4,8 +4,8 @@ services: image: "lambci/lambda:provided" volumes: - ../../.build/local:/var/task:ro,delegated - - ../../bootstrap:/opt/bootstrap:ro,delegated - - ../../swift-shared-libs:/opt/swift-shared-libs:ro,delegated + - ../../swift-shared-libs/bootstrap:/opt/bootstrap:ro,delegated + - ../../swift-shared-libs:/opt/:ro,delegated environment: - DOCKER_LAMBDA_STAY_OPEN=1 - AWS_LAMBDA_FUNCTION_TIMEOUT=10 diff --git a/Examples/PostgreSQLDemo/docker-compose.yml b/Examples/PostgreSQLDemo/docker-compose.yml index aa81eef..b4136a8 100644 --- a/Examples/PostgreSQLDemo/docker-compose.yml +++ b/Examples/PostgreSQLDemo/docker-compose.yml @@ -4,8 +4,8 @@ services: image: "lambci/lambda:provided" volumes: - ../../.build/local:/var/task:ro,delegated - - ../../bootstrap:/opt/bootstrap:ro,delegated - - ../../swift-shared-libs:/opt/swift-shared-libs:ro,delegated + - ../../swift-shared-libs/bootstrap:/opt/bootstrap:ro,delegated + - ../../swift-shared-libs:/opt/:ro,delegated environment: - DOCKER_LAMBDA_STAY_OPEN=1 - AWS_LAMBDA_FUNCTION_TIMEOUT=10 diff --git a/Examples/RedisDemo/docker-compose.yml b/Examples/RedisDemo/docker-compose.yml index 075ddde..5ab9ce7 100644 --- a/Examples/RedisDemo/docker-compose.yml +++ b/Examples/RedisDemo/docker-compose.yml @@ -4,8 +4,8 @@ services: image: "lambci/lambda:provided" volumes: - ../../.build/local:/var/task:ro,delegated - - ../../bootstrap:/opt/bootstrap:ro,delegated - - ../../swift-shared-libs:/opt/swift-shared-libs:ro,delegated + - ../../swift-shared-libs/bootstrap:/opt/bootstrap:ro,delegated + - ../../swift-shared-libs:/opt/:ro,delegated environment: - DOCKER_LAMBDA_STAY_OPEN=1 - AWS_LAMBDA_FUNCTION_TIMEOUT=10 diff --git a/Examples/S3Test/docker-compose.yml b/Examples/S3Test/docker-compose.yml index 56422bb..0339620 100644 --- a/Examples/S3Test/docker-compose.yml +++ b/Examples/S3Test/docker-compose.yml @@ -4,8 +4,8 @@ services: image: "lambci/lambda:provided" volumes: - ../../.build/local:/var/task:ro,delegated - - ../../bootstrap:/opt/bootstrap:ro,delegated - - ../../swift-shared-libs:/opt/swift-shared-libs:ro,delegated + - ../../swift-shared-libs/bootstrap:/opt/bootstrap:ro,delegated + - ../../swift-shared-libs:/opt/:ro,delegated environment: - DOCKER_LAMBDA_STAY_OPEN=1 - AWS_LAMBDA_FUNCTION_TIMEOUT=10 From ab8cd06f17a8a7c3232081c8cffe65ff5387cdec Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Thu, 7 May 2020 22:04:00 +0100 Subject: [PATCH 08/19] Remove openssl-devel from amazonlinux2 Dockerfile --- docker/nightly-amazonlinux2/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/nightly-amazonlinux2/Dockerfile b/docker/nightly-amazonlinux2/Dockerfile index 8ec6093..013671b 100644 --- a/docker/nightly-amazonlinux2/Dockerfile +++ b/docker/nightly-amazonlinux2/Dockerfile @@ -1,4 +1,4 @@ FROM swiftlang/swift:nightly-amazonlinux2 as builder RUN yum -y update && \ - yum -y install libatomic libedit gcc git zlib-devel openssl-devel \ No newline at end of file + yum -y install libatomic libedit gcc git zlib-devel \ No newline at end of file From 8c30613e9721a6bfda4e04bf8ea86ab5aa0f4c6c Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Fri, 8 May 2020 15:36:07 +0100 Subject: [PATCH 09/19] Remove libatomic libedit gcc git from amazonlinux2 Dockerfile --- docker/nightly-amazonlinux2/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/nightly-amazonlinux2/Dockerfile b/docker/nightly-amazonlinux2/Dockerfile index 013671b..2064b26 100644 --- a/docker/nightly-amazonlinux2/Dockerfile +++ b/docker/nightly-amazonlinux2/Dockerfile @@ -1,4 +1,4 @@ FROM swiftlang/swift:nightly-amazonlinux2 as builder RUN yum -y update && \ - yum -y install libatomic libedit gcc git zlib-devel \ No newline at end of file + yum -y install zlib-devel \ No newline at end of file From 34cda4928b81b1273fdd9a153bb0cbd74dbb7991 Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Sat, 9 May 2020 09:54:41 +0100 Subject: [PATCH 10/19] Fix boostrap for Ubuntu --- Makefile | 12 ++++++------ docker/5.0.3/bootstrap | 2 +- docker/5.1.5/bootstrap | 2 +- docker/5.2.3/bootstrap | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index fd80ddd..d8a456f 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,12 @@ # Use this tag to build a customized local image -SWIFT_VERSION?=nightly-amazonlinux2 -LAYER_VERSION?=nightly-amazonlinux2 -DOCKER_OS?=amazonlinux2 -# SWIFT_VERSION=5.1.5 -# LAYER_VERSION=5-1-5 -# DOCKER_OS=xenial +# SWIFT_VERSION?=nightly-amazonlinux2 +# LAYER_VERSION?=nightly-amazonlinux2 +# DOCKER_OS?=amazonlinux2 +SWIFT_VERSION=5.2.3 +LAYER_VERSION=5-2-3 +DOCKER_OS=xenial DOCKER_TAG=nio-swift:$(SWIFT_VERSION) SWIFT_DOCKER_IMAGE=$(DOCKER_TAG) SWIFT_LAMBDA_LIBRARY=nio-swift-lambda-runtime-$(LAYER_VERSION) diff --git a/docker/5.0.3/bootstrap b/docker/5.0.3/bootstrap index f4677da..ae0a9f7 100755 --- a/docker/5.0.3/bootstrap +++ b/docker/5.0.3/bootstrap @@ -1,3 +1,3 @@ #!/bin/sh EXECUTABLE=$LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1)" -/opt/swift-shared-libs/ld-linux-x86-64.so.2 --library-path /opt/lib $EXECUTABLE \ No newline at end of file +/opt/ld-linux-x86-64.so.2 --library-path /opt/lib $EXECUTABLE \ No newline at end of file diff --git a/docker/5.1.5/bootstrap b/docker/5.1.5/bootstrap index f4677da..ae0a9f7 100755 --- a/docker/5.1.5/bootstrap +++ b/docker/5.1.5/bootstrap @@ -1,3 +1,3 @@ #!/bin/sh EXECUTABLE=$LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1)" -/opt/swift-shared-libs/ld-linux-x86-64.so.2 --library-path /opt/lib $EXECUTABLE \ No newline at end of file +/opt/ld-linux-x86-64.so.2 --library-path /opt/lib $EXECUTABLE \ No newline at end of file diff --git a/docker/5.2.3/bootstrap b/docker/5.2.3/bootstrap index f4677da..ae0a9f7 100755 --- a/docker/5.2.3/bootstrap +++ b/docker/5.2.3/bootstrap @@ -1,3 +1,3 @@ #!/bin/sh EXECUTABLE=$LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1)" -/opt/swift-shared-libs/ld-linux-x86-64.so.2 --library-path /opt/lib $EXECUTABLE \ No newline at end of file +/opt/ld-linux-x86-64.so.2 --library-path /opt/lib $EXECUTABLE \ No newline at end of file From 9b0a8796a34fb6c1c3257d40d978bae6da18b17e Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Sat, 9 May 2020 10:43:35 +0100 Subject: [PATCH 11/19] Set the default SWIFT_VERSION to nightly-amazonlinux2 --- Makefile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index d8a456f..a8c9873 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,12 @@ # Use this tag to build a customized local image -# SWIFT_VERSION?=nightly-amazonlinux2 -# LAYER_VERSION?=nightly-amazonlinux2 -# DOCKER_OS?=amazonlinux2 -SWIFT_VERSION=5.2.3 -LAYER_VERSION=5-2-3 -DOCKER_OS=xenial +SWIFT_VERSION?=nightly-amazonlinux2 +LAYER_VERSION?=nightly-amazonlinux2 +DOCKER_OS?=amazonlinux2 +# SWIFT_VERSION=5.2.3 +# LAYER_VERSION=5-2-3 +# DOCKER_OS=xenial DOCKER_TAG=nio-swift:$(SWIFT_VERSION) SWIFT_DOCKER_IMAGE=$(DOCKER_TAG) SWIFT_LAMBDA_LIBRARY=nio-swift-lambda-runtime-$(LAYER_VERSION) From 7a0700476da53a76be9d8fd154dbb32bc0c70cdf Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Sat, 16 May 2020 11:38:53 +0100 Subject: [PATCH 12/19] Update Docker tags Ubuntu bionic --- Makefile | 7 +++---- docker/{5.0.3 => 5.0.3-bionic}/Dockerfile | 2 +- docker/{5.0.3 => 5.0.3-bionic}/bootstrap | 0 docker/{5.0.3 => 5.0.3-bionic}/swift-shared-libraries.txt | 0 docker/{5.1.5 => 5.1.5-bionic}/Dockerfile | 2 +- docker/{5.1.5 => 5.1.5-bionic}/bootstrap | 0 docker/{5.1.5 => 5.1.5-bionic}/swift-shared-libraries.txt | 0 docker/{5.2.3 => 5.2.3-bionic}/Dockerfile | 2 +- docker/{5.2.3 => 5.2.3-bionic}/bootstrap | 0 docker/{5.2.3 => 5.2.3-bionic}/swift-shared-libraries.txt | 0 10 files changed, 6 insertions(+), 7 deletions(-) rename docker/{5.0.3 => 5.0.3-bionic}/Dockerfile (68%) rename docker/{5.0.3 => 5.0.3-bionic}/bootstrap (100%) rename docker/{5.0.3 => 5.0.3-bionic}/swift-shared-libraries.txt (100%) rename docker/{5.1.5 => 5.1.5-bionic}/Dockerfile (68%) rename docker/{5.1.5 => 5.1.5-bionic}/bootstrap (100%) rename docker/{5.1.5 => 5.1.5-bionic}/swift-shared-libraries.txt (100%) rename docker/{5.2.3 => 5.2.3-bionic}/Dockerfile (68%) rename docker/{5.2.3 => 5.2.3-bionic}/bootstrap (100%) rename docker/{5.2.3 => 5.2.3-bionic}/swift-shared-libraries.txt (100%) diff --git a/Makefile b/Makefile index a8c9873..6885b29 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,11 @@ - # Use this tag to build a customized local image SWIFT_VERSION?=nightly-amazonlinux2 LAYER_VERSION?=nightly-amazonlinux2 DOCKER_OS?=amazonlinux2 -# SWIFT_VERSION=5.2.3 -# LAYER_VERSION=5-2-3 -# DOCKER_OS=xenial +# SWIFT_VERSION=5.2.3-bionic +# LAYER_VERSION=5-2-3-bionic +# DOCKER_OS=bionic DOCKER_TAG=nio-swift:$(SWIFT_VERSION) SWIFT_DOCKER_IMAGE=$(DOCKER_TAG) SWIFT_LAMBDA_LIBRARY=nio-swift-lambda-runtime-$(LAYER_VERSION) diff --git a/docker/5.0.3/Dockerfile b/docker/5.0.3-bionic/Dockerfile similarity index 68% rename from docker/5.0.3/Dockerfile rename to docker/5.0.3-bionic/Dockerfile index 0f567bd..e9627e2 100644 --- a/docker/5.0.3/Dockerfile +++ b/docker/5.0.3-bionic/Dockerfile @@ -1,4 +1,4 @@ -FROM swift:5.0.3 as builder +FROM swift:5.0.3-bionic as builder RUN apt-get -qq update && apt-get -q -y install \ libssl-dev libicu-dev \ No newline at end of file diff --git a/docker/5.0.3/bootstrap b/docker/5.0.3-bionic/bootstrap similarity index 100% rename from docker/5.0.3/bootstrap rename to docker/5.0.3-bionic/bootstrap diff --git a/docker/5.0.3/swift-shared-libraries.txt b/docker/5.0.3-bionic/swift-shared-libraries.txt similarity index 100% rename from docker/5.0.3/swift-shared-libraries.txt rename to docker/5.0.3-bionic/swift-shared-libraries.txt diff --git a/docker/5.1.5/Dockerfile b/docker/5.1.5-bionic/Dockerfile similarity index 68% rename from docker/5.1.5/Dockerfile rename to docker/5.1.5-bionic/Dockerfile index ff7286f..4bbf737 100644 --- a/docker/5.1.5/Dockerfile +++ b/docker/5.1.5-bionic/Dockerfile @@ -1,4 +1,4 @@ -FROM swift:5.1.5 as builder +FROM swift:5.1.5-bionic as builder RUN apt-get -qq update && apt-get -q -y install \ libssl-dev libicu-dev diff --git a/docker/5.1.5/bootstrap b/docker/5.1.5-bionic/bootstrap similarity index 100% rename from docker/5.1.5/bootstrap rename to docker/5.1.5-bionic/bootstrap diff --git a/docker/5.1.5/swift-shared-libraries.txt b/docker/5.1.5-bionic/swift-shared-libraries.txt similarity index 100% rename from docker/5.1.5/swift-shared-libraries.txt rename to docker/5.1.5-bionic/swift-shared-libraries.txt diff --git a/docker/5.2.3/Dockerfile b/docker/5.2.3-bionic/Dockerfile similarity index 68% rename from docker/5.2.3/Dockerfile rename to docker/5.2.3-bionic/Dockerfile index abca1df..a2f4133 100644 --- a/docker/5.2.3/Dockerfile +++ b/docker/5.2.3-bionic/Dockerfile @@ -1,4 +1,4 @@ -FROM swift:5.2.3 as builder +FROM swift:5.2.3-bionic as builder RUN apt-get -qq update && apt-get -q -y install \ libssl-dev libicu-dev diff --git a/docker/5.2.3/bootstrap b/docker/5.2.3-bionic/bootstrap similarity index 100% rename from docker/5.2.3/bootstrap rename to docker/5.2.3-bionic/bootstrap diff --git a/docker/5.2.3/swift-shared-libraries.txt b/docker/5.2.3-bionic/swift-shared-libraries.txt similarity index 100% rename from docker/5.2.3/swift-shared-libraries.txt rename to docker/5.2.3-bionic/swift-shared-libraries.txt From 33ec012d7cadcdc47eeab99805ce14a936b1c8df Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Mon, 25 May 2020 10:39:04 +0100 Subject: [PATCH 13/19] Update Travis CI --- .travis.yml | 41 ++----- Examples/PostgreSQLDemo/Package.resolved | 97 ++++++++++++++++ .../PostgreSQLDemoTests.swift | 3 +- .../Tests/RedisDemoTests/RedisDemoTests.swift | 6 +- Examples/S3Test/Package.resolved | 106 ++++++++++++++++++ Makefile | 4 +- 6 files changed, 223 insertions(+), 34 deletions(-) create mode 100644 Examples/PostgreSQLDemo/Package.resolved create mode 100644 Examples/S3Test/Package.resolved diff --git a/.travis.yml b/.travis.yml index 91623ab..d5d1987 100644 --- a/.travis.yml +++ b/.travis.yml @@ -27,40 +27,21 @@ before_install: install: - make --version - make docker_build - -script: - docker image ls - make package_layer - make package_lambda - - make swift_test - - make swift_test SWIFT_EXECUTABLE=HTTPSRequest SWIFT_PROJECT_PATH=Examples/HTTPSRequest LAMBDA_FUNCTION_NAME=HTTPSRequest LAMBDA_HANDLER=HTTPSRequest.getHttps - - make swift_test SWIFT_EXECUTABLE=S3Test SWIFT_PROJECT_PATH=Examples/S3Test LAMBDA_FUNCTION_NAME=S3Test LAMBDA_HANDLER=S3Test.getObject - - make build_lambda_local SWIFT_EXECUTABLE=HelloWorld SWIFT_PROJECT_PATH=Examples/HelloWorld LAMBDA_FUNCTION_NAME=HelloWorld LAMBDA_HANDLER=HelloWorld.helloWorld - - make start_docker_compose_env SWIFT_EXECUTABLE=HelloWorld SWIFT_PROJECT_PATH=Examples/HelloWorld LAMBDA_FUNCTION_NAME=HelloWorld LAMBDA_HANDLER=HelloWorld.helloWorld - - make invoke_lambda_local SWIFT_EXECUTABLE=HelloWorld SWIFT_PROJECT_PATH=Examples/HelloWorld LAMBDA_FUNCTION_NAME=HelloWorld LAMBDA_HANDLER=HelloWorld.helloWorld - - make stop_docker_compose_env SWIFT_EXECUTABLE=HelloWorld SWIFT_PROJECT_PATH=Examples/HelloWorld LAMBDA_FUNCTION_NAME=HelloWorld LAMBDA_HANDLER=HelloWorld.helloWorld - - make test_lambda_local_output SWIFT_EXECUTABLE=HelloWorld SWIFT_PROJECT_PATH=Examples/HelloWorld LAMBDA_FUNCTION_NAME=HelloWorld LAMBDA_HANDLER=HelloWorld.helloWorld - - make build_lambda_local SWIFT_EXECUTABLE=HTTPSRequest SWIFT_PROJECT_PATH=Examples/HTTPSRequest LAMBDA_FUNCTION_NAME=HTTPSRequest LAMBDA_HANDLER=HTTPSRequest.getHttps - - make start_docker_compose_env SWIFT_EXECUTABLE=HTTPSRequest SWIFT_PROJECT_PATH=Examples/HTTPSRequest LAMBDA_FUNCTION_NAME=HTTPSRequest LAMBDA_HANDLER=HTTPSRequest.getHttps - - make invoke_lambda_local SWIFT_EXECUTABLE=HTTPSRequest SWIFT_PROJECT_PATH=Examples/HTTPSRequest LAMBDA_FUNCTION_NAME=HTTPSRequest LAMBDA_HANDLER=HTTPSRequest.getHttps - - make stop_docker_compose_env SWIFT_EXECUTABLE=HTTPSRequest SWIFT_PROJECT_PATH=Examples/HTTPSRequest LAMBDA_FUNCTION_NAME=HTTPSRequest LAMBDA_HANDLER=HTTPSRequest.getHttps - - make test_lambda_local_output SWIFT_EXECUTABLE=HTTPSRequest SWIFT_PROJECT_PATH=Examples/HTTPSRequest LAMBDA_FUNCTION_NAME=HTTPSRequest LAMBDA_HANDLER=HTTPSRequest.getHttps - - make build_lambda_local SWIFT_EXECUTABLE=S3Test SWIFT_PROJECT_PATH=Examples/S3Test LAMBDA_FUNCTION_NAME=S3Test LAMBDA_HANDLER=S3Test.getObject - - make start_docker_compose_env SWIFT_EXECUTABLE=S3Test SWIFT_PROJECT_PATH=Examples/S3Test LAMBDA_FUNCTION_NAME=S3Test LAMBDA_HANDLER=S3Test.getObject - - make invoke_lambda_local SWIFT_EXECUTABLE=S3Test SWIFT_PROJECT_PATH=Examples/S3Test LAMBDA_FUNCTION_NAME=S3Test LAMBDA_HANDLER=S3Test.getObject - - make stop_docker_compose_env SWIFT_EXECUTABLE=S3Test SWIFT_PROJECT_PATH=Examples/S3Test LAMBDA_FUNCTION_NAME=S3Test LAMBDA_HANDLER=S3Test.getObject - - make test_lambda_local_output SWIFT_EXECUTABLE=S3Test SWIFT_PROJECT_PATH=Examples/S3Test LAMBDA_FUNCTION_NAME=S3Test LAMBDA_HANDLER=S3Test.getObject - - make build_lambda_local SWIFT_EXECUTABLE=RedisDemo SWIFT_PROJECT_PATH=Examples/RedisDemo LAMBDA_FUNCTION_NAME=RedisDemo LAMBDA_HANDLER=$(SWIFT_EXECUTABLE).setGet - - make start_docker_compose_env SWIFT_EXECUTABLE=RedisDemo SWIFT_PROJECT_PATH=Examples/RedisDemo LAMBDA_FUNCTION_NAME=RedisDemo LAMBDA_HANDLER=$(SWIFT_EXECUTABLE).setGet - - make invoke_lambda_local SWIFT_EXECUTABLE=RedisDemo SWIFT_PROJECT_PATH=Examples/RedisDemo LAMBDA_FUNCTION_NAME=RedisDemo LAMBDA_HANDLER=$(SWIFT_EXECUTABLE).setGet - - make stop_docker_compose_env SWIFT_EXECUTABLE=RedisDemo SWIFT_PROJECT_PATH=Examples/RedisDemo LAMBDA_FUNCTION_NAME=RedisDemo LAMBDA_HANDLER=$(SWIFT_EXECUTABLE).setGet - - make test_lambda_local_output SWIFT_EXECUTABLE=RedisDemo SWIFT_PROJECT_PATH=Examples/RedisDemo LAMBDA_FUNCTION_NAME=RedisDemo LAMBDA_HANDLER=$(SWIFT_EXECUTABLE).setGet - - make build_lambda_local SWIFT_EXECUTABLE=PostgreSQLDemo SWIFT_PROJECT_PATH=Examples/PostgreSQLDemo LAMBDA_FUNCTION_NAME=PostgreSQLDemo LAMBDA_HANDLER=$(SWIFT_EXECUTABLE).query - - make start_docker_compose_env SWIFT_EXECUTABLE=PostgreSQLDemo SWIFT_PROJECT_PATH=Examples/PostgreSQLDemo LAMBDA_FUNCTION_NAME=PostgreSQLDemo LAMBDA_HANDLER=$(SWIFT_EXECUTABLE).query - - make invoke_lambda_local SWIFT_EXECUTABLE=PostgreSQLDemo SWIFT_PROJECT_PATH=Examples/PostgreSQLDemo LAMBDA_FUNCTION_NAME=PostgreSQLDemo LAMBDA_HANDLER=$(SWIFT_EXECUTABLE).query - - make stop_docker_compose_env SWIFT_EXECUTABLE=PostgreSQLDemo SWIFT_PROJECT_PATH=Examples/PostgreSQLDemo LAMBDA_FUNCTION_NAME=PostgreSQLDemo LAMBDA_HANDLER=$(SWIFT_EXECUTABLE).query - - make test_lambda_local_output SWIFT_EXECUTABLE=PostgreSQLDemo SWIFT_PROJECT_PATH=Examples/PostgreSQLDemo LAMBDA_FUNCTION_NAME=PostgreSQLDemo LAMBDA_HANDLER=$(SWIFT_EXECUTABLE).query +env: + - SWIFT_EXECUTABLE=HelloWorld SWIFT_PROJECT_PATH=Examples/HelloWorld LAMBDA_FUNCTION_NAME=HelloWorld LAMBDA_HANDLER=HelloWorld.helloWorld + - SWIFT_EXECUTABLE=HTTPSRequest SWIFT_PROJECT_PATH=Examples/HTTPSRequest LAMBDA_FUNCTION_NAME=HTTPSRequest LAMBDA_HANDLER=HTTPSRequest.getHttps + - SWIFT_EXECUTABLE=S3Test SWIFT_PROJECT_PATH=Examples/S3Test LAMBDA_FUNCTION_NAME=S3Test LAMBDA_HANDLER=S3Test.getObject + - SWIFT_EXECUTABLE=RedisDemo SWIFT_PROJECT_PATH=Examples/RedisDemo LAMBDA_FUNCTION_NAME=RedisDemo LAMBDA_HANDLER=$(SWIFT_EXECUTABLE).setGet + - SWIFT_EXECUTABLE=PostgreSQLDemo SWIFT_PROJECT_PATH=Examples/PostgreSQLDemo LAMBDA_FUNCTION_NAME=PostgreSQLDemo LAMBDA_HANDLER=$(SWIFT_EXECUTABLE).query + +script: + - make swift_test + - make run_test_example + deploy: provider: releases api_key: diff --git a/Examples/PostgreSQLDemo/Package.resolved b/Examples/PostgreSQLDemo/Package.resolved new file mode 100644 index 0000000..6b466b0 --- /dev/null +++ b/Examples/PostgreSQLDemo/Package.resolved @@ -0,0 +1,97 @@ +{ + "object": { + "pins": [ + { + "package": "async-http-client", + "repositoryURL": "https://github.com/swift-server/async-http-client.git", + "state": { + "branch": null, + "revision": "037b70291941fe43de668066eb6fb802c5e181d2", + "version": "1.1.1" + } + }, + { + "package": "LambdaSwiftSprinter", + "repositoryURL": "https://github.com/swift-sprinter/aws-lambda-swift-sprinter-core", + "state": { + "branch": null, + "revision": "6941e41194bde0e57fb0deb23be620f2b8dd626d", + "version": "1.0.0" + } + }, + { + "package": "LambdaSwiftSprinterNioPlugin", + "repositoryURL": "https://github.com/swift-sprinter/aws-lambda-swift-sprinter-nio-plugin", + "state": { + "branch": null, + "revision": "35d3ab84bf83fc881844b5f7483cb2a1d942a23f", + "version": "1.0.1" + } + }, + { + "package": "postgres-nio", + "repositoryURL": "https://github.com/vapor/postgres-nio.git", + "state": { + "branch": null, + "revision": "a528171a580b56fc38fd505bdb7d5de73e68a69a", + "version": "1.0.0-rc.2" + } + }, + { + "package": "swift-crypto", + "repositoryURL": "https://github.com/apple/swift-crypto.git", + "state": { + "branch": null, + "revision": "d67ac68d09a95443303e9d6e37b34e7ba101d5f1", + "version": "1.0.1" + } + }, + { + "package": "swift-log", + "repositoryURL": "https://github.com/apple/swift-log.git", + "state": { + "branch": null, + "revision": "74d7b91ceebc85daf387ebb206003f78813f71aa", + "version": "1.2.0" + } + }, + { + "package": "swift-metrics", + "repositoryURL": "https://github.com/apple/swift-metrics.git", + "state": { + "branch": null, + "revision": "708b960b4605abb20bc55d65abf6bad607252200", + "version": "2.0.0" + } + }, + { + "package": "swift-nio", + "repositoryURL": "https://github.com/apple/swift-nio.git", + "state": { + "branch": null, + "revision": "e876fb37410e0036b98b5361bb18e6854739572b", + "version": "2.16.0" + } + }, + { + "package": "swift-nio-extras", + "repositoryURL": "https://github.com/apple/swift-nio-extras.git", + "state": { + "branch": null, + "revision": "b4dbfacff47fb8d0f9e0a422d8d37935a9f10570", + "version": "1.4.0" + } + }, + { + "package": "swift-nio-ssl", + "repositoryURL": "https://github.com/apple/swift-nio-ssl.git", + "state": { + "branch": null, + "revision": "ae213938e151964aa691f0e902462fbe06baeeb6", + "version": "2.7.1" + } + } + ] + }, + "version": 1 +} diff --git a/Examples/PostgreSQLDemo/Tests/PostgreSQLDemoTests/PostgreSQLDemoTests.swift b/Examples/PostgreSQLDemo/Tests/PostgreSQLDemoTests/PostgreSQLDemoTests.swift index 67fa1aa..cb3cdcf 100644 --- a/Examples/PostgreSQLDemo/Tests/PostgreSQLDemoTests/PostgreSQLDemoTests.swift +++ b/Examples/PostgreSQLDemo/Tests/PostgreSQLDemoTests/PostgreSQLDemoTests.swift @@ -25,8 +25,9 @@ final class PostgreSQLDemoTests: XCTestCase { let data = pipe.fileHandleForReading.readDataToEndOfFile() let output = String(data: data, encoding: .utf8) + let isError = output?.contains("unknown(host: \"postgres\", port: 5432)\n") - XCTAssertEqual(output, "Hello, world!\n") + XCTAssertEqual(isError, true) } /// Returns path to the built products directory. diff --git a/Examples/RedisDemo/Tests/RedisDemoTests/RedisDemoTests.swift b/Examples/RedisDemo/Tests/RedisDemoTests/RedisDemoTests.swift index 9d14b65..946b705 100644 --- a/Examples/RedisDemo/Tests/RedisDemoTests/RedisDemoTests.swift +++ b/Examples/RedisDemo/Tests/RedisDemoTests/RedisDemoTests.swift @@ -12,7 +12,7 @@ final class RedisDemoTests: XCTestCase { return } - let fooBinary = productsDirectory.appendingPathComponent("aws-lambda-swift-sprinter-redis") + let fooBinary = productsDirectory.appendingPathComponent("RedisDemo") let process = Process() process.executableURL = fooBinary @@ -26,7 +26,9 @@ final class RedisDemoTests: XCTestCase { let data = pipe.fileHandleForReading.readDataToEndOfFile() let output = String(data: data, encoding: .utf8) - XCTAssertEqual(output, "Hello, world!\n") + let isError = output?.contains("missingEnvironmentVariables(LambdaSwiftSprinter.Context.AWSEnvironmentKey.lambdaRuntimeApi)") + + XCTAssertEqual(isError, true) } /// Returns path to the built products directory. diff --git a/Examples/S3Test/Package.resolved b/Examples/S3Test/Package.resolved new file mode 100644 index 0000000..6e6f42c --- /dev/null +++ b/Examples/S3Test/Package.resolved @@ -0,0 +1,106 @@ +{ + "object": { + "pins": [ + { + "package": "async-http-client", + "repositoryURL": "https://github.com/swift-server/async-http-client.git", + "state": { + "branch": null, + "revision": "037b70291941fe43de668066eb6fb802c5e181d2", + "version": "1.1.1" + } + }, + { + "package": "LambdaSwiftSprinter", + "repositoryURL": "https://github.com/swift-sprinter/aws-lambda-swift-sprinter-core", + "state": { + "branch": null, + "revision": "6941e41194bde0e57fb0deb23be620f2b8dd626d", + "version": "1.0.0" + } + }, + { + "package": "LambdaSwiftSprinterNioPlugin", + "repositoryURL": "https://github.com/swift-sprinter/aws-lambda-swift-sprinter-nio-plugin", + "state": { + "branch": null, + "revision": "35d3ab84bf83fc881844b5f7483cb2a1d942a23f", + "version": "1.0.1" + } + }, + { + "package": "aws-sdk-swift", + "repositoryURL": "https://github.com/swift-aws/aws-sdk-swift.git", + "state": { + "branch": null, + "revision": "eeb30fac3d95a377d8c5bb4b33efed932061f42d", + "version": "5.0.0-alpha.3" + } + }, + { + "package": "aws-sdk-swift-core", + "repositoryURL": "https://github.com/swift-aws/aws-sdk-swift-core.git", + "state": { + "branch": null, + "revision": "ccea4b98758e9e8bb907a4dc9bb15d01d8a3c736", + "version": "5.0.0-alpha.3.2" + } + }, + { + "package": "swift-crypto", + "repositoryURL": "https://github.com/apple/swift-crypto.git", + "state": { + "branch": null, + "revision": "d67ac68d09a95443303e9d6e37b34e7ba101d5f1", + "version": "1.0.1" + } + }, + { + "package": "swift-log", + "repositoryURL": "https://github.com/apple/swift-log.git", + "state": { + "branch": null, + "revision": "74d7b91ceebc85daf387ebb206003f78813f71aa", + "version": "1.2.0" + } + }, + { + "package": "swift-nio", + "repositoryURL": "https://github.com/apple/swift-nio.git", + "state": { + "branch": null, + "revision": "40bdad80882d307abe2c0bb36cf3bd4d3e03fe04", + "version": "2.16.1" + } + }, + { + "package": "swift-nio-extras", + "repositoryURL": "https://github.com/apple/swift-nio-extras.git", + "state": { + "branch": null, + "revision": "e0e76733600a2806b3dc4feae8cfebace858c1a2", + "version": "1.4.1" + } + }, + { + "package": "swift-nio-ssl", + "repositoryURL": "https://github.com/apple/swift-nio-ssl.git", + "state": { + "branch": null, + "revision": "ae213938e151964aa691f0e902462fbe06baeeb6", + "version": "2.7.1" + } + }, + { + "package": "swift-nio-transport-services", + "repositoryURL": "https://github.com/apple/swift-nio-transport-services.git", + "state": { + "branch": null, + "revision": "85a67aea7caf5396ed599543dd23cffeb6dbbf96", + "version": "1.5.1" + } + } + ] + }, + "version": 1 +} diff --git a/Makefile b/Makefile index 6885b29..db07dce 100644 --- a/Makefile +++ b/Makefile @@ -261,4 +261,6 @@ stop_docker_compose_env: make -f $(SWIFT_PROJECT_PATH)/Makefile stop_docker_compose_env test_lambda_local_output: - cmp $(TMP_BUILD_PATH)/outfile $(SWIFT_PROJECT_PATH)/outfile.json \ No newline at end of file + cmp $(TMP_BUILD_PATH)/outfile $(SWIFT_PROJECT_PATH)/outfile.json + +run_test_example: build_lambda_local start_docker_compose_env invoke_lambda_local stop_docker_compose_env test_lambda_local_output \ No newline at end of file From 983189c68f822356f415f19939ff671a7295ff92 Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Mon, 25 May 2020 11:24:37 +0100 Subject: [PATCH 14/19] add travis stages --- .travis.yml | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index d5d1987..53478fb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,12 +24,10 @@ addons: before_install: - ./scripts/aws_travis_credentials.sh -install: - - make --version - - make docker_build - - docker image ls - - make package_layer - - make package_lambda +global: + - DOCKER_OS=amazonlinux2 + - SWIFT_VERSION=nightly-amazonlinux2 + - LAYER_VERSION=nightly-amazonlinux2 env: - SWIFT_EXECUTABLE=HelloWorld SWIFT_PROJECT_PATH=Examples/HelloWorld LAMBDA_FUNCTION_NAME=HelloWorld LAMBDA_HANDLER=HelloWorld.helloWorld @@ -38,15 +36,24 @@ env: - SWIFT_EXECUTABLE=RedisDemo SWIFT_PROJECT_PATH=Examples/RedisDemo LAMBDA_FUNCTION_NAME=RedisDemo LAMBDA_HANDLER=$(SWIFT_EXECUTABLE).setGet - SWIFT_EXECUTABLE=PostgreSQLDemo SWIFT_PROJECT_PATH=Examples/PostgreSQLDemo LAMBDA_FUNCTION_NAME=PostgreSQLDemo LAMBDA_HANDLER=$(SWIFT_EXECUTABLE).query -script: - - make swift_test - - make run_test_example +jobs: + - stage: build docker image + script: + - make --version + - make docker_build + - docker image ls + - make package_layer + - make package_lambda + - stage: run tests + script: + - make swift_test + - make run_test_example deploy: provider: releases api_key: secure: Ddgpz/LsTWeTTr8Xm0br+Vs3Is58V2bOHthwLOt5a1TbyhWAgU+tyc6lwvd51mhQxeNNVPSOWLKC4QgJEp2KI2ZCaw0K+Czb8lqMzWF5eJggDmJ0+wOZIHVEWMO7smLTwDc1jWtdnQA3qkPtXgSw0ERcJ9z4/haz1Q8v7Jj5qfoBJiNxnYYvw/79ElqROIjtQ0asX/i6xhZSlBFO1dXo5QPzX7XeNREQmh2dCkjfoeYSFSCah4Tnn5akxX36Pef1DJvWdFvc623pWAUoCpeswIMW/htby5tJQ6+C9PK+2yzqomKfU9gTK9iv7Nt3X1LN3KsXpk6VHgtljiUkEsecXjYB5WVBT00mY/4bnTPyY6RjI/V6C0aGnTE+0Pj78kDofJKj5uNevFi4vlBI2g4s4G0mRASFRp+sk3ASmzl62Lohkl1LfNiPYKRKRA2jT81s79zBnYv/MQ7t3fY+yd7iP+NrJfDFR/XG0vxBOQrNRpq6LR0M7DeHgTD/d9an2WEqJlX9pp+Ji/ywwepW7b/NLv42xeN99SnHbDmJJ/eZ4P1IC37JCOT5CjJ9wIyP8c+Q89JT30nlvON9xPM8MOx/MrVAGCeqC6FW1Zjc6oakTRZdngMqN1acH5OosLX83cOjjXo8ivRt5Sm2tfX3ZuOgL98kdaYsIBPIYbYhZDODdvM= - file: ".build/layer/swift-lambda-runtime-5-1-5.zip" + file: ".build/layer/swift-lambda-runtime-${TRAVIS_TAG}-@{DOCKER_OS}.zip" skip_cleanup: true on: tags: true \ No newline at end of file From 84279b9ee54a783f86695f423c7c12303b84c450 Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Mon, 25 May 2020 11:31:03 +0100 Subject: [PATCH 15/19] Revert "add travis stages" This reverts commit 983189c68f822356f415f19939ff671a7295ff92. --- .travis.yml | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/.travis.yml b/.travis.yml index 53478fb..d5d1987 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,10 +24,12 @@ addons: before_install: - ./scripts/aws_travis_credentials.sh -global: - - DOCKER_OS=amazonlinux2 - - SWIFT_VERSION=nightly-amazonlinux2 - - LAYER_VERSION=nightly-amazonlinux2 +install: + - make --version + - make docker_build + - docker image ls + - make package_layer + - make package_lambda env: - SWIFT_EXECUTABLE=HelloWorld SWIFT_PROJECT_PATH=Examples/HelloWorld LAMBDA_FUNCTION_NAME=HelloWorld LAMBDA_HANDLER=HelloWorld.helloWorld @@ -36,24 +38,15 @@ env: - SWIFT_EXECUTABLE=RedisDemo SWIFT_PROJECT_PATH=Examples/RedisDemo LAMBDA_FUNCTION_NAME=RedisDemo LAMBDA_HANDLER=$(SWIFT_EXECUTABLE).setGet - SWIFT_EXECUTABLE=PostgreSQLDemo SWIFT_PROJECT_PATH=Examples/PostgreSQLDemo LAMBDA_FUNCTION_NAME=PostgreSQLDemo LAMBDA_HANDLER=$(SWIFT_EXECUTABLE).query -jobs: - - stage: build docker image - script: - - make --version - - make docker_build - - docker image ls - - make package_layer - - make package_lambda - - stage: run tests - script: - - make swift_test - - make run_test_example +script: + - make swift_test + - make run_test_example deploy: provider: releases api_key: secure: Ddgpz/LsTWeTTr8Xm0br+Vs3Is58V2bOHthwLOt5a1TbyhWAgU+tyc6lwvd51mhQxeNNVPSOWLKC4QgJEp2KI2ZCaw0K+Czb8lqMzWF5eJggDmJ0+wOZIHVEWMO7smLTwDc1jWtdnQA3qkPtXgSw0ERcJ9z4/haz1Q8v7Jj5qfoBJiNxnYYvw/79ElqROIjtQ0asX/i6xhZSlBFO1dXo5QPzX7XeNREQmh2dCkjfoeYSFSCah4Tnn5akxX36Pef1DJvWdFvc623pWAUoCpeswIMW/htby5tJQ6+C9PK+2yzqomKfU9gTK9iv7Nt3X1LN3KsXpk6VHgtljiUkEsecXjYB5WVBT00mY/4bnTPyY6RjI/V6C0aGnTE+0Pj78kDofJKj5uNevFi4vlBI2g4s4G0mRASFRp+sk3ASmzl62Lohkl1LfNiPYKRKRA2jT81s79zBnYv/MQ7t3fY+yd7iP+NrJfDFR/XG0vxBOQrNRpq6LR0M7DeHgTD/d9an2WEqJlX9pp+Ji/ywwepW7b/NLv42xeN99SnHbDmJJ/eZ4P1IC37JCOT5CjJ9wIyP8c+Q89JT30nlvON9xPM8MOx/MrVAGCeqC6FW1Zjc6oakTRZdngMqN1acH5OosLX83cOjjXo8ivRt5Sm2tfX3ZuOgL98kdaYsIBPIYbYhZDODdvM= - file: ".build/layer/swift-lambda-runtime-${TRAVIS_TAG}-@{DOCKER_OS}.zip" + file: ".build/layer/swift-lambda-runtime-5-1-5.zip" skip_cleanup: true on: tags: true \ No newline at end of file From d16085b242fdc66ad62a6b148ff126b062c05157 Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Mon, 25 May 2020 11:32:21 +0100 Subject: [PATCH 16/19] Add global to travis --- .travis.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d5d1987..9e04ae9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,6 +24,11 @@ addons: before_install: - ./scripts/aws_travis_credentials.sh +global: + - DOCKER_OS=amazonlinux2 + - SWIFT_VERSION=nightly-amazonlinux2 + - LAYER_VERSION=nightly-amazonlinux2 + install: - make --version - make docker_build @@ -46,7 +51,7 @@ deploy: provider: releases api_key: secure: Ddgpz/LsTWeTTr8Xm0br+Vs3Is58V2bOHthwLOt5a1TbyhWAgU+tyc6lwvd51mhQxeNNVPSOWLKC4QgJEp2KI2ZCaw0K+Czb8lqMzWF5eJggDmJ0+wOZIHVEWMO7smLTwDc1jWtdnQA3qkPtXgSw0ERcJ9z4/haz1Q8v7Jj5qfoBJiNxnYYvw/79ElqROIjtQ0asX/i6xhZSlBFO1dXo5QPzX7XeNREQmh2dCkjfoeYSFSCah4Tnn5akxX36Pef1DJvWdFvc623pWAUoCpeswIMW/htby5tJQ6+C9PK+2yzqomKfU9gTK9iv7Nt3X1LN3KsXpk6VHgtljiUkEsecXjYB5WVBT00mY/4bnTPyY6RjI/V6C0aGnTE+0Pj78kDofJKj5uNevFi4vlBI2g4s4G0mRASFRp+sk3ASmzl62Lohkl1LfNiPYKRKRA2jT81s79zBnYv/MQ7t3fY+yd7iP+NrJfDFR/XG0vxBOQrNRpq6LR0M7DeHgTD/d9an2WEqJlX9pp+Ji/ywwepW7b/NLv42xeN99SnHbDmJJ/eZ4P1IC37JCOT5CjJ9wIyP8c+Q89JT30nlvON9xPM8MOx/MrVAGCeqC6FW1Zjc6oakTRZdngMqN1acH5OosLX83cOjjXo8ivRt5Sm2tfX3ZuOgL98kdaYsIBPIYbYhZDODdvM= - file: ".build/layer/swift-lambda-runtime-5-1-5.zip" + file: ".build/layer/swift-lambda-runtime-${TRAVIS_TAG}-@{DOCKER_OS}.zip" skip_cleanup: true on: tags: true \ No newline at end of file From ad5da15593caad9a794ff37d07f89b612c2be41c Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Sat, 13 Jun 2020 12:46:54 +0200 Subject: [PATCH 17/19] Update to version 5.2.4 --- .travis.yml | 4 ++-- README.md | 8 +++----- docker/5.2.4-amazonlinux2/Dockerfile | 4 ++++ docker/5.2.4-amazonlinux2/bootstrap | 3 +++ docker/5.2.4-amazonlinux2/swift-shared-libraries.txt | 12 ++++++++++++ docker/{5.2.3-bionic => 5.2.4-bionic}/Dockerfile | 2 +- docker/{5.2.3-bionic => 5.2.4-bionic}/bootstrap | 0 .../swift-shared-libraries.txt | 0 8 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 docker/5.2.4-amazonlinux2/Dockerfile create mode 100755 docker/5.2.4-amazonlinux2/bootstrap create mode 100644 docker/5.2.4-amazonlinux2/swift-shared-libraries.txt rename docker/{5.2.3-bionic => 5.2.4-bionic}/Dockerfile (68%) rename docker/{5.2.3-bionic => 5.2.4-bionic}/bootstrap (100%) rename docker/{5.2.3-bionic => 5.2.4-bionic}/swift-shared-libraries.txt (100%) diff --git a/.travis.yml b/.travis.yml index 9e04ae9..afa063f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,8 +26,8 @@ before_install: global: - DOCKER_OS=amazonlinux2 - - SWIFT_VERSION=nightly-amazonlinux2 - - LAYER_VERSION=nightly-amazonlinux2 + - SWIFT_VERSION=5.2.4-amazonlinux2 + - LAYER_VERSION=5.2.4-amazonlinux2 install: - make --version diff --git a/README.md b/README.md index 3916f92..82ef84c 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,11 @@ # aws-lambda-swift-sprinter -![](https://img.shields.io/badge/@AWS-Open-orange.svg) [![Swift 5](https://img.shields.io/badge/Swift-5.0-blue.svg)](https://swift.org/download/) [![Swift 5.1.5](https://img.shields.io/badge/Swift-5.1.5-blue.svg)](https://swift.org/download/) [![Swift 5.2.3](https://img.shields.io/badge/Swift-5.2.3-blue.svg)](https://swift.org/download/) ![](https://img.shields.io/badge/version-1.1.0-green) ![](https://travis-ci.com/swift-sprinter/aws-lambda-swift-sprinter.svg?branch=master) ![](https://img.shields.io/badge/docker-amazonlinux2-orange.svg) ![](https://img.shields.io/badge/docker-ubuntu--xenial-pink.svg) +![](https://img.shields.io/badge/@AWS-Open-orange.svg) [![Swift 5](https://img.shields.io/badge/Swift-5.0-blue.svg)](https://swift.org/download/) [![Swift 5.1.5](https://img.shields.io/badge/Swift-5.1.5-blue.svg)](https://swift.org/download/) [![Swift 5.2.4](https://img.shields.io/badge/Swift-5.2.4-blue.svg)](https://swift.org/download/) ![](https://img.shields.io/badge/version-1.1.0-green) ![](https://travis-ci.com/swift-sprinter/aws-lambda-swift-sprinter.svg?branch=master) ![](https://img.shields.io/badge/docker-amazonlinux2-orange.svg) ![](https://img.shields.io/badge/docker-ubuntu--xenial-pink.svg) ![](./images/aws-lambda-swift-sprinter.png) The goal of this project is to provide an environment to build an [AWS Lambda Custom Runtime](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html) for the **Swift** programming language and provide the required support to run [swift-nio 2.0](https://github.com/apple/swift-nio). -The support of **swift-nio 2.0** is crucial to allow HTTPS requests inside the Swift Lambda. - The project helps building a Swift Lambda based on the framework [LambdaSwiftSprinter](https://github.com/swift-sprinter/aws-lambda-swift-sprinter-core). The project contains also some Examples: @@ -20,9 +18,9 @@ The project contains also some Examples: # Introduction -The AWS Lambdas run on [Amazon Linux](https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html). Unfortunately, there is no support at the moment for Swift on Amazon Linux. This means that the Lambda cannot be built using `swift build` inside the Amazon Linux image. +The AWS Lambdas run on [Amazon Linux](https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html). -The work-around to build swift on Amazon Linux is achieved by: +To build swift on Amazon Linux is required to: - building the code on the [official Docker Swift](https://hub.docker.com/_/swift/) - extracting the build and all the runtime's shared libraries - packaging the artefacts and use them as [AWS Lambda Custom Runtime](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-custom.html) diff --git a/docker/5.2.4-amazonlinux2/Dockerfile b/docker/5.2.4-amazonlinux2/Dockerfile new file mode 100644 index 0000000..44bd97a --- /dev/null +++ b/docker/5.2.4-amazonlinux2/Dockerfile @@ -0,0 +1,4 @@ +FROM swiftlang/swift:5.2.4-amazonlinux2 as builder + +RUN yum -y update && \ + yum -y install zlib-devel \ No newline at end of file diff --git a/docker/5.2.4-amazonlinux2/bootstrap b/docker/5.2.4-amazonlinux2/bootstrap new file mode 100755 index 0000000..acdb8f3 --- /dev/null +++ b/docker/5.2.4-amazonlinux2/bootstrap @@ -0,0 +1,3 @@ +#!/bin/sh +EXECUTABLE=$LAMBDA_TASK_ROOT/"$(echo $_HANDLER | cut -d. -f1)" +$EXECUTABLE \ No newline at end of file diff --git a/docker/5.2.4-amazonlinux2/swift-shared-libraries.txt b/docker/5.2.4-amazonlinux2/swift-shared-libraries.txt new file mode 100644 index 0000000..921623e --- /dev/null +++ b/docker/5.2.4-amazonlinux2/swift-shared-libraries.txt @@ -0,0 +1,12 @@ +/usr/lib/swift/linux/libBlocksRuntime.so +/usr/lib/swift/linux/libFoundation.so +/usr/lib/swift/linux/libFoundationNetworking.so +/usr/lib/swift/linux/libFoundationXML.so +/usr/lib/swift/linux/libdispatch.so +/usr/lib/swift/linux/libicudataswift.so.65 +/usr/lib/swift/linux/libicui18nswift.so.65 +/usr/lib/swift/linux/libicuucswift.so.65 +/usr/lib/swift/linux/libswiftCore.so +/usr/lib/swift/linux/libswiftDispatch.so +/usr/lib/swift/linux/libswiftGlibc.so +/usr/lib/swift/linux/libswiftSwiftOnoneSupport.so \ No newline at end of file diff --git a/docker/5.2.3-bionic/Dockerfile b/docker/5.2.4-bionic/Dockerfile similarity index 68% rename from docker/5.2.3-bionic/Dockerfile rename to docker/5.2.4-bionic/Dockerfile index a2f4133..feaaa58 100644 --- a/docker/5.2.3-bionic/Dockerfile +++ b/docker/5.2.4-bionic/Dockerfile @@ -1,4 +1,4 @@ -FROM swift:5.2.3-bionic as builder +FROM swift:5.2.4-bionic as builder RUN apt-get -qq update && apt-get -q -y install \ libssl-dev libicu-dev diff --git a/docker/5.2.3-bionic/bootstrap b/docker/5.2.4-bionic/bootstrap similarity index 100% rename from docker/5.2.3-bionic/bootstrap rename to docker/5.2.4-bionic/bootstrap diff --git a/docker/5.2.3-bionic/swift-shared-libraries.txt b/docker/5.2.4-bionic/swift-shared-libraries.txt similarity index 100% rename from docker/5.2.3-bionic/swift-shared-libraries.txt rename to docker/5.2.4-bionic/swift-shared-libraries.txt From ac028f79a52c026fc0b13c4b06140ed87ec07481 Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Sat, 13 Jun 2020 12:53:59 +0200 Subject: [PATCH 18/19] Fix Makefile --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index db07dce..43402fe 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # Use this tag to build a customized local image -SWIFT_VERSION?=nightly-amazonlinux2 -LAYER_VERSION?=nightly-amazonlinux2 +SWIFT_VERSION?=5.2.4-amazonlinux2 +LAYER_VERSION?=5.2.4-amazonlinux2 DOCKER_OS?=amazonlinux2 # SWIFT_VERSION=5.2.3-bionic # LAYER_VERSION=5-2-3-bionic From a70003bcfe799b85b4bb0746863efbb12e14d21c Mon Sep 17 00:00:00 2001 From: Andrea Scuderi Date: Sat, 13 Jun 2020 13:09:21 +0200 Subject: [PATCH 19/19] Fix Dockerfile 5.2.4-amazonlinux2 --- docker/5.2.4-amazonlinux2/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker/5.2.4-amazonlinux2/Dockerfile b/docker/5.2.4-amazonlinux2/Dockerfile index 44bd97a..9a4e2aa 100644 --- a/docker/5.2.4-amazonlinux2/Dockerfile +++ b/docker/5.2.4-amazonlinux2/Dockerfile @@ -1,4 +1,4 @@ -FROM swiftlang/swift:5.2.4-amazonlinux2 as builder +FROM swift:5.2.4-amazonlinux2 as builder RUN yum -y update && \ yum -y install zlib-devel \ No newline at end of file