@Stability(value=Stable)
See: Description
| Interface | Description |
|---|---|
| AppProps |
Initialization props for apps.
|
| ArnComponents | |
| CfnAutoScalingReplacingUpdate |
Specifies whether an Auto Scaling group and the instances it contains are replaced during an update.
|
| CfnAutoScalingRollingUpdate |
To specify how AWS CloudFormation handles rolling updates for an Auto Scaling group, use the AutoScalingRollingUpdate policy.
|
| CfnAutoScalingScheduledAction |
With scheduled actions, the group size properties of an Auto Scaling group can change at any time.
|
| CfnCodeDeployLambdaAliasUpdate |
To perform an AWS CodeDeploy deployment when the version changes on an AWS::Lambda::Alias resource, use the CodeDeployLambdaAliasUpdate update policy.
|
| CfnConditionProps | |
| CfnCreationPolicy |
Associate the CreationPolicy attribute with a resource to prevent its status from reaching create complete until AWS CloudFormation receives a specified number of success signals or the timeout period is exceeded.
|
| CfnDynamicReferenceProps |
Properties for a Dynamic Reference.
|
| CfnIncludeProps | |
| CfnMappingProps | |
| CfnOutputProps | |
| CfnParameterProps | |
| CfnResourceAutoScalingCreationPolicy |
For an Auto Scaling group replacement update, specifies how many instances must signal success for the update to succeed.
|
| CfnResourceProps | |
| CfnResourceSignal |
When AWS CloudFormation creates the associated resource, configures the number of required success signals and the length of time that AWS CloudFormation waits for those signals.
|
| CfnRuleAssertion |
A rule assertion.
|
| CfnRuleProps |
A rule can include a RuleCondition property and must include an Assertions property.
|
| CfnTag | |
| CfnUpdatePolicy |
Use the UpdatePolicy attribute to specify how AWS CloudFormation handles updates to the AWS::AutoScaling::AutoScalingGroup resource.
|
| Dependency |
A single dependency.
|
| EncodingOptions |
Properties to string encodings.
|
| Environment |
The deployment environment for a stack.
|
| GetContextKeyOptions |
EXPERIMENTAL
|
| GetContextKeyResult |
EXPERIMENTAL
|
| GetContextValueOptions |
EXPERIMENTAL
|
| GetContextValueResult |
EXPERIMENTAL
|
| IAnyProducer |
Interface for lazy untyped value producers.
|
| IAspect |
Represents an Aspect.
|
| ICfnConditionExpression |
Represents a CloudFormation element that can be used within a Condition.
|
| ICfnResourceOptions | |
| IConstruct |
Represents a construct.
|
| IDependable |
Trait marker for classes that can be depended upon.
|
| IFragmentConcatenator |
Function used to concatenate symbols in the target document language.
|
| IListProducer |
Interface for lazy list producers.
|
| INumberProducer |
Interface for lazy number producers.
|
| IPostProcessor |
A Token that can post-process the complete resolved value, after resolve() has recursed over it.
|
| IResolvable |
Interface for values that can be resolvable later.
|
| IResolveContext |
Current resolution context for tokens.
|
| IResource |
Interface for the Resource construct.
|
| IStringProducer |
Interface for lazy string producers.
|
| ISynthesisSession |
Represents a single session of synthesis.
|
| ITaggable |
Interface to implement tags.
|
| ITemplateOptions |
CloudFormation template options for a stack.
|
| ITokenMapper |
Interface to apply operation to tokens in a string.
|
| ITokenResolver |
How to resolve tokens.
|
| LazyAnyValueOptions |
Options for creating lazy untyped tokens.
|
| LazyListValueOptions |
Options for creating a lazy list token.
|
| LazyStringValueOptions |
Options for creating a lazy string token.
|
| OutgoingReference |
Represents a reference that originates from a specific construct.
|
| RemovalPolicyOptions | |
| ResolveOptions |
Options to the resolve() operation.
|
| ResourceProps |
Construction properties for
Resource. |
| SecretsManagerSecretOptions |
Options for referencing a secret value from Secrets Manager.
|
| StackProps | |
| SynthesisOptions |
Options for synthesis.
|
| TagProps |
Properties for a tag.
|
| TimeConversionOptions |
Options for how to convert time to a different unit.
|
| ValidationError |
An error returned during the validation phase.
|
| Class | Description |
|---|---|
| App |
A construct which represents an entire CDK app.
|
| AppProps.Builder |
A builder for
AppProps |
| AppProps.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| Arn | |
| ArnComponents.Builder |
A builder for
ArnComponents |
| ArnComponents.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| Aws |
Accessor for pseudo parameters.
|
| CfnAutoScalingReplacingUpdate.Builder |
A builder for
CfnAutoScalingReplacingUpdate |
| CfnAutoScalingReplacingUpdate.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnAutoScalingRollingUpdate.Builder |
A builder for
CfnAutoScalingRollingUpdate |
| CfnAutoScalingRollingUpdate.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnAutoScalingScheduledAction.Builder |
A builder for
CfnAutoScalingScheduledAction |
| CfnAutoScalingScheduledAction.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnCodeDeployLambdaAliasUpdate.Builder |
A builder for
CfnCodeDeployLambdaAliasUpdate |
| CfnCodeDeployLambdaAliasUpdate.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnCondition |
Represents a CloudFormation condition, for resources which must be conditionally created and the determination must be made at deploy time.
|
| CfnConditionProps.Builder |
A builder for
CfnConditionProps |
| CfnConditionProps.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnCreationPolicy.Builder |
A builder for
CfnCreationPolicy |
| CfnCreationPolicy.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnDynamicReference |
References a dynamically retrieved value.
|
| CfnDynamicReferenceProps.Builder |
A builder for
CfnDynamicReferenceProps |
| CfnDynamicReferenceProps.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnElement |
An element of a CloudFormation stack.
|
| CfnInclude |
Includes a CloudFormation template into a stack.
|
| CfnIncludeProps.Builder |
A builder for
CfnIncludeProps |
| CfnIncludeProps.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnMapping |
Represents a CloudFormation mapping.
|
| CfnMappingProps.Builder |
A builder for
CfnMappingProps |
| CfnMappingProps.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnOutput | |
| CfnOutputProps.Builder |
A builder for
CfnOutputProps |
| CfnOutputProps.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnParameter |
A CloudFormation parameter.
|
| CfnParameterProps.Builder |
A builder for
CfnParameterProps |
| CfnParameterProps.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnRefElement |
Base class for referenceable CloudFormation constructs which are not Resources.
|
| CfnResource |
Represents a CloudFormation resource.
|
| CfnResourceAutoScalingCreationPolicy.Builder |
A builder for
CfnResourceAutoScalingCreationPolicy |
| CfnResourceAutoScalingCreationPolicy.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnResourceProps.Builder |
A builder for
CfnResourceProps |
| CfnResourceProps.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnResourceSignal.Builder |
A builder for
CfnResourceSignal |
| CfnResourceSignal.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnRule |
The Rules that define template constraints in an AWS Service Catalog portfolio describe when end users can use the template and which values they can specify for parameters that are declared in the AWS CloudFormation template used to create the product they are attempting to use.
|
| CfnRuleAssertion.Builder |
A builder for
CfnRuleAssertion |
| CfnRuleAssertion.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnRuleProps.Builder |
A builder for
CfnRuleProps |
| CfnRuleProps.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnTag.Builder |
A builder for
CfnTag |
| CfnTag.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| CfnUpdatePolicy.Builder |
A builder for
CfnUpdatePolicy |
| CfnUpdatePolicy.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| ConcreteDependable |
A set of constructs to be used as a dependable.
|
| Construct |
Represents the building block of the construct graph.
|
| ConstructNode |
Represents the construct node in the scope tree.
|
| ContextProvider |
Base class for the model side of context providers.
|
| DefaultTokenResolver |
Default resolver implementation.
|
| DependableTrait |
Trait for IDependable.
|
| Dependency.Builder |
A builder for
Dependency |
| Dependency.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| Duration |
Represents a length of time.
|
| EncodingOptions.Builder |
A builder for
EncodingOptions |
| EncodingOptions.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| Environment.Builder |
A builder for
Environment |
| Environment.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| Fn |
CloudFormation intrinsic functions.
|
| GetContextKeyOptions.Builder |
A builder for
GetContextKeyOptions |
| GetContextKeyOptions.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| GetContextKeyResult.Builder |
A builder for
GetContextKeyResult |
| GetContextKeyResult.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| GetContextValueOptions.Builder |
A builder for
GetContextValueOptions |
| GetContextValueOptions.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| GetContextValueResult.Builder |
A builder for
GetContextValueResult |
| GetContextValueResult.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| IAnyProducer.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| IAspect.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| ICfnConditionExpression.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| ICfnResourceOptions.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| IConstruct.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| IDependable.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| IFragmentConcatenator.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| IListProducer.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| Intrinsic |
Token subclass that represents values intrinsic to the target document language.
|
| INumberProducer.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| IPostProcessor.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| IResolvable.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| IResolveContext.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| IResource.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| IStringProducer.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| ISynthesisSession.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| ITaggable.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| ITemplateOptions.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| ITokenMapper.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| ITokenResolver.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| Lazy |
Lazily produce a value.
|
| LazyAnyValueOptions.Builder |
A builder for
LazyAnyValueOptions |
| LazyAnyValueOptions.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| LazyListValueOptions.Builder |
A builder for
LazyListValueOptions |
| LazyListValueOptions.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| LazyStringValueOptions.Builder |
A builder for
LazyStringValueOptions |
| LazyStringValueOptions.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| OutgoingReference.Builder |
A builder for
OutgoingReference |
| OutgoingReference.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| PhysicalName |
Includes special markers for automatic generation of physical names.
|
| Reference |
An intrinsic Token that represents a reference to a construct.
|
| RemovalPolicyOptions.Builder |
A builder for
RemovalPolicyOptions |
| RemovalPolicyOptions.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| RemoveTag |
The RemoveTag Aspect will handle removing tags from this node and children.
|
| ResolveOptions.Builder |
A builder for
ResolveOptions |
| ResolveOptions.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| Resource |
A construct which represents an AWS resource.
|
| ResourceProps.Builder |
A builder for
ResourceProps |
| ResourceProps.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| ScopedAws |
Accessor for scoped pseudo parameters.
|
| SecretsManagerSecretOptions.Builder |
A builder for
SecretsManagerSecretOptions |
| SecretsManagerSecretOptions.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| SecretValue |
Work with secret values in the CDK.
|
| Stack |
A root construct which represents a single CloudFormation stack.
|
| StackProps.Builder |
A builder for
StackProps |
| StackProps.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| StringConcat |
Converts all fragments to strings and concats those.
|
| SynthesisOptions.Builder |
A builder for
SynthesisOptions |
| SynthesisOptions.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| Tag |
The Tag Aspect will handle adding a tag to this node and cascading tags to children.
|
| TagManager |
TagManager facilitates a common implementation of tagging for Constructs.
|
| TagProps.Builder |
A builder for
TagProps |
| TagProps.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| TimeConversionOptions.Builder |
A builder for
TimeConversionOptions |
| TimeConversionOptions.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| Token |
Represents a special or lazily-evaluated value.
|
| Tokenization |
Less oft-needed functions to manipulate Tokens.
|
| TokenizedStringFragments |
Fragments of a concatenated string containing stringified Tokens.
|
| ValidationError.Builder |
A builder for
ValidationError |
| ValidationError.Jsii$Proxy |
A proxy class which represents a concrete javascript instance of this type.
|
| ValidationResult |
Representation of validation results.
|
| ValidationResults |
A collection of validation results.
|
| Enum | Description |
|---|---|
| CfnDeletionPolicy |
With the DeletionPolicy attribute you can preserve or (in some cases) backup a resource when its stack is deleted.
|
| CfnDynamicReferenceService |
The service to retrieve the dynamic reference from.
|
| ConstructOrder |
In what order to return constructs.
|
| RemovalPolicy | |
| TagType |
This library includes the basic building blocks of the AWS Cloud Development Kit (AWS CDK). It defines the core classes that are used in the rest of the AWS Construct Library.
See the AWS CDK Developer Guide for information of most of the capabilities of this library. The rest of this README will only cover topics not already covered in the Developer Guide.
To make specifications of time intervals unambiguous, a single class called
Duration is used throughout the AWS Construct Library by all constructs
that that take a time interval as a parameter (be it for a timeout, a
rate, or something else).
An instance of Duration is constructed by using one of the static factory methods on it:
Duration.seconds(300) // 5 minutes
Duration.minutes(5) // 5 minutes
Duration.hours(1) // 1 hour
Duration.days(7) // 7 days
Duration.parse('PT5M') // 5 minutes
To help avoid accidental storage of secrets as plain text, we use the SecretValue type to
represent secrets. Any construct that takes a value that should be a secret (such as
a password or an access key) will take a parameter of type SecretValue.
The best practice is to store secrets in AWS Secrets Manager and reference them using SecretValue.secretsManager:
const secret = SecretValue.secretsManager('secretId', {
jsonField: 'password' // optional: key of a JSON field to retrieve (defaults to all content),
versionId: 'id' // optional: id of the version (default AWSCURRENT)
versionStage: 'stage' // optional: version stage name (default AWSCURRENT)
});
Using AWS Secrets Manager is the recommended way to reference secrets in a CDK app.
SecretValue also supports the following secret sources:
SecretValue.plainText(secret): stores the secret as plain text in your app and the resulting template (not recommended).SecretValue.ssmSecure(param, version): refers to a secret stored as a SecureString in the SSM Parameter Store.SecretValue.cfnParameter(param): refers to a secret passed through a CloudFormation parameter (must have NoEcho: true).SecretValue.cfnDynamicReference(dynref): refers to a secret described by a CloudFormation dynamic reference (used by ssmSecure and secretsManager).Sometimes you will need to put together or pick apart Amazon Resource Names
(ARNs). The functions stack.formatArn() and stack.parseArn() exist for
this purpose.
formatArn() can be used to build an ARN from components. It will automatically
use the region and account of the stack you're calling it on:
// Builds "arn:<PARTITION>:lambda:<REGION>:<ACCOUNT>:function:MyFunction"
stack.formatArn({
service: 'lambda',
resource: 'function',
sep: ':',
resourceName: 'MyFunction'
});
parseArn() can be used to get a single component from an ARN. parseArn()
will correctly deal with both literal ARNs and deploy-time values (tokens),
but in case of a deploy-time value be aware that the result will be another
deploy-time value which cannot be inspected in the CDK application.
// Extracts the function name out of an AWS Lambda Function ARN
const arnComponents = stack.parseArn(arn, ':');
const functionName = arnComponents.resourceName;
Note that depending on the service, the resource separator can be either
: or /, and the resource name can be either the 6th or 7th
component in the ARN. When using these functions, you will need to know
the format of the ARN you are dealing with.
For an exhaustive list of ARN formats used in AWS, see AWS ARNs and Namespaces in the AWS General Reference.
Sometimes AWS resources depend on other resources, and the creation of one resource must be completed before the next one can be started.
In general, CloudFormation will correctly infer the dependency relationship between resources based on the property values that are used. In the cases where it doesn't, the AWS Construct Library will add the dependency relationship for you.
If you need to add an ordering dependency that is not automatically inferred,
you do so by adding a dependency relationship using
constructA.node.addDependency(constructB). This will add a dependency
relationship between all resources in the scope of constructA and all
resources in the scope of constructB.
If you want a single object to represent a set of constructs that are not
necessarily in the same scope, you can use a ConcreteDependable. The
following creates a single object that represents a dependency on two
construts, constructB and constructC:
// Declare the dependable object
const bAndC = new ConcreteDependable();
bAndC.add(constructB);
bAndC.add(constructC);
// Take the dependency
constructA.node.addDependency(bAndC);
Two different stack instances can have a dependency on one another. This
happens when an resource from one stack is referenced in another stack. In
that case, CDK records the cross-stack referencing of resources,
automatically produces the right CloudFormation primitives, and adds a
dependency between the two stacks. You can also manually add a dependency
between two stacks by using the stackA.addDependency(stackB) method.
A stack dependency has the following implications:
stackA is using resources from
stackB, the reverse is not possible anymore.stackA depends on stackB, running cdk deploy stackA will also
automatically deploy stackB.stackB's deployment will be performed before stackA's deployment.A CDK stack synthesizes to an AWS CloudFormation Template. This section explains how this module allows users to access low-level CloudFormation features when needed.
CloudFormation stack outputs and exports are created using
the CfnOutput class:
new CfnOutput(this, 'OutputName', {
value: bucket.bucketName,
description: 'The name of an S3 bucket', // Optional
exportName: 'Global.BucketName', // Registers a CloudFormation export
});
CloudFormation templates support the use of Parameters to customize a template. They enable CloudFormation users to input custom values to a template each time a stack is created or updated. While the CDK design philosophy favors using build-time parameterization, users may need to use CloudFormation in a number of cases (for example, when migrating an existing stack to the AWS CDK).
Template parameters can be added to a stack by using the CfnParameter class:
new CfnParameter(this, 'MyParameter', {
type: 'Number',
default: 1337,
// See the API reference for more configuration props
});
The value of parameters can then be obtained using one of the value methods.
As parameters are only resolved at deployment time, the values obtained are
placeholder tokens for the real value (Token.isUnresolved() would return true
for those):
const param = new CfnParameter(this, 'ParameterName', { /* config * / });
// If the parameter is a String
param.valueAsString;
// If the parameter is a Number
param.valueAsNumber;
// If the parameter is a List
param.valueAsList;
CloudFormation supports a number of pseudo parameters,
which resolve to useful values at deployment time. CloudFormation pseudo
parameters can be obtained from static members of the Aws class.
It is generally recommended to access pseudo parameters from the scope's stack
instead, which guarantees the values produced are qualifying the designated
stack, which is essential in cases where resources are shared cross-stack:
// "this" is the current construct
const stack = Stack.of(this);
stack.account; // Returns the AWS::AccountId for this stack (or the literal value if known)
stack.region; // Returns the AWS::Region for this stack (or the literal value if known)
stack.partition;
CloudFormation resources can also specify resource
attributes. The CfnResource class allows
accessing those though the cfnOptions property:
const rawBucket = new s3.CfnBucket(this, 'Bucket', { /* ... * / });
// -or-
const rawBucket = bucket.node.defaultChild as s3.CfnBucket;
// then
rawBucket.condition = new CfnCondition(this, 'EnableBucket', { /* ... * / });
rawBucket.cfnOptions.metadata = {
metadataKey: 'MetadataValue',
};
Resource dependencies (the DependsOn attribute) is modified using the
cfnResource.addDependsOn method:
const resourceA = new CfnResource(this, 'ResourceA', { /* ... * / });
const resourceB = new CfnResource(this, 'ResourceB', { /* ... * / });
resourceB.addDependsOn(resourceA);
CloudFormation supports intrinsic functions. These functions
can be accessed from the Fn class, which provides type-safe methods for each
intrinsic function as well as condition expressions:
// To use Fn::Base64
Fn.base64('SGVsbG8gQ0RLIQo=');
// To compose condition expressions:
const environmentParameter = new CfnParameter(this, 'Environment');
Fn.conditionAnd(
// The "Environment" CloudFormation template parameter evaluates to "Production"
Fn.conditionEquals('Production', environmentParameter),
// The AWS::Region pseudo-parameter value is NOT equal to "us-east-1"
Fn.conditionNot(Fn.conditionEquals('us-east-1', Aws.REGION)),
);
When working with deploy-time values (those for which Token.isUnresolved
returns true), idiomatic conditionals from the programming language cannot be
used (the value will not be known until deployment time). When conditional logic
needs to be expressed with un-resolved values, it is necessary to use
CloudFormation conditions by means of the CfnCondition class:
const environmentParameter = new CfnParameter(this, 'Environment');
const isProd = new CfnCondition(this, 'IsProduction', {
expression: Fn.conditionEquals('Production', environmentParameter),
});
// Configuration value that is a different string based on IsProduction
const stage = Fn.conditionIf(isProd.logicalId, 'Beta', 'Prod').toString();
// Make Bucket creation condition to IsProduction by accessing
// and overriding the CloudFormation resource
const bucket = new s3.Bucket(this, 'Bucket');
const cfnBucket = bucket.node.defaultChild as s3.CfnBucket;
cfnBucket.cfnOptions.condition = isProd;
CloudFormation mappings are created and queried using the
CfnMappings class:
const mapping = new CfnMapping(this, 'MappingTable', {
mapping: {
regionName: {
'us-east-1': 'US East (N. Virginia)',
'us-east-2': 'US East (Ohio)',
// ...
},
// ...
}
});
mapping.findInMap('regionName', Aws.REGION);
CloudFormation supports dynamically resolving values
for SSM parameters (including secure strings) and Secrets Manager. Encoding such
references is done using the CfnDynamicReference class:
new CfnDynamicReference(this, 'SecureStringValue', {
service: CfnDynamicReferenceService.SECRETS_MANAGER,
referenceKey: 'secret-id:secret-string:json-key:version-stage:version-id',
});
CloudFormation templates support a number of options, including which Macros or
Transforms to use when deploying the stack. Those can be
configured using the stack.templateOptions property:
const stack = new Stack(app, 'StackName');
stack.templateOptions.description = 'This will appear in the AWS console';
stack.templateOptions.transform = 'AWS::Serverless';
stack.templateOptions.metadata = {
metadataKey: 'MetadataValue',
};
The CfnResource class allows emitting arbitrary entries in the
[Resources][cfn-resources] section of the CloudFormation template.
new CfnResource(this, 'ResourceId', {
type: 'AWS::S3::Bucket',
properties: {
BucketName: 'bucket-name'
},
});
As for any other resource, the logical ID in the CloudFormation template will be generated by the AWS CDK, but the type and properties will be copied verbatim in the synthesized template.
When migrating a CloudFormation stack to the AWS CDK, it can be useful to
include fragments of an existing template verbatim in the synthesized template.
This can be achieved using the CfnInclude class.
new CfnInclude(this, 'ID', {
template: {
Resources: {
Bucket: {
Type: 'AWS::S3::Bucket',
Properties: {
BucketName: 'my-shiny-bucket'
}
}
}
},
});
Copyright © 2019. All rights reserved.