def provider()

in magenta-lib/src/main/scala/magenta/tasks/AWS.scala [1095:1132]


  def provider(
      keyRing: KeyRing,
      resources: DeploymentResources
  ): AwsCredentialsProviderChain =
    provider(keyRing, StsDeploymentResources.fromDeploymentResources(resources))

  def provider(
      keyRing: KeyRing,
      resources: StsDeploymentResources
  ): AwsCredentialsProviderChain = {
    val roleProvider: Option[AwsCredentialsProvider] =
      keyRing.apiCredentials.get("aws-role").collect {
        case credentials: ApiRoleCredentials =>
          getRoleCredentialsProvider(credentials.id, resources)
      }
    val staticProvider: Option[AwsCredentialsProvider] =
      keyRing.apiCredentials.get("aws").collect {
        case credentials: ApiStaticCredentials =>
          StaticCredentialsProvider.create(
            AwsBasicCredentials.create(credentials.id, credentials.secret)
          )
      }

    (roleProvider, staticProvider) match {
      case (Some(rp), _) =>
        logger.info(s"using role provider for deploy id: ${resources.deployId}")
        AwsCredentialsProviderChain.builder().credentialsProviders(rp).build()
      case (_, Some(sp)) =>
        logger.info(
          s"using static credentials provider for deploy id: ${resources.deployId}"
        )
        AwsCredentialsProviderChain.builder().credentialsProviders(sp).build()
      case _ =>
        throw new IllegalArgumentException(
          s"Could not find credentials provider"
        )
    }
  }