【发布时间】:2020-08-18 05:21:55
【问题描述】:
我想在 aws lambda 上部署我的 java 函数
我拿了这份文档https://docs.aws.amazon.com/lambda/latest/dg/java-package.html
这是我的build.gradle 文件
plugins {
id 'java'
id 'org.jetbrains.kotlin.jvm' version '1.3.61'
}
group 'com.xxx'
version '1.0'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
implementation "org.jetbrains:annotations:16.0.2"
implementation 'com.amazonaws:aws-lambda-java-core:1.2.0'
implementation 'com.amazonaws:aws-lambda-java-events:2.2.7'
implementation 'com.google.code.gson:gson:2.8.6'
compile group: 'org.bytedeco', name: 'javacv-platform', version: '1.5.2'
runtimeOnly 'com.amazonaws:aws-lambda-java-log4j2:1.1.0'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
jar {
manifest {
attributes 'Main-Class': 'Main'
}
}
task fatJar(type: Jar) {
manifest {
attributes 'Implementation-Title': 'Gradle Jar File Example',
'Implementation-Version': archiveVersion,
'Main-Class': 'Main'
}
baseName = project.name + '-all'
from sourceSets.main.output
dependsOn configurations.runtimeClasspath
from {
configurations.runtimeClasspath.findAll { it.name.endsWith('jar') }.collect { zipTree(it) }
}
with jar
}
task buildZip(type: Zip) {
manifest {
attributes (
'Implementation-Title': 'AWS Handler',
'Implementation-Version': archiveVersion,
'Main-Class': 'AWSHandler'
)
}
from compileJava
from processResources
into('lib') {
from configurations.runtimeClasspath
}
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinOptions.jvmTarget = "1.8"
}
所以我正在运行 gradle buildZip 来构建我的 zip,实现 RequestHandler 的 aws 类在 src/main/java/AWSHandler.java 中
一旦命令成功结束,我就有一个 710MB 的 zip 文件,这是巨大的!!! 当我解压缩文件时,我可以看到有很多库可以支持很多操作系统
流动这个文档https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html 似乎java8 函数正在Amazon Linux 上运行
所以我可以清理我的 zip 以获得这个操作系统
我可以用 gradle 来做,还是应该创建一个额外的脚本来清理我的文件?
【问题讨论】:
-
我们可以减少依赖项的数量,如下所述:github.com/bytedeco/javacpp-presets/wiki/…
标签: java amazon-web-services gradle aws-lambda