Skip to content
v2.274.0

AWS AppConfig Construct Library ​

This module is part of the AWS Cloud Development Kit project.

For a high level overview of what AWS AppConfig is and how it works, please take a look here: What is AWS AppConfig?

Basic Hosted Configuration Use Case ​

The main way most AWS AppConfig users utilize the service is through hosted configuration, which involves storing configuration data directly within AWS AppConfig.

An example use case:

ts
const app = new appconfig.Application(this, 'MyApp');
const env = new appconfig.Environment(this, 'MyEnv', {
  application: app,
});

new appconfig.HostedConfiguration(this, 'MyHostedConfig', {
  application: app,
  deployTo: [env],
  content: appconfig.ConfigurationContent.fromInlineText('This is my configuration content.'),
});
python
app = appconfig.Application(self, "MyApp")
env = appconfig.Environment(self, "MyEnv",
    application=app
)

appconfig.HostedConfiguration(self, "MyHostedConfig",
    application=app,
    deploy_to=[env],
    content=appconfig.ConfigurationContent.from_inline_text("This is my configuration content.")
)
java
Application app = new Application(this, "MyApp");
Environment env = Environment.Builder.create(this, "MyEnv")
        .application(app)
        .build();

HostedConfiguration.Builder.create(this, "MyHostedConfig")
        .application(app)
        .deployTo(List.of(env))
        .content(ConfigurationContent.fromInlineText("This is my configuration content."))
        .build();
csharp
var app = new Application(this, "MyApp");
var env = new Environment(this, "MyEnv", new EnvironmentProps {
    Application = app
});

new HostedConfiguration(this, "MyHostedConfig", new HostedConfigurationProps {
    Application = app,
    DeployTo = new [] { env },
    Content = ConfigurationContent.FromInlineText("This is my configuration content.")
});
go
app := appconfig.NewApplication(this, jsii.String("MyApp"))
env := appconfig.NewEnvironment(this, jsii.String("MyEnv"), &EnvironmentProps{
	Application: app,
})

appconfig.NewHostedConfiguration(this, jsii.String("MyHostedConfig"), &HostedConfigurationProps{
	Application: app,
	DeployTo: []IEnvironment{
		env,
	},
	Content: appconfig.ConfigurationContent_FromInlineText(jsii.String("This is my configuration content.")),
})

This will create the application and environment for your configuration and then deploy your configuration to the specified environment.

For more information about what these resources are: Creating feature flags and free form configuration data in AWS AppConfig.

For more information about deploying configuration: Deploying feature flags and configuration data in AWS AppConfig


For an in-depth walkthrough of specific resources and how to use them, please take a look at the following sections.

Application ​

AWS AppConfig Application Documentation

In AWS AppConfig, an application is simply an organizational construct like a folder. Configurations and environments are associated with the application.

When creating an application through CDK, the name and description of an application are optional.

Create a simple application:

ts
new appconfig.Application(this, 'MyApplication');
python
appconfig.Application(self, "MyApplication")
java
new Application(this, "MyApplication");
csharp
new Application(this, "MyApplication");
go
appconfig.NewApplication(this, jsii.String("MyApplication"))

Environment ​

AWS AppConfig Environment Documentation

Basic environment with monitors:

ts
declare const application: appconfig.Application;
declare const alarm: cloudwatch.Alarm;
declare const compositeAlarm: cloudwatch.CompositeAlarm;

new appconfig.Environment(this, 'MyEnvironment', {
  application,
  monitors: [
    appconfig.Monitor.fromCloudWatchAlarm(alarm),
    appconfig.Monitor.fromCloudWatchAlarm(compositeAlarm),
  ],
});
python
# application: appconfig.Application
# alarm: cloudwatch.Alarm
# composite_alarm: cloudwatch.CompositeAlarm


appconfig.Environment(self, "MyEnvironment",
    application=application,
    monitors=[
        appconfig.Monitor.from_cloud_watch_alarm(alarm),
        appconfig.Monitor.from_cloud_watch_alarm(composite_alarm)
    ]
)
java
Application application;
Alarm alarm;
CompositeAlarm compositeAlarm;


Environment.Builder.create(this, "MyEnvironment")
        .application(application)
        .monitors(List.of(Monitor.fromCloudWatchAlarm(alarm), Monitor.fromCloudWatchAlarm(compositeAlarm)))
        .build();
csharp
Application application;
Alarm alarm;
CompositeAlarm compositeAlarm;


new Environment(this, "MyEnvironment", new EnvironmentProps {
    Application = application,
    Monitors = new [] { Monitor.FromCloudWatchAlarm(alarm), Monitor.FromCloudWatchAlarm(compositeAlarm) }
});
go
var application Application
var alarm Alarm
var compositeAlarm CompositeAlarm


appconfig.NewEnvironment(this, jsii.String("MyEnvironment"), &EnvironmentProps{
	Application: Application,
	Monitors: []Monitor{
		appconfig.Monitor_FromCloudWatchAlarm(alarm),
		appconfig.Monitor_*FromCloudWatchAlarm(compositeAlarm),
	},
})

Environment monitors also support L1 CfnEnvironment.MonitorsProperty constructs through the fromCfnMonitorsProperty method. However, this is not the recommended approach for CloudWatch alarms because a role will not be auto-generated if not provided.

See About the AWS AppConfig data plane service for more information.

Permissions ​

You can grant read permission on the environment's configurations with the grantReadConfig method as follows:

ts
import * as iam from 'aws-cdk-lib/aws-iam';

const app = new appconfig.Application(this, 'MyAppConfig');
const env = new appconfig.Environment(this, 'MyEnvironment', {
  application: app,
});

const user = new iam.User(this, 'MyUser');
env.grantReadConfig(user);
python
import aws_cdk.aws_iam as iam


app = appconfig.Application(self, "MyAppConfig")
env = appconfig.Environment(self, "MyEnvironment",
    application=app
)

user = iam.User(self, "MyUser")
env.grant_read_config(user)
java
import software.amazon.awscdk.services.iam.*;


Application app = new Application(this, "MyAppConfig");
Environment env = Environment.Builder.create(this, "MyEnvironment")
        .application(app)
        .build();

User user = new User(this, "MyUser");
env.grantReadConfig(user);
csharp
using Amazon.CDK.AWS.IAM;


var app = new Application(this, "MyAppConfig");
var env = new Environment(this, "MyEnvironment", new EnvironmentProps {
    Application = app
});

var user = new User(this, "MyUser");
env.GrantReadConfig(user);
go
import iam "github.com/aws/aws-cdk-go/awscdk"


app := appconfig.NewApplication(this, jsii.String("MyAppConfig"))
env := appconfig.NewEnvironment(this, jsii.String("MyEnvironment"), &EnvironmentProps{
	Application: app,
})

user := iam.NewUser(this, jsii.String("MyUser"))
env.grantReadConfig(user)

Deployment Strategy ​

AWS AppConfig Deployment Strategy Documentation

A deployment strategy defines how a configuration will roll out. The roll out is defined by four parameters: deployment type, growth factor, deployment duration, and final bake time.

Deployment strategy with predefined values:

ts
new appconfig.DeploymentStrategy(this, 'MyDeploymentStrategy', {
  rolloutStrategy: appconfig.RolloutStrategy.CANARY_10_PERCENT_20_MINUTES,
});
python
appconfig.DeploymentStrategy(self, "MyDeploymentStrategy",
    rollout_strategy=appconfig.RolloutStrategy.CANARY_10_PERCENT_20_MINUTES
)
java
DeploymentStrategy.Builder.create(this, "MyDeploymentStrategy")
        .rolloutStrategy(RolloutStrategy.CANARY_10_PERCENT_20_MINUTES)
        .build();
csharp
new DeploymentStrategy(this, "MyDeploymentStrategy", new DeploymentStrategyProps {
    RolloutStrategy = RolloutStrategy.CANARY_10_PERCENT_20_MINUTES
});
go
appconfig.NewDeploymentStrategy(this, jsii.String("MyDeploymentStrategy"), &DeploymentStrategyProps{
	RolloutStrategy: appconfig.RolloutStrategy_CANARY_10_PERCENT_20_MINUTES(),
})

Deployment strategy with custom values:

ts
new appconfig.DeploymentStrategy(this, 'MyDeploymentStrategy', {
  rolloutStrategy: appconfig.RolloutStrategy.linear({
    growthFactor: 20,
    deploymentDuration: Duration.minutes(30),
    finalBakeTime: Duration.minutes(30),
  }),
});
python
appconfig.DeploymentStrategy(self, "MyDeploymentStrategy",
    rollout_strategy=appconfig.RolloutStrategy.linear(
        growth_factor=20,
        deployment_duration=Duration.minutes(30),
        final_bake_time=Duration.minutes(30)
    )
)
java
DeploymentStrategy.Builder.create(this, "MyDeploymentStrategy")
        .rolloutStrategy(RolloutStrategy.linear(RolloutStrategyProps.builder()
                .growthFactor(20)
                .deploymentDuration(Duration.minutes(30))
                .finalBakeTime(Duration.minutes(30))
                .build()))
        .build();
csharp
new DeploymentStrategy(this, "MyDeploymentStrategy", new DeploymentStrategyProps {
    RolloutStrategy = RolloutStrategy.Linear(new RolloutStrategyProps {
        GrowthFactor = 20,
        DeploymentDuration = Duration.Minutes(30),
        FinalBakeTime = Duration.Minutes(30)
    })
});
go
appconfig.NewDeploymentStrategy(this, jsii.String("MyDeploymentStrategy"), &DeploymentStrategyProps{
	RolloutStrategy: appconfig.RolloutStrategy_Linear(&RolloutStrategyProps{
		GrowthFactor: jsii.Number(20),
		DeploymentDuration: awscdk.Duration_Minutes(jsii.Number(30)),
		FinalBakeTime: awscdk.Duration_*Minutes(jsii.Number(30)),
	}),
})

Referencing a deployment strategy by ID:

