1+ # Argument for Java version, defaulting to 11
2+ ARG JAVA_VERSION=11
3+ # Use the specified version of Java
4+ FROM public.ecr.aws/lambda/java:${JAVA_VERSION}
5+
6+ # Argument for Java tool options for ssl
7+ ARG JAVA_TOOL_OPTIONS="-Djavax.net.ssl.trustStore=/var/lang/lib/security/cacerts"
8+ # Set the JAVA_TOOL_OPTIONS environment variable for Java 17
9+ ENV JAVA_TOOL_OPTIONS=${JAVA_TOOL_OPTIONS}
10+
11+ # Install necessary tools
12+ RUN yum update -y
13+ RUN yum install -y curl perl openssl11
14+
15+ ENV truststore=/var/lang/lib/security/cacerts
16+ ENV storepassword=changeit
17+
18+ # Download and process the RDS certificate
19+ RUN curl -sS "https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem" > ${LAMBDA_TASK_ROOT}/global-bundle.pem && \
20+ awk 'split_after == 1 {n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1}{print > "rds-ca-" n ".pem"}' < ${LAMBDA_TASK_ROOT}/global-bundle.pem
21+
22+ # Import certificates into the truststore
23+ RUN for CERT in rds-ca-*; do \
24+ alias=$(openssl11 x509 -noout -text -in $CERT | perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print' ) && \
25+ echo "Importing $alias" && \
26+ keytool -import -file ${CERT} -alias "${alias}" -storepass ${storepassword} -keystore ${truststore} -noprompt && \
27+ rm $CERT; \
28+ done
29+
30+ # Clean up
31+ RUN rm ${LAMBDA_TASK_ROOT}/global-bundle.pem
32+
33+ # Optional: List the content of the trust store (for verification)
34+ RUN echo "Trust store content is: " && \
35+ keytool -list -v -keystore "$truststore" -storepass ${storepassword} | grep Alias | cut -d " " -f3- | while read alias; do \
36+ expiry=$(keytool -list -v -keystore "$truststore" -storepass ${storepassword} -alias "${alias}" | grep Valid | perl -ne 'if(/until: (.*?)\n /) { print "$1\n "; }' ); \
37+ echo " Certificate ${alias} expires in '$expiry'" ; \
38+ done
39+
40+ # Set the connector version to use
41+ ARG VERSION=2022.47.1
42+
43+ # Copy all jar files from their respective target directories into the Lambda task root.
44+ # Notice how we substitute the version using ${VERSION}.
45+ COPY \
46+ athena-aws-cmdb/target/athena-aws-cmdb-${VERSION}.jar \
47+ athena-clickhouse/target/athena-clickhouse-${VERSION}.jar \
48+ athena-cloudera-hive/target/athena-cloudera-hive-${VERSION}.jar \
49+ athena-cloudera-impala/target/athena-cloudera-impala-${VERSION}.jar \
50+ athena-cloudwatch/target/athena-cloudwatch-${VERSION}.jar \
51+ athena-cloudwatch-metrics/target/athena-cloudwatch-metrics-${VERSION}.jar \
52+ athena-datalakegen2/target/athena-datalakegen2-${VERSION}.jar \
53+ athena-db2/target/athena-db2-${VERSION}.jar \
54+ athena-db2-as400/target/athena-db2-as400-${VERSION}.jar \
55+ athena-docdb/target/athena-docdb-${VERSION}.jar \
56+ athena-dynamodb/target/athena-dynamodb-${VERSION}.jar \
57+ athena-elasticsearch/target/athena-elasticsearch-${VERSION}.jar \
58+ athena-gcs/target/athena-gcs.zip \
59+ athena-google-bigquery/target/athena-google-bigquery-${VERSION}.jar \
60+ athena-hbase/target/athena-hbase-${VERSION}.jar \
61+ athena-hortonworks-hive/target/athena-hortonworks-hive-${VERSION}.jar \
62+ athena-kafka/target/athena-kafka-${VERSION}.jar \
63+ athena-msk/target/athena-msk-${VERSION}.jar \
64+ athena-mysql/target/athena-mysql-${VERSION}.jar \
65+ athena-neptune/target/athena-neptune-${VERSION}.jar \
66+ athena-oracle/target/athena-oracle-${VERSION}.jar \
67+ athena-postgresql/target/athena-postgresql-${VERSION}.jar \
68+ athena-redis/target/athena-redis-${VERSION}.jar \
69+ athena-redshift/target/athena-redshift-${VERSION}.jar \
70+ athena-saphana/target/athena-saphana.zip \
71+ athena-snowflake/target/athena-snowflake.zip \
72+ athena-sqlserver/target/athena-sqlserver-${VERSION}.jar \
73+ athena-synapse/target/athena-synapse-${VERSION}.jar \
74+ athena-teradata/target/athena-teradata-${VERSION}.jar \
75+ athena-timestream/target/athena-timestream-${VERSION}.jar \
76+ athena-tpcds/target/athena-tpcds-${VERSION}.jar \
77+ athena-udfs/target/athena-udfs-${VERSION}.jar \
78+ athena-vertica/target/athena-vertica-${VERSION}.jar \
79+ ${LAMBDA_TASK_ROOT}/
80+
81+ # Run a shell loop to iterate over all jar/zip files and extract each one.
82+ RUN for file in ${LAMBDA_TASK_ROOT}/*.jar ${LAMBDA_TASK_ROOT}/*.zip; do \
83+ jar xf "$file" && rm -f "$file" ; \
84+ done
0 commit comments