def run()

in imageCopier/src/main/scala/com/gu/imageCopier/LambdaEntrypoint.scala [25:50]


  def run(input: SNSEvent, context: Context): Unit = {
    println("Running AMIgo copier")
    val messages = SNSMessage.fromLambdaEvent(input)
    println(s"Got messages: $messages")
    val amisAttempt = Attempt.traverseWithFailures(messages) { message =>
      for {
        kmsKeyArn <- Attempt.fromOption(
          configuration.kmsKeyArn,
          ConfigurationFailure("KMS key ARN not configured")
        )
        encryptedTagValue <- Attempt.fromOption(
          configuration.encryptedTagValue,
          ConfigurationFailure("Encrypted tag value not configured")
        )
        amiEvent <- AmiEvent.fromJsonString(message.content)
        _ <-
          if (amiEvent.targetAccounts.contains(configuration.ownAccountNumber))
            Attempt.Right(())
          else Attempt.Left(MessageNotForUsFailure)
        copiedAmi <- AmiActions.copyAmi(amiEvent, kmsKeyArn)
        _ <- AmiActions.tagAmi(amiEvent, encryptedTagValue, copiedAmi)
      } yield copiedAmi
    }
    val amis = Await.result(amisAttempt.asFuture, Duration.Inf)
    println(s"Completed: $amis")
  }