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")
}