Skip to content

SSM Parameter Store

CloudMock emulates AWS Systems Manager Parameter Store, providing hierarchical configuration storage with support for String, StringList, and SecureString parameter types.

OperationStatusNotes
PutParameterSupportedCreates or updates a parameter (String, StringList, SecureString)
GetParameterSupportedReturns a single parameter by name
GetParametersSupportedReturns multiple parameters by name list
GetParametersByPathSupportedReturns all parameters under a path prefix
DeleteParameterSupportedDeletes a single parameter
DeleteParametersSupportedDeletes multiple parameters
DescribeParametersSupportedReturns parameter metadata (no values)
Terminal window
# Put a parameter
curl -X POST http://localhost:4566 \
-H "X-Amz-Target: AmazonSSM.PutParameter" \
-H "Content-Type: application/x-amz-json-1.1" \
-d '{"Name": "/app/env", "Value": "production", "Type": "String"}'
# Get a parameter
curl -X POST http://localhost:4566 \
-H "X-Amz-Target: AmazonSSM.GetParameter" \
-H "Content-Type: application/x-amz-json-1.1" \
-d '{"Name": "/app/env"}'
import { SSMClient, PutParameterCommand, GetParametersByPathCommand } from '@aws-sdk/client-ssm';
const ssm = new SSMClient({
endpoint: 'http://localhost:4566',
region: 'us-east-1',
credentials: { accessKeyId: 'test', secretAccessKey: 'test' },
});
await ssm.send(new PutParameterCommand({
Name: '/service/db-host', Value: 'localhost', Type: 'String',
}));
await ssm.send(new PutParameterCommand({
Name: '/service/db-pass', Value: 'secret', Type: 'SecureString',
}));
const { Parameters } = await ssm.send(new GetParametersByPathCommand({
Path: '/service', WithDecryption: true,
}));
Parameters?.forEach(p => console.log(p.Name, '=', p.Value));
import boto3
ssm = boto3.client('ssm', endpoint_url='http://localhost:4566',
aws_access_key_id='test', aws_secret_access_key='test',
region_name='us-east-1')
ssm.put_parameter(Name='/service/db-host', Value='localhost', Type='String')
ssm.put_parameter(Name='/service/db-pass', Value='secret', Type='SecureString')
response = ssm.get_parameters_by_path(Path='/service', WithDecryption=True)
for param in response['Parameters']:
print(param['Name'], '=', param['Value'])
cloudmock.yml
services:
ssm:
enabled: true

No additional service-specific configuration is required.

  • SecureString type is accepted and stored; encryption is simulated (not cryptographically secure).
  • GetParametersByPath supports recursive path lookups.
  • Parameter versioning stores each PutParameter call as a new version; the latest version is returned by default.
  • GetParameterHistory is not implemented.
  • Advanced parameters (larger size, policies) are not distinguished from standard parameters.
CodeHTTP StatusDescription
ParameterNotFound400The specified parameter does not exist
ParameterAlreadyExists400The parameter already exists (when Overwrite is false)
InvalidKeyId400The KMS key ID is not valid
TooManyUpdates429Too many updates for this parameter