def awsOption[T]()

in app/conf/AWS.scala [30:68]


  def awsOption[T](f: => T): Option[T] = if (isAWS) Option(f) else None

  lazy val connectionRegion: Region = Region.EU_WEST_1

  lazy val EC2Client: Ec2Client = Ec2Client
    .builder()
    .region(connectionRegion)
    .overrideConfiguration(clientConfig)
    .build()

  type Tag = (String, String)

  object instance {
    lazy val id: Option[String] = awsOption(EC2MetadataUtils.getInstanceId)
    lazy val allTags: Map[String, String] =
      id.toSeq.flatMap { id =>
        val tagsResult = AWS.EC2Client.describeTags(
          DescribeTagsRequest.builder
            .filters(
              Filter.builder.name("resource-type").values("instance").build,
              Filter.builder.name("resource-id").values(id).build
            )
            .build
        )
        tagsResult.tags.asScala.map(td => td.key -> td.value)
      }.toMap

    lazy val customTags: MapView[String, String] =
      allTags.view.filterKeys(!_.startsWith("aws:"))
    lazy val identity: Option[Identity] = (
      customTags.get("Stack"),
      customTags.get("App"),
      customTags.get("Stage")
    ) match {
      case (Some(stack), Some(app), Some(stage)) =>
        Some(Identity(stack, app, stage))
      case _ => None
    }
  }