AppConfig — AWS AppConfig
Quick start, the application/environment/profile/hosted-version hierarchy, the REST-JSON bindings and pagination, and why an AppConfig call must be signed as appconfig.
The AppConfig control plane — applications, environments, profiles and hosted configuration versions — with the runtime data plane in AppConfigData.
Status: ⚠️ Partial
Quick start
export AWS_ENDPOINT_URL=http://localhost:4566
APP=$(aws appconfig create-application --name my-app --query Id --output text)
aws appconfig create-environment --application-id "$APP" --name dev
PROF=$(aws appconfig create-configuration-profile --application-id "$APP" \
--name cfg --location-uri hosted --query Id --output text)
echo '{"featureX":true}' > cfg.json
aws appconfig create-hosted-configuration-version --application-id "$APP" \
--configuration-profile-id "$PROF" --content-type application/json \
--content fileb://cfg.json version.json
Any credentials work; with none configured, run eval "$(overcast env)" first
— see Using AWS SDKs and CLI.
What works
| Area | Behaviour |
|---|---|
| Resources | Applications, environments, configuration profiles and hosted configuration versions, in the hierarchy AWS models |
| Protocol | REST-JSON at AWS’s own paths — POST /applications, POST /applications/{ApplicationId}/environments, and so on. There is no X-Amz-Target namespace |
| Hosted versions | The configuration travels as the HTTP payload, with the metadata on request and response headers — see below |
| Tagging | /tags/{ResourceArn}, dispatched on the ARN, so an arn:aws:appconfig:… ARN reaches AppConfig’s own tag store |
| Pagination | max_results and next_token query parameters, answering { "Items": [...], "NextToken": "..." } |
How a hosted version is carried
CreateHostedConfigurationVersion requires a Content-Type, and takes
Description and VersionLabel as request headers. The response echoes
Application-Id, Configuration-Profile-Id, Version-Number, Description,
Content-Type and VersionLabel, as AWS binds them. Latest-Version-Number
gives optimistic concurrency, answering 409 on a mismatch.
Differences from AWS
| Area | On AWS | Overcast |
|---|---|---|
| Region scoping | Region-scoped | Resources are not region-scoped — an application created in one region is visible in another |
| Deployments and deployment strategies | Percentage-based rollout over time | Not modelled. A hosted version is readable through AppConfigData as soon as it is created — nothing has to be deployed first |
| Updating an environment or a profile | Supported | Only UpdateApplication exists; the other update operations answer 501 |
| Hosted version size | Same cap | Capped at 1 MB, answering PayloadTooLargeException |
| Other operations AWS models | Implemented | A JSON 501 Not Implemented |
Gotchas
Important
/applications is shared with Service Catalog AppRegistry,
which models the same tree. Overcast picks the service from the SigV4 credential
scope, so an AppConfig call must be signed as appconfig. An unsigned caller, or
one whose scope cannot be parsed, reaches AppRegistry; a scope that mismatches
gets 403 InvalidSignatureException. Every AWS SDK and the CLI sign correctly.
Operations
All 20 listed operations are implemented. Per-operation status, notes and AWS API links: AppConfig operations.
Related
- AppConfigData — the runtime data plane that reads these configurations
- AppRegistry — the other service on
/applications - All service pages
- Service names and state overrides
- AWS API reference