ts
appconfig.DeploymentStrategy.fromDeploymentStrategyId(this, 'MyImportedDeploymentStrategy', appconfig.DeploymentStrategyId.fromString('abc123'));
python
appconfig.DeploymentStrategy.from_deployment_strategy_id(self, "MyImportedDeploymentStrategy", appconfig.DeploymentStrategyId.from_string("abc123"))
java
DeploymentStrategy.fromDeploymentStrategyId(this, "MyImportedDeploymentStrategy", DeploymentStrategyId.fromString("abc123"));
csharp
DeploymentStrategy.FromDeploymentStrategyId(this, "MyImportedDeploymentStrategy", DeploymentStrategyId.FromString("abc123"));
go
appconfig.DeploymentStrategy_FromDeploymentStrategyId(this, jsii.String("MyImportedDeploymentStrategy"), appconfig.DeploymentStrategyId_FromString(jsii.String("abc123")))

Referencing an AWS AppConfig predefined deployment strategy by ID:

ts
appconfig.DeploymentStrategy.fromDeploymentStrategyId(
  this,
  'MyImportedPredefinedDeploymentStrategy',
  appconfig.DeploymentStrategyId.CANARY_10_PERCENT_20_MINUTES,
);
python
appconfig.DeploymentStrategy.from_deployment_strategy_id(self, "MyImportedPredefinedDeploymentStrategy", appconfig.DeploymentStrategyId.CANARY_10_PERCENT_20_MINUTES)
java
DeploymentStrategy.fromDeploymentStrategyId(this, "MyImportedPredefinedDeploymentStrategy", DeploymentStrategyId.CANARY_10_PERCENT_20_MINUTES);
csharp
DeploymentStrategy.FromDeploymentStrategyId(this, "MyImportedPredefinedDeploymentStrategy", DeploymentStrategyId.CANARY_10_PERCENT_20_MINUTES);
go
appconfig.DeploymentStrategy_FromDeploymentStrategyId(this, jsii.String("MyImportedPredefinedDeploymentStrategy"), appconfig.DeploymentStrategyId_CANARY_10_PERCENT_20_MINUTES())

Configuration ​

A configuration is a higher-level construct that can either be a HostedConfiguration (stored internally through AWS AppConfig) or a SourcedConfiguration (stored in an Amazon S3 bucket, AWS Secrets Manager secrets, Systems Manager (SSM) Parameter Store parameters, SSM documents, or AWS CodePipeline). This construct manages deployments on creation.

HostedConfiguration ​

A hosted configuration represents configuration stored in the AWS AppConfig hosted configuration store. A hosted configuration takes in the configuration content and associated AWS AppConfig application. On construction of a hosted configuration, the configuration is deployed.

You can define hosted configuration content using any of the following ConfigurationContent methods:

  • fromFile - Defines the hosted configuration content from a file (you can specify a relative path). The content type will be determined by the file extension unless specified.
ts
declare const application: appconfig.Application;

new appconfig.HostedConfiguration(this, 'MyHostedConfiguration', {
  application,
  content: appconfig.ConfigurationContent.fromFile('config.json'),
});
python
# application: appconfig.Application


appconfig.HostedConfiguration(self, "MyHostedConfiguration",
    application=application,
    content=appconfig.ConfigurationContent.from_file("config.json")
)
java
Application application;


HostedConfiguration.Builder.create(this, "MyHostedConfiguration")
        .application(application)
        .content(ConfigurationContent.fromFile("config.json"))
        .build();
csharp
Application application;


new HostedConfiguration(this, "MyHostedConfiguration", new HostedConfigurationProps {
    Application = application,
    Content = ConfigurationContent.FromFile("config.json")
});
go
var application Application


appconfig.NewHostedConfiguration(this, jsii.String("MyHostedConfiguration"), &HostedConfigurationProps{
	Application: Application,
	Content: appconfig.ConfigurationContent_FromFile(jsii.String("config.json")),
})
  • fromInlineText - Defines the hosted configuration from inline text. The content type will be set as text/plain.
ts
declare const application: appconfig.Application;

new appconfig.HostedConfiguration(this, 'MyHostedConfiguration', {
  application,
  content: appconfig.ConfigurationContent.fromInlineText('This is my configuration content.'),
});
python
# application: appconfig.Application


appconfig.HostedConfiguration(self, "MyHostedConfiguration",
    application=application,
    content=appconfig.ConfigurationContent.from_inline_text("This is my configuration content.")
)
java
Application application;


HostedConfiguration.Builder.create(this, "MyHostedConfiguration")
        .application(application)
        .content(ConfigurationContent.fromInlineText("This is my configuration content."))
        .build();
csharp
Application application;


new HostedConfiguration(this, "MyHostedConfiguration", new HostedConfigurationProps {
    Application = application,
    Content = ConfigurationContent.FromInlineText("This is my configuration content.")
});
go
var application Application


appconfig.NewHostedConfiguration(this, jsii.String("MyHostedConfiguration"), &HostedConfigurationProps{
	Application: Application,
	Content: appconfig.ConfigurationContent_FromInlineText(jsii.String("This is my configuration content.")),
})
  • fromInlineJson - Defines the hosted configuration from inline JSON. The content type will be set as application/json unless specified.
ts
declare const application: appconfig.Application;

new appconfig.HostedConfiguration(this, 'MyHostedConfiguration', {
  application,
  content: appconfig.ConfigurationContent.fromInlineJson('{}'),
});
python
# application: appconfig.Application


appconfig.HostedConfiguration(self, "MyHostedConfiguration",
    application=application,
    content=appconfig.ConfigurationContent.from_inline_json("{}")
)
java
Application application;


HostedConfiguration.Builder.create(this, "MyHostedConfiguration")
        .application(application)
        .content(ConfigurationContent.fromInlineJson("{}"))
        .build();
csharp
Application application;


new HostedConfiguration(this, "MyHostedConfiguration", new HostedConfigurationProps {
    Application = application,
    Content = ConfigurationContent.FromInlineJson("{}")
});
go
var application Application


appconfig.NewHostedConfiguration(this, jsii.String("MyHostedConfiguration"), &HostedConfigurationProps{
	Application: Application,
	Content: appconfig.ConfigurationContent_FromInlineJson(jsii.String("{}")),
})
  • fromInlineYaml - Defines the hosted configuration from inline YAML. The content type will be set as application/x-yaml.
ts
declare const application: appconfig.Application;

new appconfig.HostedConfiguration(this, 'MyHostedConfiguration', {
  application,
  content: appconfig.ConfigurationContent.fromInlineYaml('MyConfig: This is my content.'),
});
python
# application: appconfig.Application


appconfig.HostedConfiguration(self, "MyHostedConfiguration",
    application=application,
    content=appconfig.ConfigurationContent.from_inline_yaml("MyConfig: This is my content.")
)
java
Application application;


HostedConfiguration.Builder.create(this, "MyHostedConfiguration")
        .application(application)
        .content(ConfigurationContent.fromInlineYaml("MyConfig: This is my content."))
        .build();
csharp
Application application;


new HostedConfiguration(this, "MyHostedConfiguration", new HostedConfigurationProps {
    Application = application,
    Content = ConfigurationContent.FromInlineYaml("MyConfig: This is my content.")
});
go
var application Application


appconfig.NewHostedConfiguration(this, jsii.String("MyHostedConfiguration"), &HostedConfigurationProps{
	Application: Application,
	Content: appconfig.ConfigurationContent_FromInlineYaml(jsii.String("MyConfig: This is my content.")),
})
  • fromInline - Defines the hosted configuration from user-specified content types. The content type will be set as application/octet-stream unless specified.
ts
declare const application: appconfig.Application;

new appconfig.HostedConfiguration(this, 'MyHostedConfiguration', {
  application,
  content: appconfig.ConfigurationContent.fromInline('This is my configuration content.'),
});
python
# application: appconfig.Application


appconfig.HostedConfiguration(self, "MyHostedConfiguration",
    application=application,
    content=appconfig.ConfigurationContent.from_inline("This is my configuration content.")
)
java
Application application;


HostedConfiguration.Builder.create(this, "MyHostedConfiguration")
        .application(application)
        .content(ConfigurationContent.fromInline("This is my configuration content."))
        .build();
csharp
Application application;


new HostedConfiguration(this, "MyHostedConfiguration", new HostedConfigurationProps {
    Application = application,
    Content = ConfigurationContent.FromInline("This is my configuration content.")
});
go
var application Application


appconfig.NewHostedConfiguration(this, jsii.String("MyHostedConfiguration"), &HostedConfigurationProps{
	Application: Application,
	Content: appconfig.ConfigurationContent_FromInline(jsii.String("This is my configuration content.")),
})

AWS AppConfig supports the following types of configuration profiles.

  • Feature flag: Use a feature flag configuration to turn on new features that require a timely deployment, such as a product launch or announcement.
  • Freeform: Use a freeform configuration to carefully introduce changes to your application.

A hosted configuration with type:

ts
declare const application: appconfig.Application;

new appconfig.HostedConfiguration(this, 'MyHostedConfiguration', {
  application,
  content: appconfig.ConfigurationContent.fromInlineText('This is my configuration content.'),
  type: appconfig.ConfigurationType.FEATURE_FLAGS,
});
python
# application: appconfig.Application


appconfig.HostedConfiguration(self, "MyHostedConfiguration",
    application=application,
    content=appconfig.ConfigurationContent.from_inline_text("This is my configuration content."),
    type=appconfig.ConfigurationType.FEATURE_FLAGS
)
java
Application application;


HostedConfiguration.Builder.create(this, "MyHostedConfiguration")
        .application(application)
        .content(ConfigurationContent.fromInlineText("This is my configuration content."))
        .type(ConfigurationType.FEATURE_FLAGS)
        .build();
csharp
Application application;


new HostedConfiguration(this, "MyHostedConfiguration", new HostedConfigurationProps {
    Application = application,
    Content = ConfigurationContent.FromInlineText("This is my configuration content."),
    Type = ConfigurationType.FEATURE_FLAGS
});
go
var application Application


appconfig.NewHostedConfiguration(this, jsii.String("MyHostedConfiguration"), &HostedConfigurationProps{
	Application: Application,
	Content: appconfig.ConfigurationContent_FromInlineText(jsii.String("This is my configuration content.")),
	Type: appconfig.ConfigurationType_FEATURE_FLAGS,
})

