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