AWS-JAVA-SDK: Размер разархивированного файла должен быть меньше 262144000 байт

#java #scala #aws-lambda #aws-sdk #serverless

Вопрос:

Я пытаюсь развернуть единственную функцию lambda на AWS в scala с помощью SAM-CLI.

Это работает нормально, но когда я добавляю зависимость в свою сборку.sbt

 "com.amazonaws" % "aws-java-sdk" % "1.11.46"  

Сбой развертывания и возврат

 "Unzipped size must be smaller than 262144000 bytes (Service: Lambda, Status Code: 400, Request ID: 53eeb ab6-9377-4a37-b20b-9e55ccbebd72, Extended Request ID: null)"     

Моя функция заключается в

 def handle(request: APIGatewayProxyRequestEvent, context: Context): Response = {    println("handling %s %s, remaining time is %d ms".format(  request.getHttpMethod, request.getPath, context.getRemainingTimeInMillis) )    println(s"""environment = ${sys.env.getOrElse("env", "n/a")}""")   val name = request.getPathParameters.get("name")  Response(s"Hello, $namen", Map("Content-Type" -gt; "text/plain"))  }    case class Response(body: String, headers: Map[String,String], statusCode: Int = 200) {  def javaHeaders: java.util.Map[String, String] = headers.asJava `enter code here`}  

И мой шаблон.yaml выглядит так

 AWSTemplateFormatVersion: '2010-09-09'  Transform: AWS::Serverless-2016-10-31  Description: gt;-  A SAM CLI template for a single-endpoint Hello World Lambda function in Scala  Resources:  HelloScalaFunction:  Type: AWS::Serverless::Function  Properties:  FunctionName: HelloScala  Description: A simple AWS Lambda function in Scala  Runtime: java8  Handler: lambda.ApiGatewayProxyHandler  CodeUri: target/scala-2.12/hello-scala.jar  MemorySize: 512  Timeout: 15  Environment:  Variables:  env: staging  Events:  Hello:  Type: Api  Properties:  Path: /hello/{name}  Method: GET   Outputs:  ApiURL:  Description: "API endpoint URL for Prod environment"  Value: !Sub "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/hello/{name}"   

Кто-нибудь когда-нибудь испытывал нечто подобное? Как бы вы решили эту проблему?

Комментарии:

1. Вам действительно не следует добавлять весь пакет SDK AWS в свою функцию lambda. Добавьте библиотеку только для тех служб, которые вам нужны. Например, если вам нужно подключиться к базе данных DynamoDB, добавьте только службу DynamoDB. То же самое относится ко всем сервисам AWS — у каждого сервиса есть своя собственная библиотека