When you create a configuration and configuration profile, you can specify up to two validators. A validator ensures that your configuration data is syntactically and semantically correct. You can create validators in either JSON Schema or as an AWS Lambda function. See About validators for more information.

When you import a JSON Schema validator from a file, you can pass in a relative path.

A hosted configuration with validators:

ts
declare const application: appconfig.Application;
declare const fn: lambda.Function;

new appconfig.HostedConfiguration(this, 'MyHostedConfiguration', {
  application,
  content: appconfig.ConfigurationContent.fromInlineText('This is my configuration content.'),
  validators: [
    appconfig.JsonSchemaValidator.fromFile('schema.json'),
    appconfig.LambdaValidator.fromFunction(fn),
  ],
});
python
# application: appconfig.Application
# fn: lambda.Function


appconfig.HostedConfiguration(self, "MyHostedConfiguration",
    application=application,
    content=appconfig.ConfigurationContent.from_inline_text("This is my configuration content."),
    validators=[
        appconfig.JsonSchemaValidator.from_file("schema.json"),
        appconfig.LambdaValidator.from_function(fn)
    ]
)
java
Application application;
Function fn;


HostedConfiguration.Builder.create(this, "MyHostedConfiguration")
        .application(application)
        .content(ConfigurationContent.fromInlineText("This is my configuration content."))
        .validators(List.of(JsonSchemaValidator.fromFile("schema.json"), LambdaValidator.fromFunction(fn)))
        .build();
csharp
Application application;
Function fn;


new HostedConfiguration(this, "MyHostedConfiguration", new HostedConfigurationProps {
    Application = application,
    Content = ConfigurationContent.FromInlineText("This is my configuration content."),
    Validators = new [] { JsonSchemaValidator.FromFile("schema.json"), LambdaValidator.FromFunction(fn) }
});
go
var application Application
var fn Function


appconfig.NewHostedConfiguration(this, jsii.String("MyHostedConfiguration"), &HostedConfigurationProps{
	Application: Application,
	Content: appconfig.ConfigurationContent_FromInlineText(jsii.String("This is my configuration content.")),
	Validators: []IValidator{
		appconfig.JsonSchemaValidator_FromFile(jsii.String("schema.json")),
		appconfig.LambdaValidator_FromFunction(fn),
	},
})

You can attach a deployment strategy (as described in the previous section) to your configuration to specify how you want your configuration to roll out.

A hosted configuration with a deployment strategy:

ts
declare const application: appconfig.Application;

new appconfig.HostedConfiguration(this, 'MyHostedConfiguration', {
  application,
  content: appconfig.ConfigurationContent.fromInlineText('This is my configuration content.'),
  deploymentStrategy: new appconfig.DeploymentStrategy(this, 'MyDeploymentStrategy', {
    rolloutStrategy: appconfig.RolloutStrategy.linear({
      growthFactor: 15,
      deploymentDuration: Duration.minutes(30),
      finalBakeTime: Duration.minutes(15),
    }),
  }),
});
python
# application: appconfig.Application


appconfig.HostedConfiguration(self, "MyHostedConfiguration",
    application=application,
    content=appconfig.ConfigurationContent.from_inline_text("This is my configuration content."),
    deployment_strategy=appconfig.DeploymentStrategy(self, "MyDeploymentStrategy",
        rollout_strategy=appconfig.RolloutStrategy.linear(
            growth_factor=15,
            deployment_duration=Duration.minutes(30),
            final_bake_time=Duration.minutes(15)
        )
    )
)
java
Application application;


HostedConfiguration.Builder.create(this, "MyHostedConfiguration")
        .application(application)
        .content(ConfigurationContent.fromInlineText("This is my configuration content."))
        .deploymentStrategy(DeploymentStrategy.Builder.create(this, "MyDeploymentStrategy")
                .rolloutStrategy(RolloutStrategy.linear(RolloutStrategyProps.builder()
                        .growthFactor(15)
                        .deploymentDuration(Duration.minutes(30))
                        .finalBakeTime(Duration.minutes(15))
                        .build()))
                .build())
        .build();
csharp
Application application;


new HostedConfiguration(this, "MyHostedConfiguration", new HostedConfigurationProps {
    Application = application,
    Content = ConfigurationContent.FromInlineText("This is my configuration content."),
    DeploymentStrategy = new DeploymentStrategy(this, "MyDeploymentStrategy", new DeploymentStrategyProps {
        RolloutStrategy = RolloutStrategy.Linear(new RolloutStrategyProps {
            GrowthFactor = 15,
            DeploymentDuration = Duration.Minutes(30),
            FinalBakeTime = Duration.Minutes(15)
        })
    })
});
go
var application Application


appconfig.NewHostedConfiguration(this, jsii.String("MyHostedConfiguration"), &HostedConfigurationProps{
	Application: Application,
	Content: appconfig.ConfigurationContent_FromInlineText(jsii.String("This is my configuration content.")),
	DeploymentStrategy: appconfig.NewDeploymentStrategy(this, jsii.String("MyDeploymentStrategy"), &DeploymentStrategyProps{
		RolloutStrategy: appconfig.RolloutStrategy_Linear(&RolloutStrategyProps{
			GrowthFactor: jsii.Number(15),
			DeploymentDuration: awscdk.Duration_Minutes(jsii.Number(30)),
			FinalBakeTime: awscdk.Duration_*Minutes(jsii.Number(15)),
		}),
	}),
})

The deployTo parameter is used to specify which environments to deploy the configuration to.

A hosted configuration with deployTo:

ts
declare const application: appconfig.Application;
declare const env: appconfig.Environment;

new appconfig.HostedConfiguration(this, 'MyHostedConfiguration', {
  application,
  content: appconfig.ConfigurationContent.fromInlineText('This is my configuration content.'),
  deployTo: [env],
});
python
# application: appconfig.Application
# env: appconfig.Environment


appconfig.HostedConfiguration(self, "MyHostedConfiguration",
    application=application,
    content=appconfig.ConfigurationContent.from_inline_text("This is my configuration content."),
    deploy_to=[env]
)
java
Application application;
Environment env;


HostedConfiguration.Builder.create(this, "MyHostedConfiguration")
        .application(application)
        .content(ConfigurationContent.fromInlineText("This is my configuration content."))
        .deployTo(List.of(env))
        .build();
csharp
Application application;
Environment env;


new HostedConfiguration(this, "MyHostedConfiguration", new HostedConfigurationProps {
    Application = application,
    Content = ConfigurationContent.FromInlineText("This is my configuration content."),
    DeployTo = new [] { env }
});
go
var application Application
var env Environment


appconfig.NewHostedConfiguration(this, jsii.String("MyHostedConfiguration"), &HostedConfigurationProps{
	Application: Application,
	Content: appconfig.ConfigurationContent_FromInlineText(jsii.String("This is my configuration content.")),
	DeployTo: []IEnvironment{
		env,
	},
})

When more than one configuration is set to deploy to the same environment, the deployments will occur one at a time. This is done to satisfy AppConfig's constraint:

NOTE

You can only deploy one configuration at a time to an environment. However, you can deploy one configuration each to different environments at the same time.

The deployment order matches the order in which the configurations are declared.

ts
const app = new appconfig.Application(this, 'MyApp');
const env = new appconfig.Environment(this, 'MyEnv', {
  application: app,
});

new appconfig.HostedConfiguration(this, 'MyFirstHostedConfig', {
  application: app,
  deployTo: [env],
  content: appconfig.ConfigurationContent.fromInlineText('This is my first configuration content.'),
});

new appconfig.HostedConfiguration(this, 'MySecondHostedConfig', {
  application: app,
  deployTo: [env],
  content: appconfig.ConfigurationContent.fromInlineText('This is my second configuration content.'),
});
python
app = appconfig.Application(self, "MyApp")
env = appconfig.Environment(self, "MyEnv",
    application=app
)

appconfig.HostedConfiguration(self, "MyFirstHostedConfig",
    application=app,
    deploy_to=[env],
    content=appconfig.ConfigurationContent.from_inline_text("This is my first configuration content.")
)

appconfig.HostedConfiguration(self, "MySecondHostedConfig",
    application=app,
    deploy_to=[env],
    content=appconfig.ConfigurationContent.from_inline_text("This is my second configuration content.")
)
java
Application app = new Application(this, "MyApp");
Environment env = Environment.Builder.create(this, "MyEnv")
        .application(app)
        .build();

HostedConfiguration.Builder.create(this, "MyFirstHostedConfig")
        .application(app)
        .deployTo(List.of(env))
        .content(ConfigurationContent.fromInlineText("This is my first configuration content."))
        .build();

HostedConfiguration.Builder.create(this, "MySecondHostedConfig")
        .application(app)
        .deployTo(List.of(env))
        .content(ConfigurationContent.fromInlineText("This is my second configuration content."))
        .build();
csharp
var app = new Application(this, "MyApp");
var env = new Environment(this, "MyEnv", new EnvironmentProps {
    Application = app
});

new HostedConfiguration(this, "MyFirstHostedConfig", new HostedConfigurationProps {
    Application = app,
    DeployTo = new [] { env },
    Content = ConfigurationContent.FromInlineText("This is my first configuration content.")
});

new HostedConfiguration(this, "MySecondHostedConfig", new HostedConfigurationProps {
    Application = app,
    DeployTo = new [] { env },
    Content = ConfigurationContent.FromInlineText("This is my second configuration content.")
});
go
app := appconfig.NewApplication(this, jsii.String("MyApp"))
env := appconfig.NewEnvironment(this, jsii.String("MyEnv"), &EnvironmentProps{
	Application: app,
})

appconfig.NewHostedConfiguration(this, jsii.String("MyFirstHostedConfig"), &HostedConfigurationProps{
	Application: app,
	DeployTo: []IEnvironment{
		env,
	},
	Content: appconfig.ConfigurationContent_FromInlineText(jsii.String("This is my first configuration content.")),
})

appconfig.NewHostedConfiguration(this, jsii.String("MySecondHostedConfig"), &HostedConfigurationProps{
	Application: app,
	DeployTo: []IEnvironment{
		env,
	},
	Content: appconfig.ConfigurationContent_*FromInlineText(jsii.String("This is my second configuration content.")),
})

