0

我有一個scala play應用程序,我試圖運行lambda函數。它從s3桶接收一個新對象的通知,然後獲取該對象並對其進行處理。當我運行S3 put測試以及從s3事件獲取桶詳細信息時,它工作正常。但是,當我嘗試根據事件中的信息獲取對象時,它會失敗。lambda函數內的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

我發現那裏的裝配載行

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 

的問題解決在built.sbt文件中的錯誤。顯然它丟棄了aws依賴關係導致上述錯誤的一些重要的json配置文件。

相關問題