diff --git a/README.md b/README.md index e622ce48..f46be66b 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ ___ com.amazonaws aws-lambda-java-runtime-interface-client - 1.1.0 + 2.0.0 com.amazonaws @@ -69,7 +69,7 @@ ___ 'com.amazonaws:aws-lambda-java-events:3.10.0' 'com.amazonaws:aws-lambda-java-events-sdk-transformer:3.0.6' 'com.amazonaws:aws-lambda-java-log4j2:1.2.0' -'com.amazonaws:aws-lambda-java-runtime-interface-client:1.1.0' +'com.amazonaws:aws-lambda-java-runtime-interface-client:2.0.0' 'com.amazonaws:aws-lambda-java-tests:1.1.0' ``` @@ -80,7 +80,7 @@ ___ [com.amazonaws/aws-lambda-java-events "3.10.0"] [com.amazonaws/aws-lambda-java-events-sdk-transformer "3.0.6"] [com.amazonaws/aws-lambda-java-log4j2 "1.2.0"] -[com.amazonaws/aws-lambda-java-runtime-interface-client "1.1.0"] +[com.amazonaws/aws-lambda-java-runtime-interface-client "2.0.0"] [com.amazonaws/aws-lambda-java-tests "1.1.0"] ``` @@ -91,7 +91,7 @@ ___ "com.amazonaws" % "aws-lambda-java-events" % "3.10.0" "com.amazonaws" % "aws-lambda-java-events-sdk-transformer" % "3.0.6" "com.amazonaws" % "aws-lambda-java-log4j2" % "1.2.0" -"com.amazonaws" % "aws-lambda-java-runtime-interface-client" % "1.1.0" +"com.amazonaws" % "aws-lambda-java-runtime-interface-client" % "2.0.0" "com.amazonaws" % "aws-lambda-java-tests" % "1.1.0" ``` diff --git a/aws-lambda-java-runtime-interface-client/README.md b/aws-lambda-java-runtime-interface-client/README.md index d8771d2a..8332a11f 100644 --- a/aws-lambda-java-runtime-interface-client/README.md +++ b/aws-lambda-java-runtime-interface-client/README.md @@ -70,7 +70,7 @@ pom.xml com.amazonaws aws-lambda-java-runtime-interface-client - 1.1.0 + 2.0.0 diff --git a/aws-lambda-java-runtime-interface-client/RELEASE.CHANGELOG.md b/aws-lambda-java-runtime-interface-client/RELEASE.CHANGELOG.md index dbb62cc1..8b74e9f9 100644 --- a/aws-lambda-java-runtime-interface-client/RELEASE.CHANGELOG.md +++ b/aws-lambda-java-runtime-interface-client/RELEASE.CHANGELOG.md @@ -1,4 +1,8 @@ -### June 02, 2020 +### Sept 29, 2021 +`2.0.0` +- Added support for ARM64 architecture + +### June 02, 2021 `1.1.0`: - Added reserved environment variables constants ([#238](https://github.com/aws/aws-lambda-java-libs/pull/238)) - Updated libcurl dependency to `7.77.0` ([#249](https://github.com/aws/aws-lambda-java-libs/pull/249)) diff --git a/aws-lambda-java-runtime-interface-client/pom.xml b/aws-lambda-java-runtime-interface-client/pom.xml index 68f2e364..09716367 100644 --- a/aws-lambda-java-runtime-interface-client/pom.xml +++ b/aws-lambda-java-runtime-interface-client/pom.xml @@ -4,7 +4,7 @@ com.amazonaws aws-lambda-java-runtime-interface-client - 1.1.0 + 2.0.0 jar AWS Lambda Java Runtime Interface Client diff --git a/aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.glibc b/aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.glibc index 9f88549a..9d46d2f9 100644 --- a/aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.glibc +++ b/aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.glibc @@ -31,6 +31,7 @@ RUN ./configure \ --prefix $(pwd)/../artifacts \ --disable-shared \ --without-ssl \ + --with-pic \ --without-zlib && \ make && \ make install diff --git a/aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.musl b/aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.musl index 6c4141b5..d34253fa 100644 --- a/aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.musl +++ b/aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.musl @@ -2,13 +2,9 @@ FROM alpine:3 ARG CURL_VERSION -# Add Corretto repository -RUN wget -O /etc/apk/keys/amazoncorretto.rsa.pub https://apk.corretto.aws/amazoncorretto.rsa.pub && \ - echo "https://apk.corretto.aws/" >> /etc/apk/repositories - RUN apk update && \ apk add \ - amazon-corretto-8 \ + openjdk11 \ cmake \ file \ g++ \ @@ -25,6 +21,7 @@ RUN ./configure \ --prefix $(pwd)/../artifacts \ --disable-shared \ --without-ssl \ + --with-pic \ --without-zlib && \ make && \ make install @@ -44,7 +41,8 @@ RUN cmake .. \ # Build native client ADD *.cpp *.h /src/ WORKDIR /src -ENV JAVA_HOME=/usr/lib/jvm/java-8-amazon-corretto + +ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk RUN /usr/bin/c++ -c \ -std=gnu++11 \ -fPIC \ diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.alpine.yml b/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.alpine.yml index 5f52bf7d..910fa8aa 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.alpine.yml +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.alpine.yml @@ -9,7 +9,6 @@ batch: static: ignore-failure: false env: - type: LINUX_CONTAINER privileged-mode: true dynamic: env: @@ -44,7 +43,17 @@ phases: - echo "Extracting and including Runtime Interface Emulator" - SCRATCH_DIR=".scratch" - mkdir "${SCRATCH_DIR}" - - tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}" + - ARCHITECTURE=$(arch) + - > + if [[ "$ARCHITECTURE" == "x86_64" ]]; then + RIE="aws-lambda-rie" + elif [[ "$ARCHITECTURE" == "aarch64" ]]; then + RIE="aws-lambda-rie-arm64" + else + echo "Architecture $ARCHITECTURE is not currently supported." + exit 1 + fi + - tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}" - > cp "aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.${OS_DISTRIBUTION}" \ "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" @@ -52,7 +61,7 @@ phases: echo "RUN apk add curl" >> \ "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" - > - echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \ + echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \ "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" - echo "Building image ${IMAGE_TAG}" - > @@ -69,12 +78,11 @@ phases: - > docker run \ --detach \ - -e "JAVA_BINARY_LOCATION=${JAVA_BINARY_LOCATION}" \ --name "${OS_DISTRIBUTION}-app" \ --network "${OS_DISTRIBUTION}-network" \ --entrypoint="" \ "${IMAGE_TAG}" \ - sh -c '/usr/bin/aws-lambda-rie ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App' + sh -c "/usr/bin/${RIE} ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App" - sleep 2 - > docker run \ @@ -90,19 +98,20 @@ phases: echo "Response: ${actual}" if [[ "$actual" != "$expected" ]]; then echo "fail! runtime: $RUNTIME - expected output $expected - got $actual" - echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------" - echo - docker logs "${OS_DISTRIBUTION}-app" - echo - echo "---------------------------------------------------" - echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------" - echo - docker logs "${OS_DISTRIBUTION}-tester" - echo - echo "---------------------------------------------------" exit -1 fi finally: + - | + echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------" + echo + docker logs "${OS_DISTRIBUTION}-app" || true + echo + echo "---------------------------------------------------" + echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------" + echo + docker logs "${OS_DISTRIBUTION}-tester" || true + echo + echo "---------------------------------------------------" - echo "Cleaning up..." - docker stop "${OS_DISTRIBUTION}-app" || true - docker rm --force "${OS_DISTRIBUTION}-app" || true diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.amazoncorretto.yml b/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.amazoncorretto.yml index ad047b21..b12b59af 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.amazoncorretto.yml +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.amazoncorretto.yml @@ -9,7 +9,6 @@ batch: static: ignore-failure: false env: - type: LINUX_CONTAINER privileged-mode: true dynamic: env: @@ -42,12 +41,22 @@ phases: - echo "Extracting and including Runtime Interface Emulator" - SCRATCH_DIR=".scratch" - mkdir "${SCRATCH_DIR}" - - tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}" + - ARCHITECTURE=$(arch) + - > + if [[ "$ARCHITECTURE" == "x86_64" ]]; then + RIE="aws-lambda-rie" + elif [[ "$ARCHITECTURE" == "aarch64" ]]; then + RIE="aws-lambda-rie-arm64" + else + echo "Architecture $ARCHITECTURE is not currently supported." + exit 1 + fi + - tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}" - > cp "aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.${OS_DISTRIBUTION}" \ "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" - > - echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \ + echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \ "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" - echo "Building image ${IMAGE_TAG}" - > @@ -64,12 +73,11 @@ phases: - > docker run \ --detach \ - -e "JAVA_BINARY_LOCATION=${JAVA_BINARY_LOCATION}" \ --name "${OS_DISTRIBUTION}-app" \ --network "${OS_DISTRIBUTION}-network" \ --entrypoint="" \ "${IMAGE_TAG}" \ - sh -c '/usr/bin/aws-lambda-rie ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App' + sh -c "/usr/bin/${RIE} ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App" - sleep 2 - > docker run \ @@ -85,19 +93,20 @@ phases: echo "Response: ${actual}" if [[ "$actual" != "$expected" ]]; then echo "fail! runtime: $RUNTIME - expected output $expected - got $actual" - echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------" - echo - docker logs "${OS_DISTRIBUTION}-app" - echo - echo "---------------------------------------------------" - echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------" - echo - docker logs "${OS_DISTRIBUTION}-tester" - echo - echo "---------------------------------------------------" exit -1 fi finally: + - | + echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------" + echo + docker logs "${OS_DISTRIBUTION}-app" || true + echo + echo "---------------------------------------------------" + echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------" + echo + docker logs "${OS_DISTRIBUTION}-tester" || true + echo + echo "---------------------------------------------------" - echo "Cleaning up..." - docker stop "${OS_DISTRIBUTION}-app" || true - docker rm --force "${OS_DISTRIBUTION}-app" || true diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.amazonlinux.yml b/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.amazonlinux.1.yml similarity index 76% rename from aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.amazonlinux.yml rename to aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.amazonlinux.1.yml index 7df45f16..e49ee0f5 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.amazonlinux.yml +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.amazonlinux.1.yml @@ -9,14 +9,12 @@ batch: static: ignore-failure: false env: - type: LINUX_CONTAINER privileged-mode: true dynamic: env: variables: DISTRO_VERSION: - "1" - - "2" RUNTIME_VERSION: - "openjdk8" phases: @@ -42,12 +40,22 @@ phases: - echo "Extracting and including Runtime Interface Emulator" - SCRATCH_DIR=".scratch" - mkdir "${SCRATCH_DIR}" - - tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}" + - ARCHITECTURE=$(arch) + - > + if [[ "$ARCHITECTURE" == "x86_64" ]]; then + RIE="aws-lambda-rie" + elif [[ "$ARCHITECTURE" == "aarch64" ]]; then + RIE="aws-lambda-rie-arm64" + else + echo "Architecture $ARCHITECTURE is not currently supported." + exit 1 + fi + - tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}" - > cp "aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.${OS_DISTRIBUTION}" \ "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" - > - echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \ + echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \ "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" - echo "Building image ${IMAGE_TAG}" - > @@ -64,12 +72,11 @@ phases: - > docker run \ --detach \ - -e "JAVA_BINARY_LOCATION=${JAVA_BINARY_LOCATION}" \ --name "${OS_DISTRIBUTION}-app" \ --network "${OS_DISTRIBUTION}-network" \ --entrypoint="" \ "${IMAGE_TAG}" \ - sh -c '/usr/bin/aws-lambda-rie ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App' + sh -c "/usr/bin/${RIE} ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App" - sleep 2 - > docker run \ @@ -85,19 +92,20 @@ phases: echo "Response: ${actual}" if [[ "$actual" != "$expected" ]]; then echo "fail! runtime: $RUNTIME - expected output $expected - got $actual" - echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------" - echo - docker logs "${OS_DISTRIBUTION}-app" - echo - echo "---------------------------------------------------" - echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------" - echo - docker logs "${OS_DISTRIBUTION}-tester" - echo - echo "---------------------------------------------------" exit -1 fi finally: + - | + echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------" + echo + docker logs "${OS_DISTRIBUTION}-app" || true + echo + echo "---------------------------------------------------" + echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------" + echo + docker logs "${OS_DISTRIBUTION}-tester" || true + echo + echo "---------------------------------------------------" - echo "Cleaning up..." - docker stop "${OS_DISTRIBUTION}-app" || true - docker rm --force "${OS_DISTRIBUTION}-app" || true diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.amazonlinux.2.yml b/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.amazonlinux.2.yml new file mode 100644 index 00000000..00a34e59 --- /dev/null +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.amazonlinux.2.yml @@ -0,0 +1,114 @@ +version: 0.2 + +env: + variables: + OS_DISTRIBUTION: amazonlinux + JAVA_BINARY_LOCATION: "/usr/bin/java" +batch: + build-matrix: + static: + ignore-failure: false + env: + privileged-mode: true + dynamic: + env: + variables: + DISTRO_VERSION: + - "2" + RUNTIME_VERSION: + - "openjdk8" +phases: + install: + commands: + - > + if [[ -z "${DOCKERHUB_USERNAME}" && -z "${DOCKERHUB_PASSWORD}" ]]; + then + echo "DockerHub credentials not set as CodeBuild environment variables. Continuing without docker login." + else + echo "Performing DockerHub login . . ." + docker login -u $DOCKERHUB_USERNAME -p $DOCKERHUB_PASSWORD + fi + pre_build: + commands: + # Install events (dependency of serialization) + - (cd aws-lambda-java-events && mvn install) + # Install serialization (dependency of RIC) + - (cd aws-lambda-java-serialization && mvn install) + - (cd aws-lambda-java-runtime-interface-client && mvn install) + - (cd aws-lambda-java-runtime-interface-client/test/integration/test-handler && mvn install) + - export IMAGE_TAG="java-${OS_DISTRIBUTION}-${DISTRO_VERSION}:${RUNTIME_VERSION}" + - echo "Extracting and including Runtime Interface Emulator" + - SCRATCH_DIR=".scratch" + - mkdir "${SCRATCH_DIR}" + - ARCHITECTURE=$(arch) + - > + if [[ "$ARCHITECTURE" == "x86_64" ]]; then + RIE="aws-lambda-rie" + elif [[ "$ARCHITECTURE" == "aarch64" ]]; then + RIE="aws-lambda-rie-arm64" + else + echo "Architecture $ARCHITECTURE is not currently supported." + exit 1 + fi + - tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}" + - > + cp "aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.${OS_DISTRIBUTION}" \ + "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" + - > + echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \ + "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" + - echo "Building image ${IMAGE_TAG}" + - > + docker build . \ + -f "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" \ + -t "${IMAGE_TAG}" \ + --build-arg RUNTIME_VERSION="${RUNTIME_VERSION}" \ + --build-arg DISTRO_VERSION="${DISTRO_VERSION}" + build: + commands: + - set -x + - echo "Running Image ${IMAGE_TAG}" + - docker network create "${OS_DISTRIBUTION}-network" + - > + docker run \ + --detach \ + --name "${OS_DISTRIBUTION}-app" \ + --network "${OS_DISTRIBUTION}-network" \ + --entrypoint="" \ + "${IMAGE_TAG}" \ + sh -c "/usr/bin/${RIE} ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App" + - sleep 2 + - > + docker run \ + --name "${OS_DISTRIBUTION}-tester" \ + --env "TARGET=${OS_DISTRIBUTION}-app" \ + --network "${OS_DISTRIBUTION}-network" \ + --entrypoint="" \ + "${IMAGE_TAG}" \ + sh -c 'curl -X POST "http://${TARGET}:8080/2015-03-31/functions/function/invocations" -d "{}" --max-time 10' + - actual="$(docker logs --tail 1 "${OS_DISTRIBUTION}-tester" | xargs)" + - expected='success' + - | + echo "Response: ${actual}" + if [[ "$actual" != "$expected" ]]; then + echo "fail! runtime: $RUNTIME - expected output $expected - got $actual" + exit -1 + fi + finally: + - | + echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------" + echo + docker logs "${OS_DISTRIBUTION}-app" || true + echo + echo "---------------------------------------------------" + echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------" + echo + docker logs "${OS_DISTRIBUTION}-tester" || true + echo + echo "---------------------------------------------------" + - echo "Cleaning up..." + - docker stop "${OS_DISTRIBUTION}-app" || true + - docker rm --force "${OS_DISTRIBUTION}-app" || true + - docker stop "${OS_DISTRIBUTION}-tester" || true + - docker rm --force "${OS_DISTRIBUTION}-tester" || true + - docker network rm "${OS_DISTRIBUTION}-network" || true \ No newline at end of file diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.centos.yml b/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.centos.yml index 3fe94a5d..5fc211ed 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.centos.yml +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.centos.yml @@ -9,7 +9,6 @@ batch: static: ignore-failure: false env: - type: LINUX_CONTAINER privileged-mode: true dynamic: env: @@ -42,12 +41,22 @@ phases: - echo "Extracting and including Runtime Interface Emulator" - SCRATCH_DIR=".scratch" - mkdir "${SCRATCH_DIR}" - - tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}" + - ARCHITECTURE=$(arch) + - > + if [[ "$ARCHITECTURE" == "x86_64" ]]; then + RIE="aws-lambda-rie" + elif [[ "$ARCHITECTURE" == "aarch64" ]]; then + RIE="aws-lambda-rie-arm64" + else + echo "Architecture $ARCHITECTURE is not currently supported." + exit 1 + fi + - tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}" - > cp "aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.${OS_DISTRIBUTION}" \ "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" - > - echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \ + echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \ "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" - echo "Building image ${IMAGE_TAG}" - > @@ -64,12 +73,11 @@ phases: - > docker run \ --detach \ - -e "JAVA_BINARY_LOCATION=${JAVA_BINARY_LOCATION}" \ --name "${OS_DISTRIBUTION}-app" \ --network "${OS_DISTRIBUTION}-network" \ --entrypoint="" \ "${IMAGE_TAG}" \ - sh -c '/usr/bin/aws-lambda-rie ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App' + sh -c "/usr/bin/${RIE} ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App" - sleep 2 - > docker run \ @@ -85,19 +93,20 @@ phases: echo "Response: ${actual}" if [[ "$actual" != "$expected" ]]; then echo "fail! runtime: $RUNTIME - expected output $expected - got $actual" - echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------" - echo - docker logs "${OS_DISTRIBUTION}-app" - echo - echo "---------------------------------------------------" - echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------" - echo - docker logs "${OS_DISTRIBUTION}-tester" - echo - echo "---------------------------------------------------" exit -1 fi finally: + - | + echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------" + echo + docker logs "${OS_DISTRIBUTION}-app" || true + echo + echo "---------------------------------------------------" + echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------" + echo + docker logs "${OS_DISTRIBUTION}-tester" || true + echo + echo "---------------------------------------------------" - echo "Cleaning up..." - docker stop "${OS_DISTRIBUTION}-app" || true - docker rm --force "${OS_DISTRIBUTION}-app" || true diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.debian.yml b/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.debian.yml index a6ff0856..1150ff3f 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.debian.yml +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.debian.yml @@ -9,7 +9,6 @@ batch: static: ignore-failure: false env: - type: LINUX_CONTAINER privileged-mode: true dynamic: env: @@ -41,12 +40,22 @@ phases: - echo "Extracting and including Runtime Interface Emulator" - SCRATCH_DIR=".scratch" - mkdir "${SCRATCH_DIR}" - - tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}" + - ARCHITECTURE=$(arch) + - > + if [[ "$ARCHITECTURE" == "x86_64" ]]; then + RIE="aws-lambda-rie" + elif [[ "$ARCHITECTURE" == "aarch64" ]]; then + RIE="aws-lambda-rie-arm64" + else + echo "Architecture $ARCHITECTURE is not currently supported." + exit 1 + fi + - tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}" - > cp "aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.${OS_DISTRIBUTION}" \ "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" - > - echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \ + echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \ "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" - > echo "RUN apt-get update && apt-get install -y curl" >> \ @@ -66,12 +75,11 @@ phases: - > docker run \ --detach \ - -e "JAVA_BINARY_LOCATION=${JAVA_BINARY_LOCATION}" \ --name "${OS_DISTRIBUTION}-app" \ --network "${OS_DISTRIBUTION}-network" \ --entrypoint="" \ "${IMAGE_TAG}" \ - sh -c '/usr/bin/aws-lambda-rie ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App' + sh -c "/usr/bin/${RIE} ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App" - sleep 2 - > docker run \ @@ -87,19 +95,20 @@ phases: echo "Response: ${actual}" if [[ "$actual" != "$expected" ]]; then echo "fail! runtime: $RUNTIME - expected output $expected - got $actual" - echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------" - echo - docker logs "${OS_DISTRIBUTION}-app" - echo - echo "---------------------------------------------------" - echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------" - echo - docker logs "${OS_DISTRIBUTION}-tester" - echo - echo "---------------------------------------------------" exit -1 fi finally: + - | + echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------" + echo + docker logs "${OS_DISTRIBUTION}-app" || true + echo + echo "---------------------------------------------------" + echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------" + echo + docker logs "${OS_DISTRIBUTION}-tester" || true + echo + echo "---------------------------------------------------" - echo "Cleaning up..." - docker stop "${OS_DISTRIBUTION}-app" || true - docker rm --force "${OS_DISTRIBUTION}-app" || true diff --git a/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.ubuntu.yml b/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.ubuntu.yml index 48cfc48c..ef3478ed 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.ubuntu.yml +++ b/aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.ubuntu.yml @@ -9,7 +9,6 @@ batch: static: ignore-failure: false env: - type: LINUX_CONTAINER privileged-mode: true dynamic: env: @@ -43,12 +42,22 @@ phases: - echo "Extracting and including Runtime Interface Emulator" - SCRATCH_DIR=".scratch" - mkdir "${SCRATCH_DIR}" - - tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}" + - ARCHITECTURE=$(arch) + - > + if [[ "$ARCHITECTURE" == "x86_64" ]]; then + RIE="aws-lambda-rie" + elif [[ "$ARCHITECTURE" == "aarch64" ]]; then + RIE="aws-lambda-rie-arm64" + else + echo "Architecture $ARCHITECTURE is not currently supported." + exit 1 + fi + - tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}" - > cp "aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.${OS_DISTRIBUTION}" \ "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" - > - echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \ + echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \ "${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp" - > echo "RUN apt-get update && apt-get install -y curl" >> \ @@ -68,12 +77,11 @@ phases: - > docker run \ --detach \ - -e "JAVA_BINARY_LOCATION=${JAVA_BINARY_LOCATION}" \ --name "${OS_DISTRIBUTION}-app" \ --network "${OS_DISTRIBUTION}-network" \ --entrypoint="" \ "${IMAGE_TAG}" \ - sh -c '/usr/bin/aws-lambda-rie ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App' + sh -c "/usr/bin/${RIE} ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App" - sleep 2 - > docker run \ @@ -89,19 +97,20 @@ phases: echo "Response: ${actual}" if [[ "$actual" != "$expected" ]]; then echo "fail! runtime: $RUNTIME - expected output $expected - got $actual" - echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------" - echo - docker logs "${OS_DISTRIBUTION}-app" - echo - echo "---------------------------------------------------" - echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------" - echo - docker logs "${OS_DISTRIBUTION}-tester" - echo - echo "---------------------------------------------------" exit -1 fi finally: + - | + echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------" + echo + docker logs "${OS_DISTRIBUTION}-app" || true + echo + echo "---------------------------------------------------" + echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------" + echo + docker logs "${OS_DISTRIBUTION}-tester" || true + echo + echo "---------------------------------------------------" - echo "Cleaning up..." - docker stop "${OS_DISTRIBUTION}-app" || true - docker rm --force "${OS_DISTRIBUTION}-app" || true diff --git a/aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.alpine b/aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.alpine index 55ad09e1..60c74409 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.alpine +++ b/aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.alpine @@ -2,10 +2,8 @@ ARG DISTRO_VERSION FROM alpine:${DISTRO_VERSION} -RUN wget -O /etc/apk/keys/amazoncorretto.rsa.pub https://apk.corretto.aws/amazoncorretto.rsa.pub && \ - echo "https://apk.corretto.aws/" >> /etc/apk/repositories && \ - apk update && \ - apk add amazon-corretto-11 +RUN apk update && \ + apk add openjdk8 ADD aws-lambda-java-runtime-interface-client/test/integration/test-handler/target/HelloWorld-1.0.jar . diff --git a/aws-lambda-java-runtime-interface-client/test/integration/resources/aws-lambda-rie-arm64.tar.gz b/aws-lambda-java-runtime-interface-client/test/integration/resources/aws-lambda-rie-arm64.tar.gz new file mode 100644 index 00000000..f62577fc Binary files /dev/null and b/aws-lambda-java-runtime-interface-client/test/integration/resources/aws-lambda-rie-arm64.tar.gz differ diff --git a/aws-lambda-java-runtime-interface-client/test/integration/test-handler/pom.xml b/aws-lambda-java-runtime-interface-client/test/integration/test-handler/pom.xml index e661baf1..5fdc98ba 100644 --- a/aws-lambda-java-runtime-interface-client/test/integration/test-handler/pom.xml +++ b/aws-lambda-java-runtime-interface-client/test/integration/test-handler/pom.xml @@ -15,7 +15,7 @@ com.amazonaws aws-lambda-java-runtime-interface-client - 1.1.0 + 2.0.0