Skip to content

Commit 314b24a

Browse files
committed
Add ARM64 architecture support
1 parent ef794a7 commit 314b24a

16 files changed

+277
-109
lines changed

README.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ ___
5252
<dependency>
5353
<groupId>com.amazonaws</groupId>
5454
<artifactId>aws-lambda-java-runtime-interface-client</artifactId>
55-
<version>1.1.0</version>
55+
<version>2.0.0</version>
5656
</dependency>
5757
<dependency>
5858
<groupId>com.amazonaws</groupId>
@@ -69,7 +69,7 @@ ___
6969
'com.amazonaws:aws-lambda-java-events:3.10.0'
7070
'com.amazonaws:aws-lambda-java-events-sdk-transformer:3.0.6'
7171
'com.amazonaws:aws-lambda-java-log4j2:1.2.0'
72-
'com.amazonaws:aws-lambda-java-runtime-interface-client:1.1.0'
72+
'com.amazonaws:aws-lambda-java-runtime-interface-client:2.0.0'
7373
'com.amazonaws:aws-lambda-java-tests:1.1.0'
7474
```
7575

@@ -80,7 +80,7 @@ ___
8080
[com.amazonaws/aws-lambda-java-events "3.10.0"]
8181
[com.amazonaws/aws-lambda-java-events-sdk-transformer "3.0.6"]
8282
[com.amazonaws/aws-lambda-java-log4j2 "1.2.0"]
83-
[com.amazonaws/aws-lambda-java-runtime-interface-client "1.1.0"]
83+
[com.amazonaws/aws-lambda-java-runtime-interface-client "2.0.0"]
8484
[com.amazonaws/aws-lambda-java-tests "1.1.0"]
8585
```
8686