If an application would benefit from a deployment order that differs from the declared order, you can defer the decision by using IEnvironment.addDeployment rather than the deployTo property. In this example, firstConfig will be deployed before secondConfig.

ts
const app = new appconfig.Application(this, 'MyApp');
const env = new appconfig.Environment(this, 'MyEnv', {
  application: app,
});

const secondConfig = new appconfig.HostedConfiguration(this, 'MySecondHostedConfig', {
  application: app,
  content: appconfig.ConfigurationContent.fromInlineText('This is my second configuration content.'),
});

const firstConfig = new appconfig.HostedConfiguration(this, 'MyFirstHostedConfig', {
  application: app,
  deployTo: [env],
  content: appconfig.ConfigurationContent.fromInlineText('This is my first configuration content.'),
});

env.addDeployment(secondConfig);
python
app = appconfig.Application(self, "MyApp")
env = appconfig.Environment(self, "MyEnv",
    application=app
)

second_config = appconfig.HostedConfiguration(self, "MySecondHostedConfig",
    application=app,
    content=appconfig.ConfigurationContent.from_inline_text("This is my second configuration content.")
)

first_config = appconfig.HostedConfiguration(self, "MyFirstHostedConfig",
    application=app,
    deploy_to=[env],
    content=appconfig.ConfigurationContent.from_inline_text("This is my first configuration content.")
)

env.add_deployment(second_config)
java
Application app = new Application(this, "MyApp");
Environment env = Environment.Builder.create(this, "MyEnv")
        .application(app)
        .build();

HostedConfiguration secondConfig = HostedConfiguration.Builder.create(this, "MySecondHostedConfig")
        .application(app)
        .content(ConfigurationContent.fromInlineText("This is my second configuration content."))
        .build();

HostedConfiguration firstConfig = HostedConfiguration.Builder.create(this, "MyFirstHostedConfig")
        .application(app)
        .deployTo(List.of(env))
        .content(ConfigurationContent.fromInlineText("This is my first configuration content."))
        .build();

env.addDeployment(secondConfig);
csharp
var app = new Application(this, "MyApp");
var env = new Environment(this, "MyEnv", new EnvironmentProps {
    Application = app
});

var secondConfig = new HostedConfiguration(this, "MySecondHostedConfig", new HostedConfigurationProps {
    Application = app,
    Content = ConfigurationContent.FromInlineText("This is my second configuration content.")
});

var firstConfig = new HostedConfiguration(this, "MyFirstHostedConfig", new HostedConfigurationProps {
    Application = app,
    DeployTo = new [] { env },
    Content = ConfigurationContent.FromInlineText("This is my first configuration content.")
});

env.AddDeployment(secondConfig);
go
app := appconfig.NewApplication(this, jsii.String("MyApp"))
env := appconfig.NewEnvironment(this, jsii.String("MyEnv"), &EnvironmentProps{
	Application: app,
})

secondConfig := appconfig.NewHostedConfiguration(this, jsii.String("MySecondHostedConfig"), &HostedConfigurationProps{
	Application: app,
	Content: appconfig.ConfigurationContent_FromInlineText(jsii.String("This is my second configuration content.")),
})

firstConfig := appconfig.NewHostedConfiguration(this, jsii.String("MyFirstHostedConfig"), &HostedConfigurationProps{
	Application: app,
	DeployTo: []IEnvironment{
		env,
	},
	Content: appconfig.ConfigurationContent_*FromInlineText(jsii.String("This is my first configuration content.")),
})

env.addDeployment(secondConfig)

Alternatively, you can defer multiple deployments in favor of IEnvironment.addDeployments, which allows you to declare multiple configurations in the order they will be deployed. In this example the deployment order will be firstConfig, then secondConfig, and finally thirdConfig.

ts
const app = new appconfig.Application(this, 'MyApp');
const env = new appconfig.Environment(this, 'MyEnv', {
  application: app,
});

const secondConfig = new appconfig.HostedConfiguration(this, 'MySecondHostedConfig', {
  application: app,
  content: appconfig.ConfigurationContent.fromInlineText('This is my second configuration content.'),
});

const thirdConfig = new appconfig.HostedConfiguration(this, 'MyThirdHostedConfig', {
  application: app,
  content: appconfig.ConfigurationContent.fromInlineText('This is my third configuration content.'),
});

const firstConfig = new appconfig.HostedConfiguration(this, 'MyFirstHostedConfig', {
  application: app,
  content: appconfig.ConfigurationContent.fromInlineText('This is my first configuration content.'),
});

env.addDeployments(firstConfig, secondConfig, thirdConfig);
python
app = appconfig.Application(self, "MyApp")
env = appconfig.Environment(self, "MyEnv",
    application=app
)

second_config = appconfig.HostedConfiguration(self, "MySecondHostedConfig",
    application=app,
    content=appconfig.ConfigurationContent.from_inline_text("This is my second configuration content.")
)

third_config = appconfig.HostedConfiguration(self, "MyThirdHostedConfig",
    application=app,
    content=appconfig.ConfigurationContent.from_inline_text("This is my third configuration content.")
)

first_config = appconfig.HostedConfiguration(self, "MyFirstHostedConfig",
    application=app,
    content=appconfig.ConfigurationContent.from_inline_text("This is my first configuration content.")
)

env.add_deployments(first_config, second_config, third_config)
java
Application app = new Application(this, "MyApp");
Environment env = Environment.Builder.create(this, "MyEnv")
        .application(app)
        .build();

HostedConfiguration secondConfig = HostedConfiguration.Builder.create(this, "MySecondHostedConfig")
        .application(app)
        .content(ConfigurationContent.fromInlineText("This is my second configuration content."))
        .build();

HostedConfiguration thirdConfig = HostedConfiguration.Builder.create(this, "MyThirdHostedConfig")
        .application(app)
        .content(ConfigurationContent.fromInlineText("This is my third configuration content."))
        .build();

HostedConfiguration firstConfig = HostedConfiguration.Builder.create(this, "MyFirstHostedConfig")
        .application(app)
        .content(ConfigurationContent.fromInlineText("This is my first configuration content."))
        .build();

env.addDeployments(firstConfig, secondConfig, thirdConfig);
csharp
var app = new Application(this, "MyApp");
var env = new Environment(this, "MyEnv", new EnvironmentProps {
    Application = app
});

var secondConfig = new HostedConfiguration(this, "MySecondHostedConfig", new HostedConfigurationProps {
    Application = app,
    Content = ConfigurationContent.FromInlineText("This is my second configuration content.")
});

var thirdConfig = new HostedConfiguration(this, "MyThirdHostedConfig", new HostedConfigurationProps {
    Application = app,
    Content = ConfigurationContent.FromInlineText("This is my third configuration content.")
});

var firstConfig = new HostedConfiguration(this, "MyFirstHostedConfig", new HostedConfigurationProps {
    Application = app,
    Content = ConfigurationContent.FromInlineText("This is my first configuration content.")
});

env.AddDeployments(firstConfig, secondConfig, thirdConfig);
go
app := appconfig.NewApplication(this, jsii.String("MyApp"))
env := appconfig.NewEnvironment(this, jsii.String("MyEnv"), &EnvironmentProps{
	Application: app,
})

secondConfig := appconfig.NewHostedConfiguration(this, jsii.String("MySecondHostedConfig"), &HostedConfigurationProps{
	Application: app,
	Content: appconfig.ConfigurationContent_FromInlineText(jsii.String("This is my second configuration content.")),
})

thirdConfig := appconfig.NewHostedConfiguration(this, jsii.String("MyThirdHostedConfig"), &HostedConfigurationProps{
	Application: app,
	Content: appconfig.ConfigurationContent_*FromInlineText(jsii.String("This is my third configuration content.")),
})

firstConfig := appconfig.NewHostedConfiguration(this, jsii.String("MyFirstHostedConfig"), &HostedConfigurationProps{
	Application: app,
	Content: appconfig.ConfigurationContent_*FromInlineText(jsii.String("This is my first configuration content.")),
})

env.addDeployments(firstConfig, secondConfig, thirdConfig)

Any mix of deployTo, addDeployment, and addDeployments is permitted. The declaration order will be respected regardless of the approach used.

IMPORTANT

If none of these options are utilized, there will not be any deployments.

You can use customer managed key to encrypt a hosted configuration. For mora information, see Data encryption at rest for AWS AppConfig.

ts
declare const application: appconfig.Application;
declare const kmsKey: kms.Key;

new appconfig.HostedConfiguration(this, 'MyHostedConfiguration', {
  application,
  content: appconfig.ConfigurationContent.fromInlineText('This is my configuration content.'),
  type: appconfig.ConfigurationType.FEATURE_FLAGS,
  kmsKey, // set customer managed key
});
python
# application: appconfig.Application
# kms_key: kms.Key


appconfig.HostedConfiguration(self, "MyHostedConfiguration",
    application=application,
    content=appconfig.ConfigurationContent.from_inline_text("This is my configuration content."),
    type=appconfig.ConfigurationType.FEATURE_FLAGS,
    kms_key=kms_key
)
java
Application application;
Key kmsKey;


HostedConfiguration.Builder.create(this, "MyHostedConfiguration")
        .application(application)
        .content(ConfigurationContent.fromInlineText("This is my configuration content."))
        .type(ConfigurationType.FEATURE_FLAGS)
        .kmsKey(kmsKey)
        .build();
csharp
Application application;
Key kmsKey;


new HostedConfiguration(this, "MyHostedConfiguration", new HostedConfigurationProps {
    Application = application,
    Content = ConfigurationContent.FromInlineText("This is my configuration content."),
    Type = ConfigurationType.FEATURE_FLAGS,
    KmsKey = kmsKey
});
go
var application Application
var kmsKey Key


appconfig.NewHostedConfiguration(this, jsii.String("MyHostedConfiguration"), &HostedConfigurationProps{
	Application: Application,
	Content: appconfig.ConfigurationContent_FromInlineText(jsii.String("This is my configuration content.")),
	Type: appconfig.ConfigurationType_FEATURE_FLAGS,
	KmsKey: KmsKey,
})

