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" :Double
, "VersionLabel" :String
} }
YAML
Type: AWS::AppConfig::HostedConfigurationVersion Properties: ApplicationId:
String
ConfigurationProfileId:String
Content:String
ContentType:String
Description:String
LatestVersionNumber:Double
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 content of the configuration or the configuration 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: Double
Update requires: Replacement
VersionLabel
-
A user-defined label for an AWS AppConfig hosted configuration version.
Required: No
Type: String
Minimum:
1
Maximum:
64
Pattern:
.*[^0-9].*
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.
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'