app/AppLoader.scala (21 lines of code) (raw):

import com.gu.conf.{ConfigurationLoader, SSMConfigurationLocation} import com.gu.{AppIdentity, AwsIdentity, DevIdentity} import config.AWS._ import play.api.ApplicationLoader.Context import play.api._ class AppLoader extends ApplicationLoader { def load(context: Context): Application = { startLogging(context) val identity: AppIdentity = AppIdentity.whoAmI(defaultAppName, credentials).getOrElse(DevIdentity(defaultAppName)) val loadedConfig = ConfigurationLoader.load(identity, credentials) { // we use `defaultAppName` here instead of `aws.app` because the app name has diverged in EC2 tags and SSM case aws:AwsIdentity => SSMConfigurationLocation(s"/${aws.stack}/$defaultAppName/${aws.stage}", aws.region) case _: DevIdentity => SSMConfigurationLocation(s"/$defaultStack/$defaultAppName/DEV", defaultRegion.id()) } new AppComponents(context.copy(initialConfiguration = Configuration(loadedConfig).withFallback(context.initialConfiguration)), identity).application } private def startLogging(context: Context): Unit = { LoggerConfigurator(context.environment.classLoader).foreach { _.configure(context.environment) } } }