php-aws-paramstore

Fetches configuration from AWS Parameter Store

MIT License

Downloads
8K
Stars
5
Committers
2

PHP AWS Parameter Store Config Provider

This library reads parameters from AWS Parameter Store. It supports a path prefix, an optional shared context and multiple profiles. Returns an multi dimensional array of string|int|float|bool. Integrates directly with zendframework/zend-config-aggregator.

Usage

use Aws\Ssm\SsmClient;
use PFlorek\AwsParameterStore\ConfigProvider;

// Provide bootstrap options
$options = [
    'prefix' => '/path/with/prefix', // required
    'name' => 'application-name', // required
    'profileSeparator' => '_', // default => '_'
    'sharedContext' => 'shared-context', // default => ''
];

// Configure AWS Systems Manager Client
$client = new SsmClient([
    'version' => 'latest',
    'region' => 'eu-central-1',
]);
// Or just pass AWS Client options
$client = [
    'version' => 'latest',
    'region' => 'eu-central-1',
];

// Get provided config with active profiles
$environments = ['test'];

// Create AWS Parameter Store Config Provider
$provider = new ConfigProvider($client, $options, $environments);
$config = $provider();

// e.g. returns
//
//array(1) {
//  ["service"]=>
//  array(3) {
//    ["host"]=>
//    string(5) "mysql"
//    ["port"]=>
//    int(3306)
//    ["enabled"]=>
//    bool(true)
//  }
//}

Configuration

parameter required default description
prefix yes none The path prefix of the parameters
name yes none The application name
profileSeparator no '_' The separator between application name and profile
sharedContext no '' The shared context for application with parameters under the same path prefix

Example

Given options:

  • prefix := /path/with/prefix
  • name := app-name
  • profileSeparator := _
  • sharedContext = shared
  • profiles = ['common', 'test']

Will search for parameters with path beginning with:

  1. /path/with/prefix/shared
  2. /path/with/prefix/app-name
  3. /path/with/prefix/app-name_common
  4. /path/with/prefix/app-name_test

Installation

Use Composer to install the package:

composer require pflorek/aws-paramstore

Authors

Contribute

Contributions are always welcome!

License

All contents of this package are licensed under the MIT license.