Amazon web services Scala AWS大小限制

Amazon web services Scala AWS大小限制,amazon-web-services,scala,aws-lambda,Amazon Web Services,Scala,Aws Lambda,我一直在尝试使用SBT中的shadeRules将scala lambda的jar文件缩小到最小大小。目前,AWS要求震击器不大于50megs 这个问题真的出现了,因为我正在尝试访问phoenix数据库,很多课程都会出现,我不断地遇到50meg大小的限制,然后寻找要删除的文件(zap) 我觉得必须有一个更加自动化的流程来完成这项工作。我是不是错过了什么?现在我更新我的jar,上传到AWS,获取我丢失的文件的错误并添加它们(几乎我所有的着色器都保留了,然后zap删除那些库中不需要的文件)。这是一个缓

我一直在尝试使用SBT中的shadeRules将scala lambda的jar文件缩小到最小大小。目前,AWS要求震击器不大于50megs

这个问题真的出现了,因为我正在尝试访问phoenix数据库,很多课程都会出现,我不断地遇到50meg大小的限制,然后寻找要删除的文件(zap)

我觉得必须有一个更加自动化的流程来完成这项工作。我是不是错过了什么?现在我更新我的jar,上传到AWS,获取我丢失的文件的错误并添加它们(几乎我所有的着色器都保留了,然后zap删除那些库中不需要的文件)。这是一个缓慢、漫长、乏味的过程

谢谢

谢谢

编辑:

如所问,以下是我添加的库:

libraryDependencies += "software.amazon.awssdk" % "ec2" % "2.5.60"
libraryDependencies += "com.amazonaws" % "aws-lambda-java-core" % "1.2.0"
libraryDependencies += "com.amazonaws" % "aws-lambda-java-events" % "2.1.0"
libraryDependencies += "com.amazonaws" % "aws-java-sdk-dynamodb" % "1.11.313"
libraryDependencies += "org.scalikejdbc" %% "scalikejdbc" % "3.4.0"
libraryDependencies += "org.apache.phoenix" % "phoenix-core" % "4.14.3-HBase-1.4"
libraryDependencies += "org.apache.hbase" % "hbase-common" % "1.4.10"
libraryDependencies += "org.apache.hbase" % "hbase-server" % "1.4.10"
libraryDependencies += "io.spray" %%  "spray-json" % "1.3.2"
libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.5" % "test"
libraryDependencies += "org.scala-lang" % "scala-library" % "2.12.12"

尝试通过S3上传,实际限制为250 MB未压缩。 创建S3部署桶

sam package \
        --profile ${PROFILE} \
        --region ${REGION} \
        --template-file template.yaml \
        --s3-bucket ${S3_BUCKET} \
        --output-template-file ./build/package.yaml
注意:尽量减小冷启动期间所反映的包装尺寸。 如果包中包含一些额外的依赖项,请再次验证该包

如果您列出整个依赖关系树,我们可以给您更好的提示。
sbt“检查树清理”

您能用您的
build.sbt
更新您的问题吗?您可能正在打包AWS已经提供的一些库。您是否考虑删除事件库?您需要解析传入事件(我从DynamoDB猜测),但这意味着您不会依赖SDK的version1。50MB限制仅用于直接上传到lambda。如果您的大小超过直接上载限制,则可以上载到S3,然后从S3发布lambda。看,我正在做两个非常简单的查询,一个在DynamoDb中,一个在Phoenix中。最复杂的部分是这个需要的文件量(hbase服务器只是为了查询!?)Dynamodb和Phoenix之间的关系是什么?如何部署lambda?我认为最终真正的答案不是将Scala与Lambdas一起使用。@Limey Well我们使用java Lambdas,最大大小为20 MB,它工作得非常好,我相信Scala也应该如此,尝试使用nodejs或python获得较小的包size@Limey如果您在没有实际代码的情况下与所有依赖项共享一个示例项目,我相信会有更好的方向。
sam deploy \
    --profile ${PROFILE} \
    --region ${REGION} \
    --template-file ./build/package.yaml \
    --stack-name ${APPLICATION}-lambda \
    --capabilities CAPABILITY_NAMED_IAM