AWS::AppConfig::HostedConfigurationVersion - AWS CloudFormation

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 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: 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'

See also