SourcedConfiguration ​

A sourced configuration represents configuration stored in any of the following:

  • Amazon S3 bucket
  • AWS Secrets Manager secret
  • Systems Manager
  • (SSM) Parameter Store parameter
  • SSM document
  • AWS CodePipeline.

A sourced configuration takes in the location source construct and optionally a version number to deploy. On construction of a sourced configuration, the configuration is deployed only if a version number is specified.

S3 ​

Use an Amazon S3 bucket to store a configuration.

ts
declare const application: appconfig.Application;

const bucket = new s3.Bucket(this, 'MyBucket', {
  versioned: true,
});

new appconfig.SourcedConfiguration(this, 'MySourcedConfiguration', {
  application,
  location: appconfig.ConfigurationSource.fromBucket(bucket, 'path/to/file.json'),
});
python
# application: appconfig.Application


bucket = s3.Bucket(self, "MyBucket",
    versioned=True
)

appconfig.SourcedConfiguration(self, "MySourcedConfiguration",
    application=application,
    location=appconfig.ConfigurationSource.from_bucket(bucket, "path/to/file.json")
)
java
Application application;


Bucket bucket = Bucket.Builder.create(this, "MyBucket")
        .versioned(true)
        .build();

SourcedConfiguration.Builder.create(this, "MySourcedConfiguration")
        .application(application)
        .location(ConfigurationSource.fromBucket(bucket, "path/to/file.json"))
        .build();
csharp
Application application;


var bucket = new Bucket(this, "MyBucket", new BucketProps {
    Versioned = true
});

new SourcedConfiguration(this, "MySourcedConfiguration", new SourcedConfigurationProps {
    Application = application,
    Location = ConfigurationSource.FromBucket(bucket, "path/to/file.json")
});
go
var application Application


bucket := s3.NewBucket(this, jsii.String("MyBucket"), &BucketProps{
	Versioned: jsii.Boolean(true),
})

appconfig.NewSourcedConfiguration(this, jsii.String("MySourcedConfiguration"), &SourcedConfigurationProps{
	Application: Application,
	Location: appconfig.ConfigurationSource_FromBucket(bucket, jsii.String("path/to/file.json")),
})

Use an encrypted bucket:

ts
declare const application: appconfig.Application;

const bucket = new s3.Bucket(this, 'MyBucket', {
  versioned: true,
  encryption: s3.BucketEncryption.KMS,
});

new appconfig.SourcedConfiguration(this, 'MySourcedConfiguration', {
  application,
  location: appconfig.ConfigurationSource.fromBucket(bucket, 'path/to/file.json'),
});
python
# application: appconfig.Application


bucket = s3.Bucket(self, "MyBucket",
    versioned=True,
    encryption=s3.BucketEncryption.KMS
)

appconfig.SourcedConfiguration(self, "MySourcedConfiguration",
    application=application,
    location=appconfig.ConfigurationSource.from_bucket(bucket, "path/to/file.json")
)
java
Application application;


Bucket bucket = Bucket.Builder.create(this, "MyBucket")
        .versioned(true)
        .encryption(BucketEncryption.KMS)
        .build();

SourcedConfiguration.Builder.create(this, "MySourcedConfiguration")
        .application(application)
        .location(ConfigurationSource.fromBucket(bucket, "path/to/file.json"))
        .build();
csharp
Application application;


var bucket = new Bucket(this, "MyBucket", new BucketProps {
    Versioned = true,
    Encryption = BucketEncryption.KMS
});

new SourcedConfiguration(this, "MySourcedConfiguration", new SourcedConfigurationProps {
    Application = application,
    Location = ConfigurationSource.FromBucket(bucket, "path/to/file.json")
});
go
var application Application


bucket := s3.NewBucket(this, jsii.String("MyBucket"), &BucketProps{
	Versioned: jsii.Boolean(true),
	Encryption: s3.BucketEncryption_KMS,
})

appconfig.NewSourcedConfiguration(this, jsii.String("MySourcedConfiguration"), &SourcedConfigurationProps{
	Application: Application,
	Location: appconfig.ConfigurationSource_FromBucket(bucket, jsii.String("path/to/file.json")),
})

AWS Secrets Manager secret ​

Use a Secrets Manager secret to store a configuration.

ts
declare const application: appconfig.Application;
declare const secret: secrets.Secret;

new appconfig.SourcedConfiguration(this, 'MySourcedConfiguration', {
  application,
  location: appconfig.ConfigurationSource.fromSecret(secret),
});
python
# application: appconfig.Application
# secret: secrets.Secret


appconfig.SourcedConfiguration(self, "MySourcedConfiguration",
    application=application,
    location=appconfig.ConfigurationSource.from_secret(secret)
)
java
Application application;
Secret secret;


SourcedConfiguration.Builder.create(this, "MySourcedConfiguration")
        .application(application)
        .location(ConfigurationSource.fromSecret(secret))
        .build();
csharp
Application application;
Secret secret;


new SourcedConfiguration(this, "MySourcedConfiguration", new SourcedConfigurationProps {
    Application = application,
    Location = ConfigurationSource.FromSecret(secret)
});
go
var application Application
var secret Secret


appconfig.NewSourcedConfiguration(this, jsii.String("MySourcedConfiguration"), &SourcedConfigurationProps{
	Application: Application,
	Location: appconfig.ConfigurationSource_FromSecret(secret),
})

SSM Parameter Store parameter ​

Use an SSM parameter to store a configuration.

ts
declare const application: appconfig.Application;
declare const parameter: ssm.StringParameter;

new appconfig.SourcedConfiguration(this, 'MySourcedConfiguration', {
  application,
  location: appconfig.ConfigurationSource.fromParameter(parameter),
  versionNumber: '1',
});
python
# application: appconfig.Application
# parameter: ssm.StringParameter


appconfig.SourcedConfiguration(self, "MySourcedConfiguration",
    application=application,
    location=appconfig.ConfigurationSource.from_parameter(parameter),
    version_number="1"
)
java
Application application;
StringParameter parameter;


SourcedConfiguration.Builder.create(this, "MySourcedConfiguration")
        .application(application)
        .location(ConfigurationSource.fromParameter(parameter))
        .versionNumber("1")
        .build();
csharp
Application application;
StringParameter parameter;


new SourcedConfiguration(this, "MySourcedConfiguration", new SourcedConfigurationProps {
    Application = application,
    Location = ConfigurationSource.FromParameter(parameter),
    VersionNumber = "1"
});
go
var application Application
var parameter StringParameter


appconfig.NewSourcedConfiguration(this, jsii.String("MySourcedConfiguration"), &SourcedConfigurationProps{
	Application: Application,
	Location: appconfig.ConfigurationSource_FromParameter(parameter),
	VersionNumber: jsii.String("1"),
})

SSM document ​

Use an SSM document to store a configuration.

ts
declare const application: appconfig.Application;
declare const document: ssm.CfnDocument;

new appconfig.SourcedConfiguration(this, 'MySourcedConfiguration', {
  application,
  location: appconfig.ConfigurationSource.fromCfnDocument(document),
});
python
# application: appconfig.Application
# document: ssm.CfnDocument


appconfig.SourcedConfiguration(self, "MySourcedConfiguration",
    application=application,
    location=appconfig.ConfigurationSource.from_cfn_document(document)
)
java
Application application;
CfnDocument document;


SourcedConfiguration.Builder.create(this, "MySourcedConfiguration")
        .application(application)
        .location(ConfigurationSource.fromCfnDocument(document))
        .build();
csharp
Application application;
CfnDocument document;


new SourcedConfiguration(this, "MySourcedConfiguration", new SourcedConfigurationProps {
    Application = application,
    Location = ConfigurationSource.FromCfnDocument(document)
});
go
var application Application
var document CfnDocument


appconfig.NewSourcedConfiguration(this, jsii.String("MySourcedConfiguration"), &SourcedConfigurationProps{
	Application: Application,
	Location: appconfig.ConfigurationSource_FromCfnDocument(document),
})

AWS CodePipeline ​

Use an AWS CodePipeline pipeline to store a configuration.

ts
declare const application: appconfig.Application;
declare const pipeline: codepipeline.Pipeline;

new appconfig.SourcedConfiguration(this, 'MySourcedConfiguration', {
  application,
  location: appconfig.ConfigurationSource.fromPipeline(pipeline),
});
python
# application: appconfig.Application
# pipeline: codepipeline.Pipeline


appconfig.SourcedConfiguration(self, "MySourcedConfiguration",
    application=application,
    location=appconfig.ConfigurationSource.from_pipeline(pipeline)
)
java
Application application;
Pipeline pipeline;


SourcedConfiguration.Builder.create(this, "MySourcedConfiguration")
        .application(application)
        .location(ConfigurationSource.fromPipeline(pipeline))
        .build();
csharp
Application application;
Pipeline pipeline;


new SourcedConfiguration(this, "MySourcedConfiguration", new SourcedConfigurationProps {
    Application = application,
    Location = ConfigurationSource.FromPipeline(pipeline)
});
go
var application Application
var pipeline Pipeline


appconfig.NewSourcedConfiguration(this, jsii.String("MySourcedConfiguration"), &SourcedConfigurationProps{
	Application: Application,
	Location: appconfig.ConfigurationSource_FromPipeline(pipeline),
})

Similar to a hosted configuration, a sourced configuration can optionally take in a type, validators, a deployTo parameter, and a deployment strategy.

A sourced configuration with type:

ts
declare const application: appconfig.Application;
declare const bucket: s3.Bucket;

new appconfig.SourcedConfiguration(this, 'MySourcedConfiguration', {
  application,
  location: appconfig.ConfigurationSource.fromBucket(bucket, 'path/to/file.json'),
  type: appconfig.ConfigurationType.FEATURE_FLAGS,
  name: 'MyConfig',
  description: 'This is my sourced configuration from CDK.',
});
python
# application: appconfig.Application
# bucket: s3.Bucket


appconfig.SourcedConfiguration(self, "MySourcedConfiguration",
    application=application,
    location=appconfig.ConfigurationSource.from_bucket(bucket, "path/to/file.json"),
    type=appconfig.ConfigurationType.FEATURE_FLAGS,
    name="MyConfig",
    description="This is my sourced configuration from CDK."
)
java
Application application;
Bucket bucket;


