AppConfig
Floci supports AWS AppConfig and AppConfigData for local configuration management.
Management Plane (AppConfig)
The management plane allows you to create and manage applications, environments, configuration profiles, and hosted configuration versions.
Supported Operations
CreateApplicationGetApplicationListApplicationsDeleteApplicationCreateEnvironmentGetEnvironmentListEnvironmentsDeleteEnvironmentCreateConfigurationProfileGetConfigurationProfileListConfigurationProfilesDeleteConfigurationProfileCreateHostedConfigurationVersionGetHostedConfigurationVersionDeleteHostedConfigurationVersionCreateDeploymentStrategyGetDeploymentStrategyListDeploymentStrategiesDeleteDeploymentStrategyStartDeploymentGetDeploymentListDeployments(GET /applications/{ApplicationId}/environments/{EnvironmentId}/deployments)
Data Plane (AppConfigData)
The data plane is used by applications to retrieve the active configuration for an environment and profile.
Supported Operations
StartConfigurationSessionGetLatestConfiguration
Basic AWS.AppConfig.FeatureFlags profiles are returned in AWS retrieval-time JSON format.
Feature flags with variants are returned, as AWS does, in Amazon Ion (application/ion; type=AWS.AppConfig.FeatureFlags)
to a caller whose Accept header asks for it, as the AWS AppConfig Agent's does: the caller evaluates the variants'
rules against its own context (?flag=name&context=key=value). The layout is the one AWS documents for the agent's
local development mode:
each flag with variants is a list of its variants, and each basic flag in the same profile is its retrieval-time JSON
as a string. Rules of the form (eq $attribute "value") are
encoded; a profile with any other rule is returned unchanged, as JSON, and Floci logs a warning, as it does for a
caller that does not accept Ion.
Configuration
| Variable | Default | Description |
|---|---|---|
FLOCI_SERVICES_APPCONFIG_ENABLED |
true |
Enable or disable the AppConfig management plane |
FLOCI_SERVICES_APPCONFIGDATA_ENABLED |
true |
Enable or disable the AppConfigData retrieval plane |
Example Usage
1. Create an Application and Environment
# Create application
aws appconfig create-application --name my-app --endpoint-url http://localhost:4566
# Create environment
aws appconfig create-environment --application-id <app-id> --name dev --endpoint-url http://localhost:4566
2. Create a Hosted Configuration
# Create configuration profile
aws appconfig create-configuration-profile \
--application-id <app-id> \
--name my-profile \
--location-uri hosted \
--type AWS.Freeform \
--endpoint-url http://localhost:4566
# Create hosted configuration version
aws appconfig create-hosted-configuration-version \
--application-id <app-id> \
--configuration-profile-id <profile-id> \
--content "{\"foo\": \"bar\"}" \
--content-type application/json \
--endpoint-url http://localhost:4566
3. Deploy the Configuration
# Create immediate deployment strategy
aws appconfig create-deployment-strategy \
--name immediate \
--deployment-duration-in-minutes 0 \
--growth-factor 100 \
--final-bake-time-in-minutes 0 \
--endpoint-url http://localhost:4566
# Start deployment
aws appconfig start-deployment \
--application-id <app-id> \
--environment-id <env-id> \
--configuration-profile-id <profile-id> \
--configuration-version 1 \
--deployment-strategy-id <strategy-id> \
--endpoint-url http://localhost:4566
4. Retrieve Configuration via Data Plane
# Start configuration session
TOKEN=$(aws appconfigdata start-configuration-session \
--application-identifier <app-id> \
--environment-identifier <env-id> \
--configuration-profile-identifier <profile-id> \
--query "InitialConfigurationToken" --output text \
--endpoint-url http://localhost:4566)
# Get latest configuration
aws appconfigdata get-latest-configuration \
--configuration-token $TOKEN \
--endpoint-url http://localhost:4566