in src/main/scala/ophan/geoip/db/refresher/Lambda.scala [22:43]
private def retrieveAndStore(maxmindDatabaseEdition: MaxmindDatabaseEdition) = {
(for {
downloadedArchiveFile <- MaxmindArchiveDownloader.download(maxmindDatabaseEdition)
_ <- maxmindDatabaseEdition.usingDatabaseStreamFrom(downloadedArchiveFile) { streamOfKnownSize =>
val s3Key = s"geoip/${maxmindDatabaseEdition.databaseFileName}"
val objectRequest = PutObjectRequest.builder.bucket("ophan-dist").key(s3Key)
.grantRead(s"id=$DeployToolsAWSAccountCanonicalUserId") // so TeamCity can read file for CI tests
.build
logger.info(Map(
"databaseFile.size" -> streamOfKnownSize.size,
"databaseFile.s3.destination" -> s3Key
), s"Starting upload of ${streamOfKnownSize.size} bytes to S3 ($objectRequest)")
val putObjectResponse = AWS.S3.putObject(objectRequest, streamOfKnownSize.asAwsSdkRequestBody())
logger.info(Map(
"databaseFile.s3.versionId" -> putObjectResponse.versionId
), s"Upload complete!")
}
} yield ()) match {
case Failure(err) => logger.error(s"Failure to retrieve url", err)
case _:Success[_] =>
}