SourcedConfiguration.Builder.create(this, "MySourcedConfiguration")
        .application(application)
        .location(ConfigurationSource.fromBucket(bucket, "path/to/file.json"))
        .type(ConfigurationType.FEATURE_FLAGS)
        .name("MyConfig")
        .description("This is my sourced configuration from CDK.")
        .build();
csharp
Application application;
Bucket bucket;


new SourcedConfiguration(this, "MySourcedConfiguration", new SourcedConfigurationProps {
    Application = application,
    Location = ConfigurationSource.FromBucket(bucket, "path/to/file.json"),
    Type = ConfigurationType.FEATURE_FLAGS,
    Name = "MyConfig",
    Description = "This is my sourced configuration from CDK."
});
go
var application Application
var bucket Bucket


appconfig.NewSourcedConfiguration(this, jsii.String("MySourcedConfiguration"), &SourcedConfigurationProps{
	Application: Application,
	Location: appconfig.ConfigurationSource_FromBucket(bucket, jsii.String("path/to/file.json")),
	Type: appconfig.ConfigurationType_FEATURE_FLAGS,
	Name: jsii.String("MyConfig"),
	Description: jsii.String("This is my sourced configuration from CDK."),
})

A sourced configuration with validators:

ts
declare const application: appconfig.Application;
declare const bucket: s3.Bucket;
declare const fn: lambda.Function;

new appconfig.SourcedConfiguration(this, 'MySourcedConfiguration', {
  application,
  location: appconfig.ConfigurationSource.fromBucket(bucket, 'path/to/file.json'),
  validators: [
    appconfig.JsonSchemaValidator.fromFile('schema.json'),
    appconfig.LambdaValidator.fromFunction(fn),
  ],
});
python
# application: appconfig.Application
# bucket: s3.Bucket
# fn: lambda.Function


appconfig.SourcedConfiguration(self, "MySourcedConfiguration",
    application=application,
    location=appconfig.ConfigurationSource.from_bucket(bucket, "path/to/file.json"),
    validators=[
        appconfig.JsonSchemaValidator.from_file("schema.json"),
        appconfig.LambdaValidator.from_function(fn)
    ]
)
java
Application application;
Bucket bucket;
Function fn;


SourcedConfiguration.Builder.create(this, "MySourcedConfiguration")
        .application(application)
        .location(ConfigurationSource.fromBucket(bucket, "path/to/file.json"))
        .validators(List.of(JsonSchemaValidator.fromFile("schema.json"), LambdaValidator.fromFunction(fn)))
        .build();
csharp
Application application;
Bucket bucket;
Function fn;


new SourcedConfiguration(this, "MySourcedConfiguration", new SourcedConfigurationProps {
    Application = application,
    Location = ConfigurationSource.FromBucket(bucket, "path/to/file.json"),
    Validators = new [] { JsonSchemaValidator.FromFile("schema.json"), LambdaValidator.FromFunction(fn) }
});
go
var application Application
var bucket Bucket
var fn Function


appconfig.NewSourcedConfiguration(this, jsii.String("MySourcedConfiguration"), &SourcedConfigurationProps{
	Application: Application,
	Location: appconfig.ConfigurationSource_FromBucket(bucket, jsii.String("path/to/file.json")),
	Validators: []IValidator{
		appconfig.JsonSchemaValidator_FromFile(jsii.String("schema.json")),
		appconfig.LambdaValidator_FromFunction(fn),
	},
})

A sourced configuration with a deployment strategy:

ts
declare const application: appconfig.Application;
declare const bucket: s3.Bucket;

new appconfig.SourcedConfiguration(this, 'MySourcedConfiguration', {
  application,
  location: appconfig.ConfigurationSource.fromBucket(bucket, 'path/to/file.json'),
  deploymentStrategy: new appconfig.DeploymentStrategy(this, 'MyDeploymentStrategy', {
    rolloutStrategy: appconfig.RolloutStrategy.linear({
      growthFactor: 15,
      deploymentDuration: Duration.minutes(30),
      finalBakeTime: Duration.minutes(15),
    }),
  }),
});
python
# application: appconfig.Application
# bucket: s3.Bucket


appconfig.SourcedConfiguration(self, "MySourcedConfiguration",
    application=application,
    location=appconfig.ConfigurationSource.from_bucket(bucket, "path/to/file.json"),
    deployment_strategy=appconfig.DeploymentStrategy(self, "MyDeploymentStrategy",
        rollout_strategy=appconfig.RolloutStrategy.linear(
            growth_factor=15,
            deployment_duration=Duration.minutes(30),
            final_bake_time=Duration.minutes(15)
        )
    )
)
java
Application application;
Bucket bucket;


SourcedConfiguration.Builder.create(this, "MySourcedConfiguration")
        .application(application)
        .location(ConfigurationSource.fromBucket(bucket, "path/to/file.json"))
        .deploymentStrategy(DeploymentStrategy.Builder.create(this, "MyDeploymentStrategy")
                .rolloutStrategy(RolloutStrategy.linear(RolloutStrategyProps.builder()
                        .growthFactor(15)
                        .deploymentDuration(Duration.minutes(30))
                        .finalBakeTime(Duration.minutes(15))
                        .build()))
                .build())
        .build();
csharp
Application application;
Bucket bucket;


new SourcedConfiguration(this, "MySourcedConfiguration", new SourcedConfigurationProps {
    Application = application,
    Location = ConfigurationSource.FromBucket(bucket, "path/to/file.json"),
    DeploymentStrategy = new DeploymentStrategy(this, "MyDeploymentStrategy", new DeploymentStrategyProps {
        RolloutStrategy = RolloutStrategy.Linear(new RolloutStrategyProps {
            GrowthFactor = 15,
            DeploymentDuration = Duration.Minutes(30),
            FinalBakeTime = Duration.Minutes(15)
        })
    })
});
go
var application Application
var bucket Bucket


appconfig.NewSourcedConfiguration(this, jsii.String("MySourcedConfiguration"), &SourcedConfigurationProps{
	Application: Application,
	Location: appconfig.ConfigurationSource_FromBucket(bucket, jsii.String("path/to/file.json")),
	DeploymentStrategy: appconfig.NewDeploymentStrategy(this, jsii.String("MyDeploymentStrategy"), &DeploymentStrategyProps{
		RolloutStrategy: appconfig.RolloutStrategy_Linear(&RolloutStrategyProps{
			GrowthFactor: jsii.Number(15),
			DeploymentDuration: awscdk.Duration_Minutes(jsii.Number(30)),
			FinalBakeTime: awscdk.Duration_*Minutes(jsii.Number(15)),
		}),
	}),
})

Deletion Protection Check ​

You can enable deletion protection on the environment and configuration profile by setting the deletionProtectionCheck property.

  • ACCOUNT_DEFAULT: The default setting, which uses account-level deletion protection. To configure account-level deletion protection, use the UpdateAccountSettings API.
  • APPLY: Instructs the deletion protection check to run, even if deletion protection is disabled at the account level. APPLY also forces the deletion protection check to run against resources created in the past hour, which are normally excluded from deletion protection checks.
  • BYPASS: Instructs AWS AppConfig to bypass the deletion protection check and delete an environment even if deletion protection would have otherwise prevented it.
ts
declare const application: appconfig.Application;
declare const alarm: cloudwatch.Alarm;
declare const compositeAlarm: cloudwatch.CompositeAlarm;
declare const bucket: s3.Bucket;

// Environment deletion protection check
new appconfig.Environment(this, 'MyEnvironment', {
  application,
  deletionProtectionCheck: appconfig.DeletionProtectionCheck.APPLY,
});

// configuration profile with deletion protection check
new appconfig.HostedConfiguration(this, 'MyHostedConfigFromFile', {
  application,
  content: appconfig.ConfigurationContent.fromFile('config.json'),
  deletionProtectionCheck: appconfig.DeletionProtectionCheck.BYPASS,
});

new appconfig.SourcedConfiguration(this, 'MySourcedConfiguration', {
  application,
  location: appconfig.ConfigurationSource.fromBucket(bucket, 'path/to/file.json'),
  deletionProtectionCheck: appconfig.DeletionProtectionCheck.ACCOUNT_DEFAULT,
});
python
# application: appconfig.Application
# alarm: cloudwatch.Alarm
# composite_alarm: cloudwatch.CompositeAlarm
# bucket: s3.Bucket


# Environment deletion protection check
appconfig.Environment(self, "MyEnvironment",
    application=application,
    deletion_protection_check=appconfig.DeletionProtectionCheck.APPLY
)

# configuration profile with deletion protection check
appconfig.HostedConfiguration(self, "MyHostedConfigFromFile",
    application=application,
    content=appconfig.ConfigurationContent.from_file("config.json"),
    deletion_protection_check=appconfig.DeletionProtectionCheck.BYPASS
)

appconfig.SourcedConfiguration(self, "MySourcedConfiguration",
    application=application,
    location=appconfig.ConfigurationSource.from_bucket(bucket, "path/to/file.json"),
    deletion_protection_check=appconfig.DeletionProtectionCheck.ACCOUNT_DEFAULT
)
java
Application application;
Alarm alarm;
CompositeAlarm compositeAlarm;
Bucket bucket;


// Environment deletion protection check
// Environment deletion protection check
Environment.Builder.create(this, "MyEnvironment")
        .application(application)
        .deletionProtectionCheck(DeletionProtectionCheck.APPLY)
        .build();

// configuration profile with deletion protection check
// configuration profile with deletion protection check
HostedConfiguration.Builder.create(this, "MyHostedConfigFromFile")
        .application(application)
        .content(ConfigurationContent.fromFile("config.json"))
        .deletionProtectionCheck(DeletionProtectionCheck.BYPASS)
        .build();

SourcedConfiguration.Builder.create(this, "MySourcedConfiguration")
        .application(application)
        .location(ConfigurationSource.fromBucket(bucket, "path/to/file.json"))
        .deletionProtectionCheck(DeletionProtectionCheck.ACCOUNT_DEFAULT)
        .build();
