Home

Awesome

vertx-config-aws-ssm

A Vert.X (v3) Config Store backed by AWS SSM.

Built on top of the vertx-config project.

See the Maven Repository, and the Snapshot index.

AWS Configuration Store

The AWS Configuration Store is an extension to the Vert.x Configuration Retriever to retrieve configuration from the AWS EC2 SSM Parameter Store.

Using the AWS Configuration Store

To use the AWS Configuration, add the following dependency to the dependencies section of your build descriptor:

Maven (in your pom.xml, under <dependencies>):

<dependency>
  <groupId>com.finovertech</groupId>
  <artifactId>vertx-config-aws-ssm</artifactId>
  <version>0.2.0</version>
</dependency>
<dependency>
  <groupId>io.vertx</groupId>
  <artifactId>vertx-config</artifactId>
  <version>3.5.0</version>
</dependency>

if the version you are accessing is a snapshot, under <repositories>:

<repository>
    <id>oss.sonatype.org-snapshot</id>
    <url>http://oss.sonatype.org/content/repositories/snapshots</url>
    <releases><enabled>false</enabled></releases>
    <snapshots><enabled>true</enabled></snapshots>
</repository>

Gradle (in your build.gradle, under dependencies):

compile 'io.vertx:vertx-config:3.5.0'
compile 'com.finovetech:vertx-config-aws-ssm:0.3.0'

if the version you are accessing is a snapshot, under repositories:

maven { url "https://oss.sonatype.org/content/repositories/snapshots" }

Configuring the store

Once added to your classpath or dependencies, you need to configure the ConfigRetriever to use this store.

ConfigStoreOptions aws = new ConfigStoreOptions()
    .setType("aws-ssm")
    .setConfig(new JsonObject()
        .put("path", "/yourBasePath")
        .put("recursive", false)
        .put("decrypt", true)
        .put("removePathPrefix", true)

ConfigRetriever retriever = ConfigRetriever.create(vertx,
    new ConfigRetrieverOptions().addStore(aws));

The configuration requires:

Optionally, you can also configure whether to get parameters from the store recursively (recursive boolean, true by default), and whether to decrypt encrypted values (decrypt boolean, true by default). Results from SSM will be full path by default (path is /test, then param name will be /test/param1). If you want the path directory trimmed from the result set, then specify removePathPrefix to be true and the path prefix will be chopped off (new name of param1).

You will also need to configure your default AWS credentials and region. That can be done in your pom.xml file or your build.gradle file, or before you create the ConfigRetriever in your code.

How does it work

If the path exists within your AWS SSM parameter store, the configuration store will read all of the values under that path by calling the AWS API with your default credentials and region.

If the configuration store cannot find the path or cannot connect to AWS, the configuration retrieval fails.

Periodically, AWS is polled to check if the configuration has changed.