0

У меня есть приложение для воспроизведения scala, которое я пытаюсь запустить как функцию лямбда. Он получает уведомление из ведра s3 для нового объекта, а затем приобретает объект и работает над ним. Он отлично работает, когда я запускаю тестовый тест S3, а также на предмет получения данных о ведрах из события s3. Однако это не удается, когда я пытаюсь получить объект на основе информации в событии.Проверка подлинности S3 внутри функции лямбда/Не удалось инициализировать класс com.amazonaws.ClientConfiguration

private val awsCredentialsProvider = new DefaultAWSCredentialsProviderChain() 
private val amazonS3Client = new AmazonS3Client(awsCredentialsProvider) 
private val bucketName = play.Play.application.configuration.getString("aws.s3.BUCKET") 
val s3object = amazonS3Client.getObject(new GetObjectRequest(bucket, objectKey)) 

и это

val amazonS3Client = new AmazonS3Client() 

Но я получаю ошибку ниже.

java.lang.ExceptionInInitializerError 
at com.amazonaws.util.VersionInfoUtils.userAgent(VersionInfoUtils.java:139) 
at com.amazonaws.util.VersionInfoUtils.initializeUserAgent(VersionInfoUtils.java:134) 
at com.amazonaws.util.VersionInfoUtils.getUserAgent(VersionInfoUtils.java:95) 
at com.amazonaws.ClientConfiguration.<clinit>(ClientConfiguration.java:60) 
at com.amazonaws.ClientConfigurationFactory.getDefaultConfig(ClientConfigurationFactory.java:46) 
at com.amazonaws.ClientConfigurationFactory.getConfig(ClientConfigurationFactory.java:35) 
at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:339) 
at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:279) at controllers.Main.getSourceBuckets(Main.scala:24) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) Caused by: java.lang.IllegalArgumentException at com.amazonaws.internal.config.InternalConfig.loadfrom(InternalConfig.java:235) at com.amazonaws.internal.config.InternalConfig.load(InternalConfig.java:249) at com.amazonaws.internal.config.InternalConfig$Factory.<clinit>(InternalConfig.java:304) 

Could not initialize class com.amazonaws.ClientConfiguration: 
    java.lang.NoClassDefFoundError java.lang.NoClassDefFoundError: Could not initialize class com.amazonaws.ClientConfiguration 
    at com.amazonaws.ClientConfigurationFactory.getDefaultConfig(ClientConfigurationFactory.java:46) 
    at com.amazonaws.ClientConfigurationFactory.getConfig(ClientConfigurationFactory.java:35) at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:339) at com.amazonaws.services.s3.AmazonS3Client.<init>(AmazonS3Client.java:279) 
    at models.TabSpaceFileParser$.downloadAllFileFromS32(TabSpaceFileParser.scala:62) 
    at controllers.ParserTask$$anonfun$exec$1.apply(ParserTask.scala:49) 
    at controllers.ParserTask$$anonfun$exec$1.apply(ParserTask.scala:34) at controllers.ParserTask.WithApplication(ParserTask.scala:60) 
    at controllers.ParserTask.exec(ParserTask.scala:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) 

ответ

0

Я нашел ошибку в файле built.sbt где сборка содержал линию

assemblyMergeStrategy in assembly := { 
    case PathList("javax", "servlet", [email protected]_*) => MergeStrategy.first 
    case PathList([email protected]_*) if ps.last endsWith ".html" => MergeStrategy.first 
    case PathList([email protected]_*) if ps.last endsWith ".properties" => MergeStrategy.first 
    case PathList([email protected]_*) if ps.last endsWith ".xml" => MergeStrategy.first 
    case PathList([email protected]_*) if ps.last endsWith ".types" => MergeStrategy.first 
    case PathList([email protected]_*) if ps.last endsWith ".class" => MergeStrategy.first 
    case PathList([email protected]_*) if ps.last endsWith ".json" => MergeStrategy.discard 
    case "application.conf" => MergeStrategy.concat 
    case "Unwanted.Txt" => MergeStrategy.discard 
    case x => (assemblyMergeStrategy in assembly).value(x) 
} 

Сняв

case PathList([email protected]_*) if ps.last endsWith ".json" => MergeStrategy.discard 

Проблема была решена. По-видимому, он отбрасывал некоторые важные файлы конфигурации json из зависимостей aws, которые вызывают указанную выше ошибку.

 Смежные вопросы

  • Нет связанных вопросов^_^