csharp
Application application;
Alarm alarm;
CompositeAlarm compositeAlarm;
Bucket bucket;


// Environment deletion protection check
// Environment deletion protection check
new Environment(this, "MyEnvironment", new EnvironmentProps {
    Application = application,
    DeletionProtectionCheck = DeletionProtectionCheck.APPLY
});

// configuration profile with deletion protection check
// configuration profile with deletion protection check
new HostedConfiguration(this, "MyHostedConfigFromFile", new HostedConfigurationProps {
    Application = application,
    Content = ConfigurationContent.FromFile("config.json"),
    DeletionProtectionCheck = DeletionProtectionCheck.BYPASS
});

new SourcedConfiguration(this, "MySourcedConfiguration", new SourcedConfigurationProps {
    Application = application,
    Location = ConfigurationSource.FromBucket(bucket, "path/to/file.json"),
    DeletionProtectionCheck = DeletionProtectionCheck.ACCOUNT_DEFAULT
});
go
var application Application
var alarm Alarm
var compositeAlarm CompositeAlarm
var bucket Bucket


// Environment deletion protection check
// Environment deletion protection check
appconfig.NewEnvironment(this, jsii.String("MyEnvironment"), &EnvironmentProps{
	Application: Application,
	DeletionProtectionCheck: appconfig.DeletionProtectionCheck_APPLY,
})

// configuration profile with deletion protection check
// configuration profile with deletion protection check
appconfig.NewHostedConfiguration(this, jsii.String("MyHostedConfigFromFile"), &HostedConfigurationProps{
	Application: Application,
	Content: appconfig.ConfigurationContent_FromFile(jsii.String("config.json")),
	DeletionProtectionCheck: appconfig.DeletionProtectionCheck_BYPASS,
})

appconfig.NewSourcedConfiguration(this, jsii.String("MySourcedConfiguration"), &SourcedConfigurationProps{
	Application: Application,
	Location: appconfig.ConfigurationSource_FromBucket(bucket, jsii.String("path/to/file.json")),
	DeletionProtectionCheck: appconfig.DeletionProtectionCheck_ACCOUNT_DEFAULT,
})

Extension ​

An extension augments your ability to inject logic or behavior at different points during the AWS AppConfig workflow of creating or deploying a configuration. You can associate these types of tasks with AWS AppConfig applications, environments, and configuration profiles. See: https://docs.aws.amazon.com/appconfig/latest/userguide/working-with-appconfig-extensions.html

An extension defines one or more actions, that it performs during an AWS AppConfig workflow. Each action is invoked either when you interact with AWS AppConfig or when AWS AppConfig is performing a process on your behalf. These invocation points are called action points. AWS AppConfig extensions support the following action points:

  • PRE_START_DEPLOYMENT
  • PRE_CREATE_HOSTED_CONFIGURATION_VERSION
  • ON_DEPLOYMENT_START
  • ON_DEPLOYMENT_STEP
  • ON_DEPLOYMENT_BAKING
  • ON_DEPLOYMENT_COMPLETE
  • ON_DEPLOYMENT_ROLLED_BACK
  • AT_DEPLOYMENT_TICK

See: https://docs.aws.amazon.com/appconfig/latest/userguide/working-with-appconfig-extensions-about.html

AWS Lambda destination ​

Use an AWS Lambda as the event destination for an extension.

ts
declare const fn: lambda.Function;

new appconfig.Extension(this, 'MyExtension', {
  actions: [
    new appconfig.Action({
      actionPoints: [appconfig.ActionPoint.ON_DEPLOYMENT_START],
      eventDestination: new appconfig.LambdaDestination(fn),
    }),
  ],
});
python
# fn: lambda.Function


appconfig.Extension(self, "MyExtension",
    actions=[
        appconfig.Action(
            action_points=[appconfig.ActionPoint.ON_DEPLOYMENT_START],
            event_destination=appconfig.LambdaDestination(fn)
        )
    ]
)
java
Function fn;


Extension.Builder.create(this, "MyExtension")
        .actions(List.of(
            Action.Builder.create()
                    .actionPoints(List.of(ActionPoint.ON_DEPLOYMENT_START))
                    .eventDestination(new LambdaDestination(fn))
                    .build()))
        .build();
csharp
Function fn;


new Extension(this, "MyExtension", new ExtensionProps {
    Actions = new [] {
        new Action(new ActionProps {
            ActionPoints = new [] { ActionPoint.ON_DEPLOYMENT_START },
            EventDestination = new LambdaDestination(fn)
        }) }
});
go
var fn Function


appconfig.NewExtension(this, jsii.String("MyExtension"), &ExtensionProps{
	Actions: []Action{
		appconfig.NewAction(&ActionProps{
			ActionPoints: []ActionPoint{
				appconfig.ActionPoint_ON_DEPLOYMENT_START,
			},
			EventDestination: appconfig.NewLambdaDestination(fn),
		}),
	},
})

Lambda extension with parameters:

ts
declare const fn: lambda.Function;

new appconfig.Extension(this, 'MyExtension', {
  actions: [
    new appconfig.Action({
      actionPoints: [appconfig.ActionPoint.ON_DEPLOYMENT_START],
      eventDestination: new appconfig.LambdaDestination(fn),
    }),
  ],
  parameters: [
    appconfig.Parameter.required('testParam', 'true'),
    appconfig.Parameter.notRequired('testNotRequiredParam'),
  ]
});
python
# fn: lambda.Function


appconfig.Extension(self, "MyExtension",
    actions=[
        appconfig.Action(
            action_points=[appconfig.ActionPoint.ON_DEPLOYMENT_START],
            event_destination=appconfig.LambdaDestination(fn)
        )
    ],
    parameters=[
        appconfig.Parameter.required("testParam", "true"),
        appconfig.Parameter.not_required("testNotRequiredParam")
    ]
)
java
Function fn;


Extension.Builder.create(this, "MyExtension")
        .actions(List.of(
            Action.Builder.create()
                    .actionPoints(List.of(ActionPoint.ON_DEPLOYMENT_START))
                    .eventDestination(new LambdaDestination(fn))
                    .build()))
        .parameters(List.of(Parameter.required("testParam", "true"), Parameter.notRequired("testNotRequiredParam")))
        .build();
csharp
Function fn;


new Extension(this, "MyExtension", new ExtensionProps {
    Actions = new [] {
        new Action(new ActionProps {
            ActionPoints = new [] { ActionPoint.ON_DEPLOYMENT_START },
            EventDestination = new LambdaDestination(fn)
        }) },
    Parameters = new [] { Parameter.Required("testParam", "true"), Parameter.NotRequired("testNotRequiredParam") }
});
go
var fn Function


appconfig.NewExtension(this, jsii.String("MyExtension"), &ExtensionProps{
	Actions: []Action{
		appconfig.NewAction(&ActionProps{
			ActionPoints: []ActionPoint{
				appconfig.ActionPoint_ON_DEPLOYMENT_START,
			},
			EventDestination: appconfig.NewLambdaDestination(fn),
		}),
	},
	Parameters: []Parameter{
		appconfig.Parameter_Required(jsii.String("testParam"), jsii.String("true")),
		appconfig.Parameter_NotRequired(jsii.String("testNotRequiredParam")),
	},
})

Amazon Simple Queue Service (SQS) destination ​

Use a queue as the event destination for an extension.

ts
declare const queue: sqs.Queue;

new appconfig.Extension(this, 'MyExtension', {
  actions: [
    new appconfig.Action({
      actionPoints: [appconfig.ActionPoint.ON_DEPLOYMENT_START],
      eventDestination: new appconfig.SqsDestination(queue),
    }),
  ],
});
python
# queue: sqs.Queue


appconfig.Extension(self, "MyExtension",
    actions=[
        appconfig.Action(
            action_points=[appconfig.ActionPoint.ON_DEPLOYMENT_START],
            event_destination=appconfig.SqsDestination(queue)
        )
    ]
)
java
Queue queue;


Extension.Builder.create(this, "MyExtension")
        .actions(List.of(
            Action.Builder.create()
                    .actionPoints(List.of(ActionPoint.ON_DEPLOYMENT_START))
                    .eventDestination(new SqsDestination(queue))
                    .build()))
        .build();
csharp
Queue queue;


new Extension(this, "MyExtension", new ExtensionProps {
    Actions = new [] {
        new Action(new ActionProps {
            ActionPoints = new [] { ActionPoint.ON_DEPLOYMENT_START },
            EventDestination = new SqsDestination(queue)
        }) }
});
go
var queue Queue


appconfig.NewExtension(this, jsii.String("MyExtension"), &ExtensionProps{
	Actions: []Action{
		appconfig.NewAction(&ActionProps{
			ActionPoints: []ActionPoint{
				appconfig.ActionPoint_ON_DEPLOYMENT_START,
			},
			EventDestination: appconfig.NewSqsDestination(queue),
		}),
	},
})

Amazon Simple Notification Service (SNS) destination ​

Use an SNS topic as the event destination for an extension.

ts
declare const topic: sns.Topic;

new appconfig.Extension(this, 'MyExtension', {
  actions: [
    new appconfig.Action({
      actionPoints: [appconfig.ActionPoint.ON_DEPLOYMENT_START],
      eventDestination: new appconfig.SnsDestination(topic),
    }),
  ],
});
python
# topic: sns.Topic


appconfig.Extension(self, "MyExtension",
    actions=[
        appconfig.Action(
            action_points=[appconfig.ActionPoint.ON_DEPLOYMENT_START],
            event_destination=appconfig.SnsDestination(topic)
        )
    ]
)
java
Topic topic;


Extension.Builder.create(this, "MyExtension")
        .actions(List.of(
            Action.Builder.create()
                    .actionPoints(List.of(ActionPoint.ON_DEPLOYMENT_START))
                    .eventDestination(new SnsDestination(topic))
                    .build()))
        .build();
csharp
Topic topic;


new Extension(this, "MyExtension", new ExtensionProps {
    Actions = new [] {
        new Action(new ActionProps {
            ActionPoints = new [] { ActionPoint.ON_DEPLOYMENT_START },
            EventDestination = new SnsDestination(topic)
        }) }
});
go
var topic Topic


