AWS::AppConfig::HostedConfigurationVersion
Create a new configuration in the AWS AppConfig hosted configuration store. Configurations must be 1 MB or smaller. The AWS AppConfig hosted configuration store provides the following benefits over other configuration store options.
-
You don't need to set up and configure other services such as Amazon Simple Storage Service (Amazon S3) or Parameter Store.
-
You don't need to configure AWS Identity and Access Management (IAM) permissions to use the configuration store.
-
You can store configurations in any content type.
-
There is no cost to use the store.
-
You can create a configuration and add it to the store when you create a configuration profile.
Syntax
To declare this entity in your AWS CloudFormation template, use the following syntax:
JSON
{ "Type" : "AWS::AppConfig::HostedConfigurationVersion", "Properties" : { "ApplicationId" :
String
, "ConfigurationProfileId" :String
, "Content" :String
, "ContentType" :String
, "Description" :String
, "LatestVersionNumber" :Integer
, "VersionLabel" :String
} }
YAML
Type: AWS::AppConfig::HostedConfigurationVersion Properties: ApplicationId:
String
ConfigurationProfileId:String
Content:String
ContentType:String
Description:String
LatestVersionNumber:Integer
VersionLabel:String
Properties
ApplicationId
-
The application ID.
Required: Yes
Type: String
Pattern:
[a-z0-9]{4,7}
Update requires: Replacement
ConfigurationProfileId
-
The configuration profile ID.
Required: Yes
Type: String
Pattern:
[a-z0-9]{4,7}
Update requires: Replacement
Content
-
The configuration data, as bytes.
Note
AWS AppConfig accepts any type of data, including text formats like JSON or TOML, or binary formats like protocol buffers or compressed data.
Required: Yes
Type: String
Update requires: Replacement
ContentType
-
A standard MIME type describing the format of the configuration content. For more information, see Content-Type
. Required: Yes
Type: String
Minimum:
1
Maximum:
255
Update requires: Replacement
Description
-
A description of the configuration.
Required: No
Type: String
Minimum:
0
Maximum:
1024
Update requires: Replacement
LatestVersionNumber
-
An optional locking token used to prevent race conditions from overwriting configuration updates when creating a new version. To ensure your data is not overwritten when creating multiple hosted configuration versions in rapid succession, specify the version number of the latest hosted configuration version.
Required: No
Type: Integer
Update requires: Replacement
VersionLabel
-
A user-defined label for an AWS AppConfig hosted configuration version.
Required: No
Type: String
Pattern:
^$|.*[^0-9].*
Minimum:
0
Maximum:
64
Update requires: Replacement
Return values
Ref
When you pass the logical ID of this resource to the intrinsic Ref
function, Ref
returns the version number.
Fn::GetAtt
VersionNumber
-
The configuration version.
Examples
AWS AppConfig feature flag
The following example creates an AWS AppConfig configuration profile of type
HostedConfigurationVersion
. The feature flag created by this example
enables cryptocurrency at checkout. AWS AppConfig stores the configuration data
for this profile in the AWS AppConfig hosted configuration store.
JSON
{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::LanguageExtensions", "Resources": { "MySuperCoolApp": { "Type": "AWS::AppConfig::Application", "Properties": { "Name": "MySuperCoolApp" } }, "MyFeatureFlags": { "Type": "AWS::AppConfig::ConfigurationProfile", "Properties": { "Name": "MyFeatureFlags", "ApplicationId": "MySuperCoolApp", "LocationUri": "hosted", "Type": "AWS.AppConfig.FeatureFlags" } }, "MyFeatureFlagsVersion": { "Type": "AWS::AppConfig::HostedConfigurationVersion", "Properties": { "ApplicationId": "MySuperCoolApp", "ConfigurationProfileId": "MyFeatureFlags", "ContentType": "application/json", "VersionLabel": "v1.0.0", "Content": { "Fn::ToJsonString": { "flags": { "allow-cryptocurrency-at-checkout": { "attributes": { "allowed-currency": { "constraints": { "elements": { "enum": [ "BTC", "ETH", "XRP" ], "type": "string" }, "type": "array" } }, "bitcoin-discount-percentage": { "constraints": { "maximum": 25, "minimum": 0, "type": "number" } } }, "name": "Allow Cryptocurrency at Checkout" } }, "values": { "allow-cryptocurrency-at-checkout": { "allowed-currency": [ "BTC", "ETH" ], "bitcoin-discount-percentage": 5, "enabled": true } }, "version": "1" } } } } } }
YAML
AWSTemplateFormatVersion: 2010-09-09 Transform: 'AWS::LanguageExtensions' Resources: MySuperCoolApp: Type: 'AWS::AppConfig::Application' Properties: Name: MySuperCoolApp MyFeatureFlags: Type: 'AWS::AppConfig::ConfigurationProfile' Properties: Name: MyFeatureFlags ApplicationId: !Ref MySuperCoolApp LocationUri: hosted Type: AWS.AppConfig.FeatureFlags MyFeatureFlagsVersion: Type: 'AWS::AppConfig::HostedConfigurationVersion' Properties: ApplicationId: !Ref MySuperCoolApp ConfigurationProfileId: !Ref MyFeatureFlags ContentType: application/json VersionLabel: "v1.0.0" Content: Fn::ToJsonString: flags: allow-cryptocurrency-at-checkout: attributes: allowed-currency: constraints: elements: enum: - BTC - ETH - XRP type: string type: array bitcoin-discount-percentage: constraints: maximum: 25 minimum: 0 type: number name: Allow Cryptocurrency at Checkout values: allow-cryptocurrency-at-checkout: allowed-currency: - BTC - ETH bitcoin-discount-percentage: 5 enabled: true version: '1'
AWS AppConfig hosted configuration
The following example creates an AWS AppConfig configuration profile named
MyTestProfile
for an application called MyApplication
. AWS AppConfig stores the configuration data for this profile in the AWS AppConfig hosted configuration store.
JSON
{ "Resources": { "DependentApplication": { "Type": "AWS::AppConfig::Application", "Properties": { "Name": "MyApplication" } }, "DependentConfigurationProfile": { "Type": "AWS::AppConfig::ConfigurationProfile", "Properties": { "ApplicationId": "DependentApplication", "Name": "MyTestProfile", "LocationUri": "hosted" } }, "BasicHostedConfigurationVersion": { "Type": "AWS::AppConfig::HostedConfigurationVersion", "Properties": { "ApplicationId": "DependentApplication", "ConfigurationProfileId": "DependentConfigurationProfile", "Description": "A sample hosted configuration version", "Content": "My hosted configuration content", "ContentType": "text/plain" } } } }
YAML
Resources: DependentApplication: Type: AWS::AppConfig::Application Properties: Name: "MyApplication" DependentConfigurationProfile: Type: AWS::AppConfig::ConfigurationProfile Properties: ApplicationId: !Ref DependentApplication Name: "MyTestProfile" LocationUri: "hosted" BasicHostedConfigurationVersion: Type: AWS::AppConfig::HostedConfigurationVersion Properties: ApplicationId: !Ref DependentApplication ConfigurationProfileId: !Ref DependentConfigurationProfile Description: 'A sample hosted configuration version' Content: 'My hosted configuration content' ContentType: 'text/plain'