Прочитать файл свойств, расположенный в s3 в scala

#scala #amazon-s3

#scala #amazon-s3

Вопрос:

Я хочу прочитать файл .properties, расположенный в AWS s3, и использовать свойства в приложении scala.

Пожалуйста, дайте мне знать, есть ли какой-либо API для этого или другого способа решить эту проблему.

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

1. прочитайте содержимое файла из S3, как вы будете делать для любого другого файла в S3. Прочитайте свойства из этой строки содержимого, как вы будете делать для любой строки. Если вам нужна дополнительная помощь, пожалуйста, покажите некоторый код, приложив некоторые усилия.

2. Я бы попробовал parseURL из github.com/typesafehub/config

Ответ №1:

Вы можете сделать что-то вроде этого:

 import com.amazonaws.auth.DefaultAWSCredentialsProviderChain
import com.amazonaws.services.s3.model.S3Object
import com.amazonaws.services.s3.{AmazonS3Client, AmazonS3URI}
import scala.io.{BufferedSource, Source}

val credentialsProvider = new DefaultAWSCredentialsProviderChain()
val s3Client = new AmazonS3Client(credentialsProvider)
val uri: AmazonS3URI = new AmazonS3URI(filePath)
val s3Object: S3Object = s3Client.getObject(uri.getBucket, uri.getKey)

val source: BufferedSource = Source.fromInputStream(s3Object.getObjectContent)
try {
  source.mkString
} finally {
  source.close()
}
  

Как только вы получите исходный код, вы сможете делать из него все, что угодно. Проанализируйте его, используя TypeSafe Config, если он соответствует формату файла .hocon, или проанализируйте на основе любого формата файла.

Если он соответствует обозначению .hocon, вы можете проанализировать его следующим образом

 import com.typesafe.config.{Config, ConfigFactory}
val rawConfig: Config = ConfigFactory.parseString(contents)