appconfig.NewExtension(this, jsii.String("MyExtension"), &ExtensionProps{
	Actions: []Action{
		appconfig.NewAction(&ActionProps{
			ActionPoints: []ActionPoint{
				appconfig.ActionPoint_ON_DEPLOYMENT_START,
			},
			EventDestination: appconfig.NewSnsDestination(topic),
		}),
	},
})

Amazon EventBridge destination ​

Use the default event bus as the event destination for an extension.

ts
const bus = events.EventBus.fromEventBusName(this, 'MyEventBus', 'default');

new appconfig.Extension(this, 'MyExtension', {
  actions: [
    new appconfig.Action({
      actionPoints: [appconfig.ActionPoint.ON_DEPLOYMENT_START],
      eventDestination: new appconfig.EventBridgeDestination(bus),
    }),
  ],
});
python
bus = events.EventBus.from_event_bus_name(self, "MyEventBus", "default")

appconfig.Extension(self, "MyExtension",
    actions=[
        appconfig.Action(
            action_points=[appconfig.ActionPoint.ON_DEPLOYMENT_START],
            event_destination=appconfig.EventBridgeDestination(bus)
        )
    ]
)
java
IEventBus bus = EventBus.fromEventBusName(this, "MyEventBus", "default");

Extension.Builder.create(this, "MyExtension")
        .actions(List.of(
            Action.Builder.create()
                    .actionPoints(List.of(ActionPoint.ON_DEPLOYMENT_START))
                    .eventDestination(new EventBridgeDestination(bus))
                    .build()))
        .build();
csharp
var bus = EventBus.FromEventBusName(this, "MyEventBus", "default");

new Extension(this, "MyExtension", new ExtensionProps {
    Actions = new [] {
        new Action(new ActionProps {
            ActionPoints = new [] { ActionPoint.ON_DEPLOYMENT_START },
            EventDestination = new EventBridgeDestination(bus)
        }) }
});
go
bus := events.EventBus_FromEventBusName(this, jsii.String("MyEventBus"), jsii.String("default"))

appconfig.NewExtension(this, jsii.String("MyExtension"), &ExtensionProps{
	Actions: []Action{
		appconfig.NewAction(&ActionProps{
			ActionPoints: []ActionPoint{
				appconfig.ActionPoint_ON_DEPLOYMENT_START,
			},
			EventDestination: appconfig.NewEventBridgeDestination(bus),
		}),
	},
})

You can also add extensions and their associations directly by calling onDeploymentComplete() or any other action point method on the AWS AppConfig application, configuration, or environment resource. To add an association to an existing extension, you can call addExtension() on the resource.

Adding an association to an AWS AppConfig application:

ts
declare const application: appconfig.Application;
declare const extension: appconfig.Extension;
declare const lambdaDestination: appconfig.LambdaDestination;

application.addExtension(extension);
application.onDeploymentComplete(lambdaDestination);
python
# application: appconfig.Application
# extension: appconfig.Extension
# lambda_destination: appconfig.LambdaDestination


application.add_extension(extension)
application.on_deployment_complete(lambda_destination)
java
Application application;
Extension extension;
LambdaDestination lambdaDestination;


application.addExtension(extension);
application.onDeploymentComplete(lambdaDestination);
csharp
Application application;
Extension extension;
LambdaDestination lambdaDestination;


application.AddExtension(extension);
application.OnDeploymentComplete(lambdaDestination);
go
var application Application
var extension Extension
var lambdaDestination LambdaDestination


application.addExtension(extension)
application.onDeploymentComplete(lambdaDestination)

Types ​

NameKindSummary
ApplicationConstruct (L2)An AWS AppConfig application.
DeploymentStrategyConstruct (L2)An AWS AppConfig deployment strategy.
EnvironmentConstruct (L2)An AWS AppConfig environment.
ExtensionConstruct (L2)An AWS AppConfig extension.
CfnApplicationConstruct (L1)The AWS::AppConfig::Application resource creates an application.
CfnConfigurationProfileConstruct (L1)The AWS::AppConfig::ConfigurationProfile resource creates a configuration profile that enables AWS AppConfig to access the configuration source.
CfnDeploymentConstruct (L1)The AWS::AppConfig::Deployment resource starts a deployment.
CfnDeploymentStrategyConstruct (L1)The AWS::AppConfig::DeploymentStrategy resource creates an AWS AppConfig deployment strategy.
CfnEnvironmentConstruct (L1)The AWS::AppConfig::Environment resource creates an environment, which is a logical deployment group of AWS AppConfig targets, such as applications in a Beta or Production environment.
CfnExperimentDefinitionConstruct (L1)Resource Type definition for AWS::AppConfig::ExperimentDefinition.
CfnExperimentRunConstruct (L1)Resource Type definition for AWS::AppConfig::ExperimentRun.
CfnExtensionConstruct (L1)Creates an AWS AppConfig extension.
CfnExtensionAssociationConstruct (L1)When you create an extension or configure an AWS authored extension, you associate the extension with an AWS AppConfig application, environment, or configuration profile.
CfnHostedConfigurationVersionConstruct (L1)Create a new configuration in the AWS AppConfig hosted configuration store.
ActionClassDefines an action for an extension.
ActionPointEnumDefines Extension action points.
ActionPropsStructProperties for the Action construct.
ApplicationPropsStructProperties for the Application construct.
CfnApplicationPropsStructProperties for defining a CfnApplication.
CfnConfigurationProfile.ValidatorsPropertyStructA validator provides a syntactic or semantic check to ensure the configuration that you want to deploy functions as intended.
CfnConfigurationProfilePropsStructProperties for defining a CfnConfigurationProfile.
CfnDeployment.DynamicExtensionParametersPropertyStructA map of dynamic extension parameter names to values to pass to associated extensions with PRE_START_DEPLOYMENT actions.
CfnDeploymentPropsStructProperties for defining a CfnDeployment.
CfnDeploymentStrategyPropsStructProperties for defining a CfnDeploymentStrategy.
CfnEnvironment.MonitorPropertyStructAmazon CloudWatch alarms to monitor during the deployment process.
CfnEnvironment.MonitorsPropertyStruct
CfnEnvironmentPropsStructProperties for defining a CfnEnvironment.
CfnExperimentDefinition.AttributeValuePropertyStructA typed attribute value for a treatment flag.
CfnExperimentDefinition.TreatmentPropertyStructA treatment variant with weight and flag value.
CfnExperimentDefinitionPropsStructProperties for defining a CfnExperimentDefinition.
CfnExperimentRun.TreatmentOverridesPropertyStructTreatment overrides for specific entities.
CfnExperimentRunPropsStructProperties for defining a CfnExperimentRun.
CfnExtension.ActionPropertyStructThe actions defined in the extension.
CfnExtension.ParameterPropertyStructA value such as an Amazon Resource Name (ARN) or an Amazon Simple Notification Service topic entered in an extension when invoked.
CfnExtensionAssociationPropsStructProperties for defining a CfnExtensionAssociation.
CfnExtensionPropsStructProperties for defining a CfnExtension.
CfnHostedConfigurationVersionPropsStructProperties for defining a CfnHostedConfigurationVersion.
ConfigurationContentClassDefines the hosted configuration content.
ConfigurationOptionsStructOptions for the Configuration construct.
ConfigurationPropsStructProperties for the Configuration construct.
ConfigurationSourceClassDefines the integrated configuration sources.
ConfigurationSourceTypeEnumThe configuration source type.
ConfigurationTypeEnumThe configuration type.
DeletionProtectionCheckEnumThe deletion protection check options.
DeploymentStrategyIdClassDefines the deployment strategy ID's of AWS AppConfig deployment strategies.
DeploymentStrategyPropsStructProperties for DeploymentStrategy.
EnvironmentAttributesStructAttributes of an existing AWS AppConfig environment to import it.
EnvironmentOptionsStructOptions for the Environment construct.
EnvironmentPropsStructProperties for the Environment construct.
EventBridgeDestinationClassUse an Amazon EventBridge event bus as an event destination.
ExtensibleBaseClassThis class is meant to be used by AWS AppConfig resources (application, configuration profile, environment) directly.
ExtensionAttributesStructAttributes of an existing AWS AppConfig extension to import.
ExtensionOptionsStructOptions for the Extension construct.
ExtensionPropsStructProperties for the Extension construct.
GrowthTypeEnumDefines the growth type of the deployment strategy.
HostedConfigurationConstructA hosted configuration represents configuration stored in the AWS AppConfig hosted configuration store.
HostedConfigurationOptionsStructOptions for HostedConfiguration.
HostedConfigurationPropsStructProperties for HostedConfiguration.
IApplicationInterface
IConfigurationInterface
IDeploymentStrategyInterface
IEnvironmentInterface
IEventDestinationInterfaceImplemented by allowed extension event destinations.
IExtensibleInterfaceDefines the extensible base implementation for extension association resources.
IExtensionInterface
IValidatorInterface
JsonSchemaValidatorClassDefines a JSON Schema validator.
LambdaDestinationClassUse an AWS Lambda function as an event destination.
LambdaValidatorClassDefines an AWS Lambda validator.
MonitorClassDefines monitors that will be associated with an AWS AppConfig environment.
MonitorTypeEnumThe type of Monitor.
ParameterClassDefines a parameter for an extension.
PlatformEnumDefines the platform for the AWS AppConfig Lambda extension.
RolloutStrategyClassDefines the rollout strategy for a deployment strategy and includes the growth factor, deployment duration, growth type, and optionally final bake time.
RolloutStrategyPropsStructProperties for the Rollout Strategy.
SnsDestinationClassUse an Amazon SNS topic as an event destination.
SourcedConfigurationConstructA sourced configuration represents configuration stored in an Amazon S3 bucket, AWS Secrets Manager secret, Systems Manager (SSM) Parameter Store parameter, SSM document, or AWS CodePipeline.
SourcedConfigurationOptionsStructOptions for SourcedConfiguration.
SourcedConfigurationPropsStructProperties for SourcedConfiguration.
SourceTypeEnumDefines the source type for event destinations.
SqsDestinationClassUse an Amazon SQS queue as an event destination.
ValidatorTypeEnumThe validator type.