def getImagesAndEbsSnapshots()

in imageCopier/src/main/scala/com/gu/imageCopier/AmiActions.scala [55:80]


  def getImagesAndEbsSnapshots(
      amis: List[Ami]
  )(implicit ec2Client: Ec2Client): Attempt[List[(String, List[String])]] = {
    if (amis.nonEmpty) {
      Attempt.catchNonFatal {
        val request = DescribeImagesRequest.builder
          .imageIds(amis.map(_.id).asJava)
          .build()
        println(
          s"Getting list of images and EBS snapshots with request $request"
        )
        val response = ec2Client.describeImages(request)
        println(s"Raw result: $response")
        val ids = response.images.asScala.map { image =>
          image.imageId -> image.blockDeviceMappings.asScala.toList
            .flatMap(mapping => Option(mapping.ebs).map(_.snapshotId))
        }
        println(s"List of AMIs and snapshots: $ids")
        ids.toList
      } { case ace: SdkServiceException =>
        AwsSdkFailure(ace)
      }
    } else {
      Attempt.Right(Nil)
    }
  }