scala-aws-params-reader


License

License

Categories

Categories

Scala Languages AWS Container PaaS Providers
GroupId

GroupId

io.policarp
ArtifactId

ArtifactId

scala-aws-params-reader_2.11
Last Version

Last Version

0.1.0
Release Date

Release Date

Type

Type

jar
Description

Description

scala-aws-params-reader
scala-aws-params-reader
Project URL

Project URL

https://github.com/kdrakon/scala-aws-params-reader
Project Organization

Project Organization

io.policarp
Source Code Management

Source Code Management

https://github.com/kdrakon/scala-aws-params-reader

Download scala-aws-params-reader_2.11

How to add to project

<!-- https://jarcasting.com/artifacts/io.policarp/scala-aws-params-reader_2.11/ -->
<dependency>
    <groupId>io.policarp</groupId>
    <artifactId>scala-aws-params-reader_2.11</artifactId>
    <version>0.1.0</version>
</dependency>
// https://jarcasting.com/artifacts/io.policarp/scala-aws-params-reader_2.11/
implementation 'io.policarp:scala-aws-params-reader_2.11:0.1.0'
// https://jarcasting.com/artifacts/io.policarp/scala-aws-params-reader_2.11/
implementation ("io.policarp:scala-aws-params-reader_2.11:0.1.0")
'io.policarp:scala-aws-params-reader_2.11:jar:0.1.0'
<dependency org="io.policarp" name="scala-aws-params-reader_2.11" rev="0.1.0">
  <artifact name="scala-aws-params-reader_2.11" type="jar" />
</dependency>
@Grapes(
@Grab(group='io.policarp', module='scala-aws-params-reader_2.11', version='0.1.0')
)
libraryDependencies += "io.policarp" % "scala-aws-params-reader_2.11" % "0.1.0"
[io.policarp/scala-aws-params-reader_2.11 "0.1.0"]

Dependencies

compile (2)

Group / Artifact Type Version
org.scala-lang : scala-library jar 2.11.8
com.amazonaws : aws-java-sdk-ssm jar 1.11.109

test (3)

Group / Artifact Type Version
org.scalatest : scalatest_2.11 jar 3.0.1
org.scalacheck : scalacheck_2.11 jar 1.13.4
com.github.japgolly.nyaya : nyaya-gen_2.11 jar 0.8.1

Project Modules

There are no modules declared in this project.

Scala AWS Params Reader

Build Status Maven Central

What?

A library that lets you read data from AWS' EC2 Systems Manager Parameter Store in a Scala-friendly way. It supports reading data in AWS' three formats - String, StringList, and SecureString - implicitly into Scala types.

Huh?

Example

  
package io.policarp.scala

import com.amazonaws.auth.DefaultAWSCredentialsProviderChain
import com.amazonaws.services.simplesystemsmanagement.AWSSimpleSystemsManagementClientBuilder
import io.policarp.scala.aws.params.reader.ParamReader
import io.policarp.scala.aws.params.reader.ListWriter._

object Test extends App {

  val client = AWSSimpleSystemsManagementClientBuilder.standard().withCredentials(new DefaultAWSCredentialsProviderChain()).build()
  val params = ParamReader(client)
  
  println(params.read[Long]("length"))
  // Right(42)
  
  println(params.readList[Long]("length"))
  // Left(InvalidParam(length)) because 'length' is actually a single parameter
  
  println(params.readList[String]("names"))
  // Right(List(Grayson,Jemma)))
  
  println(params.readList[String]("emails", listSeparator = Semicolon))
  // Right(List([email protected],[email protected])))  
  
  println(params.readSecure[String]("mysecret"))
  // Right(hunter2), where data is decrypted using Amazon's Key Management Service if your credentials allow for it
  
  println(params.readSecure[String]("yoursecret"))
  // Left(InvalidParam(yoursecret)) because 'yoursecret' does not exist OR your credentials don't allow for reading
}

Other Types?

Simply provide an implementation of the trait ValueWriter. It's basically:

  • String => ParamResult[A],
  • where ParamResult is an alias to Either[InvalidParam[A], A], and
  • InvalidParam is simply a case class wrapping the name of the invalid parameter.

Versions

Version
0.1.0