@@ -91,7 +91,7 @@ ___
9191
"com.amazonaws" % "aws-lambda-java-events" % "3.10.0"
9292
"com.amazonaws" % "aws-lambda-java-events-sdk-transformer" % "3.0.6"
9393
"com.amazonaws" % "aws-lambda-java-log4j2" % "1.2.0"
94-
"com.amazonaws" % "aws-lambda-java-runtime-interface-client" % "1.1.0"
94+
"com.amazonaws" % "aws-lambda-java-runtime-interface-client" % "2.0.0"
9595
"com.amazonaws" % "aws-lambda-java-tests" % "1.1.0"
9696
```
9797

aws-lambda-java-runtime-interface-client/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ pom.xml
7070
<dependency>
7171
<groupId>com.amazonaws</groupId>
7272
<artifactId>aws-lambda-java-runtime-interface-client</artifactId>
73-
<version>1.1.0</version>
73+
<version>2.0.0</version>
7474
</dependency>
7575
</dependencies>
7676
<build>

aws-lambda-java-runtime-interface-client/RELEASE.CHANGELOG.md

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
### June 02, 2020
1+
### Sept 29, 2021
2+
`2.0.0`
3+
- Added support for ARM64 architecture
4+
5+
### June 02, 2021
26
`1.1.0`:
37
- Added reserved environment variables constants ([#238](https://github.com/aws/aws-lambda-java-libs/pull/238))
48
- Updated libcurl dependency to `7.77.0` ([#249](https://github.com/aws/aws-lambda-java-libs/pull/249))

aws-lambda-java-runtime-interface-client/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<groupId>com.amazonaws</groupId>
66
<artifactId>aws-lambda-java-runtime-interface-client</artifactId>
7-
<version>1.1.0</version>
7+
<version>2.0.0</version>
88
<packaging>jar</packaging>
99

1010
<name>AWS Lambda Java Runtime Interface Client</name>

aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.glibc

+1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ RUN ./configure \
3131
--prefix $(pwd)/../artifacts \
3232
--disable-shared \
3333
--without-ssl \
34+
--with-pic \
3435
--without-zlib && \
3536
make && \
3637
make install

aws-lambda-java-runtime-interface-client/src/main/jni/Dockerfile.musl

+4-6
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,9 @@ FROM alpine:3
22

33
ARG CURL_VERSION
44

5-
# Add Corretto repository
6-
RUN wget -O /etc/apk/keys/amazoncorretto.rsa.pub https://apk.corretto.aws/amazoncorretto.rsa.pub && \
7-
echo "https://apk.corretto.aws/" >> /etc/apk/repositories
8-
95
RUN apk update && \
106
apk add \
11-
amazon-corretto-8 \
7+
openjdk11 \
128
cmake \
139
file \
1410
g++ \
@@ -25,6 +21,7 @@ RUN ./configure \
2521
--prefix $(pwd)/../artifacts \
2622
--disable-shared \
2723
--without-ssl \
24+
--with-pic \
2825
--without-zlib && \
2926
make && \
3027
make install
@@ -44,7 +41,8 @@ RUN cmake .. \
4441
# Build native client
4542
ADD *.cpp *.h /src/
4643
WORKDIR /src
47-
ENV JAVA_HOME=/usr/lib/jvm/java-8-amazon-corretto
44+
45+
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk
4846
RUN /usr/bin/c++ -c \
4947
-std=gnu++11 \
5048
-fPIC \

aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.alpine.yml

+24-15
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ batch:
99
static:
1010
ignore-failure: false
1111
env:
12-
type: LINUX_CONTAINER
1312
privileged-mode: true
1413
dynamic:
1514
env:
@@ -44,15 +43,25 @@ phases:
4443
- echo "Extracting and including Runtime Interface Emulator"
4544
- SCRATCH_DIR=".scratch"
4645
- mkdir "${SCRATCH_DIR}"
47-
- tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}"
46+
- ARCHITECTURE=$(arch)
47+
- >
48+
if [[ "$ARCHITECTURE" == "x86_64" ]]; then
49+
RIE="aws-lambda-rie"
50+
elif [[ "$ARCHITECTURE" == "aarch64" ]]; then
51+
RIE="aws-lambda-rie-arm64"
52+
else
53+
echo "Architecture $ARCHITECTURE is not currently supported."
54+
exit 1
55+
fi
56+
- tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}"
4857
- >
4958
cp "aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.${OS_DISTRIBUTION}" \
5059
"${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp"
5160
- >
5261
echo "RUN apk add curl" >> \
5362
"${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp"
5463
- >
55-
echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \
64+
echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \
5665
"${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp"
5766
- echo "Building image ${IMAGE_TAG}"
5867
- >
@@ -69,12 +78,11 @@ phases:
6978
- >
7079
docker run \
7180
--detach \
72-
-e "JAVA_BINARY_LOCATION=${JAVA_BINARY_LOCATION}" \
7381
--name "${OS_DISTRIBUTION}-app" \
7482
--network "${OS_DISTRIBUTION}-network" \
7583
--entrypoint="" \
7684
"${IMAGE_TAG}" \
77-
sh -c '/usr/bin/aws-lambda-rie ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App'
85+
sh -c "/usr/bin/${RIE} ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App"
7886
- sleep 2
7987
- >
8088
docker run \
@@ -90,19 +98,20 @@ phases:
9098
echo "Response: ${actual}"
9199
if [[ "$actual" != "$expected" ]]; then
92100
echo "fail! runtime: $RUNTIME - expected output $expected - got $actual"
93-
echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------"
94-
echo
95-
docker logs "${OS_DISTRIBUTION}-app"
96-
echo
97-
echo "---------------------------------------------------"
98-
echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------"
99-
echo
100-
docker logs "${OS_DISTRIBUTION}-tester"
101-
echo
102-
echo "---------------------------------------------------"
103101
exit -1
104102
fi
105103
finally:
104+
- |
105+
echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------"
106+
echo
107+
docker logs "${OS_DISTRIBUTION}-app" || true
108+
echo
109+
echo "---------------------------------------------------"
110+
echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------"
111+
echo
112+
docker logs "${OS_DISTRIBUTION}-tester" || true
113+
echo
114+
echo "---------------------------------------------------"
106115
- echo "Cleaning up..."
107116
- docker stop "${OS_DISTRIBUTION}-app" || true
108117
- docker rm --force "${OS_DISTRIBUTION}-app" || true

aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.amazoncorretto.yml

+24-15
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ batch:
99
static:
1010
ignore-failure: false
1111
env:
12-
type: LINUX_CONTAINER
1312
privileged-mode: true
1413
dynamic:
1514
env:
@@ -42,12 +41,22 @@ phases:
4241
- echo "Extracting and including Runtime Interface Emulator"
4342
- SCRATCH_DIR=".scratch"
4443
- mkdir "${SCRATCH_DIR}"
45-
- tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}"
44+
- ARCHITECTURE=$(arch)
45+
- >
46+
if [[ "$ARCHITECTURE" == "x86_64" ]]; then
47+
RIE="aws-lambda-rie"
48+
elif [[ "$ARCHITECTURE" == "aarch64" ]]; then
49+
RIE="aws-lambda-rie-arm64"
50+
else
51+
echo "Architecture $ARCHITECTURE is not currently supported."
52+
exit 1
53+
fi
54+
- tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}"
4655
- >
4756
cp "aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.${OS_DISTRIBUTION}" \
4857
"${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp"
4958
- >
50-
echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \
59+
echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \
5160
"${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp"
5261
- echo "Building image ${IMAGE_TAG}"
5362
- >
@@ -64,12 +73,11 @@ phases:
6473
- >
6574
docker run \
6675
--detach \
67-
-e "JAVA_BINARY_LOCATION=${JAVA_BINARY_LOCATION}" \
6876
--name "${OS_DISTRIBUTION}-app" \
6977
--network "${OS_DISTRIBUTION}-network" \
7078
--entrypoint="" \
7179
"${IMAGE_TAG}" \
72-
sh -c '/usr/bin/aws-lambda-rie ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App'
80+
sh -c "/usr/bin/${RIE} ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App"
7381
- sleep 2
7482
- >
7583
docker run \
@@ -85,19 +93,20 @@ phases:
8593
echo "Response: ${actual}"
8694
if [[ "$actual" != "$expected" ]]; then
8795
echo "fail! runtime: $RUNTIME - expected output $expected - got $actual"
88-
echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------"
89-
echo
90-
docker logs "${OS_DISTRIBUTION}-app"
91-
echo
92-
echo "---------------------------------------------------"
93-
echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------"
94-
echo
95-
docker logs "${OS_DISTRIBUTION}-tester"
96-
echo
97-
echo "---------------------------------------------------"
9896
exit -1
9997
fi
10098
finally:
99+
- |
100+
echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------"
101+
echo
102+
docker logs "${OS_DISTRIBUTION}-app" || true
103+
echo
104+
echo "---------------------------------------------------"
105+
echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------"
106+
echo
107+
docker logs "${OS_DISTRIBUTION}-tester" || true
108+
echo
109+
echo "---------------------------------------------------"
101110
- echo "Cleaning up..."
102111
- docker stop "${OS_DISTRIBUTION}-app" || true
103112
- docker rm --force "${OS_DISTRIBUTION}-app" || true

aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.amazonlinux.yml renamed to aws-lambda-java-runtime-interface-client/test/integration/codebuild/buildspec.os.amazonlinux.1.yml

+24-16
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,12 @@ batch:
99
static:
1010
ignore-failure: false
1111
env:
12-
type: LINUX_CONTAINER
1312
privileged-mode: true
1413
dynamic:
1514
env:
1615
variables:
1716
DISTRO_VERSION:
1817
- "1"
19-
- "2"
2018
RUNTIME_VERSION:
2119
- "openjdk8"
2220
phases:
@@ -42,12 +40,22 @@ phases:
4240
- echo "Extracting and including Runtime Interface Emulator"
4341
- SCRATCH_DIR=".scratch"
4442
- mkdir "${SCRATCH_DIR}"
45-
- tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/aws-lambda-rie.tar.gz --directory "${SCRATCH_DIR}"
43+
- ARCHITECTURE=$(arch)
44+
- >
45+
if [[ "$ARCHITECTURE" == "x86_64" ]]; then
46+
RIE="aws-lambda-rie"
47+
elif [[ "$ARCHITECTURE" == "aarch64" ]]; then
48+
RIE="aws-lambda-rie-arm64"
49+
else
50+
echo "Architecture $ARCHITECTURE is not currently supported."
51+
exit 1
52+
fi
53+
- tar -xvf aws-lambda-java-runtime-interface-client/test/integration/resources/${RIE}.tar.gz --directory "${SCRATCH_DIR}"
4654
- >
4755
cp "aws-lambda-java-runtime-interface-client/test/integration/docker/Dockerfile.function.${OS_DISTRIBUTION}" \
4856
"${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp"
4957
- >
50-
echo "COPY ${SCRATCH_DIR}/aws-lambda-rie /usr/bin/aws-lambda-rie" >> \
58+
echo "COPY ${SCRATCH_DIR}/${RIE} /usr/bin/${RIE}" >> \
5159
"${SCRATCH_DIR}/Dockerfile.function.${OS_DISTRIBUTION}.tmp"
5260
- echo "Building image ${IMAGE_TAG}"
5361
- >
@@ -64,12 +72,11 @@ phases:
6472
- >
6573
docker run \
6674
--detach \
67-
-e "JAVA_BINARY_LOCATION=${JAVA_BINARY_LOCATION}" \
6875
--name "${OS_DISTRIBUTION}-app" \
6976
--network "${OS_DISTRIBUTION}-network" \
7077
--entrypoint="" \
7178
"${IMAGE_TAG}" \
72-
sh -c '/usr/bin/aws-lambda-rie ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App'
79+
sh -c "/usr/bin/${RIE} ${JAVA_BINARY_LOCATION} -jar ./HelloWorld-1.0.jar helloworld.App"
7380
- sleep 2
7481
- >
7582
docker run \
@@ -85,19 +92,20 @@ phases:
8592
echo "Response: ${actual}"
8693
if [[ "$actual" != "$expected" ]]; then
8794
echo "fail! runtime: $RUNTIME - expected output $expected - got $actual"
88-
echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------"
89-
echo
90-
docker logs "${OS_DISTRIBUTION}-app"
91-
echo
92-
echo "---------------------------------------------------"
93-
echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------"
94-
echo
95-
docker logs "${OS_DISTRIBUTION}-tester"
96-
echo
97-
echo "---------------------------------------------------"
9895
exit -1
9996
fi
10097
finally:
98+
- |
99+
echo "---------Container Logs: ${OS_DISTRIBUTION}-app----------"
100+
echo
101+
docker logs "${OS_DISTRIBUTION}-app" || true
102+
echo
103+
echo "---------------------------------------------------"
104+
echo "--------Container Logs: ${OS_DISTRIBUTION}-tester--------"
105+
echo
106+
docker logs "${OS_DISTRIBUTION}-tester" || true
107+
echo
108+
echo "---------------------------------------------------"
101109
- echo "Cleaning up..."
102110
- docker stop "${OS_DISTRIBUTION}-app" || true
103111
- docker rm --force "${OS_DISTRIBUTION}-app" || true

0 commit comments

Comments
 (0)