@Stability(value=Stable)
See: Description
| Interface | Description |
|---|---|
| AppProps |
Initialization props for apps.
|
| ArnComponents | |
| AssetOptions |
Asset hash options.
|
| AssetStagingProps |
Initialization properties for `AssetStaging`.
|
| BootstraplessSynthesizerProps |
Construction properties of
BootstraplessSynthesizer. |
| BundlingOptions |
Bundling options.
|
| 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.
|
| CfnCustomResourceProps |
Properties for defining a `AWS::CloudFormation::CustomResource`.
|
| CfnDynamicReferenceProps |
Properties for a Dynamic Reference.
|
| CfnIncludeProps | |
| CfnJsonProps | |
| CfnMacroProps |
Properties for defining a `AWS::CloudFormation::Macro`.
|
| 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.
|
| CfnStackProps |
Properties for defining a `AWS::CloudFormation::Stack`.
|
| CfnTag | |
| CfnUpdatePolicy |
Use the UpdatePolicy attribute to specify how AWS CloudFormation handles updates to the AWS::AutoScaling::AutoScalingGroup resource.
|
| CfnWaitConditionProps |
Properties for defining a `AWS::CloudFormation::WaitCondition`.
|
| CopyOptions |
Obtains applied when copying directories into the staging location.
|
| CustomResourceProps |
Properties to provide a Lambda-backed custom resource.
|
| CustomResourceProviderProps |
Initialization properties for `CustomResourceProvider`.
|
| DefaultStackSynthesizerProps |
Configuration properties for DefaultStackSynthesizer.
|
| Dependency |
A single dependency.
|
| DockerBuildOptions |
Docker build options.
|
| DockerImageAssetLocation |
The location of the published docker image.
|
| DockerImageAssetSource | |
| DockerVolume |
A Docker volume.
|
| EncodingOptions |
Properties to string encodings.
|
| Environment |
The deployment environment for a stack.
|
| FileAssetLocation |
The location of the published file asset.
|
| FileAssetSource |
Represents the source for a file asset.
|
| FingerprintOptions |
Options related to calculating source hash.
|
| FromCloudFormationOptions |
The interface used as the last argument to the fromCloudFormation static method of the generated L1 classes.
|
| GetContextKeyOptions |
EXPERIMENTAL
|
| GetContextKeyResult |
EXPERIMENTAL
|
| GetContextValueOptions |
EXPERIMENTAL
|
| GetContextValueResult |
EXPERIMENTAL
|
| IAnyProducer |
Interface for lazy untyped value producers.
|
| IAspect |
Represents an Aspect.
|
| IAsset |
Common interface for all assets.
|
| ICfnConditionExpression |
Represents a CloudFormation element that can be used within a Condition.
|
| ICfnFinder |
An interface that represents callbacks into a CloudFormation template.
|
| 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.
|
| IInspectable |
Interface for examining a construct and exposing metadata.
|
| 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.
|
| IStackSynthesizer |
Encodes information how a certain Stack should be deployed.
|
| 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.
|
| NestedStackProps |
Initialization props for the `NestedStack` construct.
|
| RemovalPolicyOptions | |
| ResolveOptions |
Options to the resolve() operation.
|
| ResourceProps |
Construction properties for
Resource. |
| SecretsManagerSecretOptions |
Options for referencing a secret value from Secrets Manager.
|
| SizeConversionOptions |
Options for how to convert time to a different unit.
|
| StackProps | |
| StageProps |
Initialization props for a stage.
|
| StageSynthesisOptions |
Options for assemly synthesis.
|
| SynthesisOptions | Deprecated
use `app.synth()` or `stage.synth()` instead
|
| TagManagerOptions |
Options to configure TagManager behavior.
|
| 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.
|
| App.Builder |
A fluent builder for
App. |
| AppProps.Builder |
A builder for
AppProps |
| AppProps.Jsii$Proxy |
An implementation for
AppProps |
| Arn | |
| ArnComponents.Builder |
A builder for
ArnComponents |
| ArnComponents.Jsii$Proxy |
An implementation for
ArnComponents |
| AssetOptions.Builder |
A builder for
AssetOptions |
| AssetOptions.Jsii$Proxy |
An implementation for
AssetOptions |
| AssetStaging |
Stages a file or directory from a location on the file system into a staging directory.
|
| AssetStaging.Builder |
A fluent builder for
AssetStaging. |
| AssetStagingProps.Builder |
A builder for
AssetStagingProps |
| AssetStagingProps.Jsii$Proxy |
An implementation for
AssetStagingProps |
| Aws |
Accessor for pseudo parameters.
|
| BootstraplessSynthesizer |
A special synthesizer that behaves similarly to DefaultStackSynthesizer, but doesn't require bootstrapping the environment it operates in.
|
| BootstraplessSynthesizer.Builder |
A fluent builder for
BootstraplessSynthesizer. |
| BootstraplessSynthesizerProps.Builder |
A builder for
BootstraplessSynthesizerProps |
| BootstraplessSynthesizerProps.Jsii$Proxy |
An implementation for
BootstraplessSynthesizerProps |
| BundlingDockerImage |
A Docker image used for asset bundling.
|
| BundlingOptions.Builder |
A builder for
BundlingOptions |
| BundlingOptions.Jsii$Proxy |
An implementation for
BundlingOptions |
| CfnAutoScalingReplacingUpdate.Builder |
A builder for
CfnAutoScalingReplacingUpdate |
| CfnAutoScalingReplacingUpdate.Jsii$Proxy |
An implementation for
CfnAutoScalingReplacingUpdate |
| CfnAutoScalingRollingUpdate.Builder |
A builder for
CfnAutoScalingRollingUpdate |
| CfnAutoScalingRollingUpdate.Jsii$Proxy |
An implementation for
CfnAutoScalingRollingUpdate |
| CfnAutoScalingScheduledAction.Builder |
A builder for
CfnAutoScalingScheduledAction |
| CfnAutoScalingScheduledAction.Jsii$Proxy |
An implementation for
CfnAutoScalingScheduledAction |
| CfnCodeDeployLambdaAliasUpdate.Builder |
A builder for
CfnCodeDeployLambdaAliasUpdate |
| CfnCodeDeployLambdaAliasUpdate.Jsii$Proxy |
An implementation for
CfnCodeDeployLambdaAliasUpdate |
| CfnCondition |
Represents a CloudFormation condition, for resources which must be conditionally created and the determination must be made at deploy time.
|
| CfnCondition.Builder |
A fluent builder for
CfnCondition. |
| CfnConditionProps.Builder |
A builder for
CfnConditionProps |
| CfnConditionProps.Jsii$Proxy |
An implementation for
CfnConditionProps |
| CfnCreationPolicy.Builder |
A builder for
CfnCreationPolicy |
| CfnCreationPolicy.Jsii$Proxy |
An implementation for
CfnCreationPolicy |
| CfnCustomResource |
A CloudFormation `AWS::CloudFormation::CustomResource`.
|
| CfnCustomResource.Builder |
A fluent builder for
CfnCustomResource. |
| CfnCustomResourceProps.Builder |
A builder for
CfnCustomResourceProps |
| CfnCustomResourceProps.Jsii$Proxy |
An implementation for
CfnCustomResourceProps |
| CfnDynamicReference |
References a dynamically retrieved value.
|
| CfnDynamicReferenceProps.Builder |
A builder for
CfnDynamicReferenceProps |
| CfnDynamicReferenceProps.Jsii$Proxy |
An implementation for
CfnDynamicReferenceProps |
| CfnElement |
An element of a CloudFormation stack.
|
| CfnInclude |
Includes a CloudFormation template into a stack.
|
| CfnInclude.Builder |
A fluent builder for
CfnInclude. |
| CfnIncludeProps.Builder |
A builder for
CfnIncludeProps |
| CfnIncludeProps.Jsii$Proxy |
An implementation for
CfnIncludeProps |
| CfnJson |
Captures a synthesis-time JSON object a CloudFormation reference which resolves during deployment to the resolved values of the JSON object.
|
| CfnJson.Builder |
A fluent builder for
CfnJson. |
| CfnJsonProps.Builder |
A builder for
CfnJsonProps |
| CfnJsonProps.Jsii$Proxy |
An implementation for
CfnJsonProps |
| CfnMacro |
A CloudFormation `AWS::CloudFormation::Macro`.
|
| CfnMacro.Builder |
A fluent builder for
CfnMacro. |
| CfnMacroProps.Builder |
A builder for
CfnMacroProps |
| CfnMacroProps.Jsii$Proxy |
An implementation for
CfnMacroProps |
| CfnMapping |
Represents a CloudFormation mapping.
|
| CfnMapping.Builder |
A fluent builder for
CfnMapping. |
| CfnMappingProps.Builder |
A builder for
CfnMappingProps |
| CfnMappingProps.Jsii$Proxy |
An implementation for
CfnMappingProps |
| CfnOutput | |
| CfnOutput.Builder |
A fluent builder for
CfnOutput. |
| CfnOutputProps.Builder |
A builder for
CfnOutputProps |
| CfnOutputProps.Jsii$Proxy |
An implementation for
CfnOutputProps |
| CfnParameter |
A CloudFormation parameter.
|
| CfnParameter.Builder |
A fluent builder for
CfnParameter. |
| CfnParameterProps.Builder |
A builder for
CfnParameterProps |
| CfnParameterProps.Jsii$Proxy |
An implementation for
CfnParameterProps |
| CfnRefElement |
Base class for referenceable CloudFormation constructs which are not Resources.
|
| CfnResource |
Represents a CloudFormation resource.
|
| CfnResource.Builder |
A fluent builder for
CfnResource. |
| CfnResourceAutoScalingCreationPolicy.Builder |
A builder for
CfnResourceAutoScalingCreationPolicy |
| CfnResourceAutoScalingCreationPolicy.Jsii$Proxy |
An implementation for
CfnResourceAutoScalingCreationPolicy |
| CfnResourceProps.Builder |
A builder for
CfnResourceProps |
| CfnResourceProps.Jsii$Proxy |
An implementation for
CfnResourceProps |
| CfnResourceSignal.Builder |
A builder for
CfnResourceSignal |
| CfnResourceSignal.Jsii$Proxy |
An implementation for
CfnResourceSignal |
| 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.
|
| CfnRule.Builder |
A fluent builder for
CfnRule. |
| CfnRuleAssertion.Builder |
A builder for
CfnRuleAssertion |
| CfnRuleAssertion.Jsii$Proxy |
An implementation for
CfnRuleAssertion |
| CfnRuleProps.Builder |
A builder for
CfnRuleProps |
| CfnRuleProps.Jsii$Proxy |
An implementation for
CfnRuleProps |
| CfnStack |
A CloudFormation `AWS::CloudFormation::Stack`.
|
| CfnStack.Builder |
A fluent builder for
CfnStack. |
| CfnStackProps.Builder |
A builder for
CfnStackProps |
| CfnStackProps.Jsii$Proxy |
An implementation for
CfnStackProps |
| CfnTag.Builder |
A builder for
CfnTag |
| CfnTag.Jsii$Proxy |
An implementation for
CfnTag |
| CfnUpdatePolicy.Builder |
A builder for
CfnUpdatePolicy |
| CfnUpdatePolicy.Jsii$Proxy |
An implementation for
CfnUpdatePolicy |
| CfnWaitCondition |
A CloudFormation `AWS::CloudFormation::WaitCondition`.
|
| CfnWaitCondition.Builder |
A fluent builder for
CfnWaitCondition. |
| CfnWaitConditionHandle |
A CloudFormation `AWS::CloudFormation::WaitConditionHandle`.
|
| CfnWaitConditionProps.Builder |
A builder for
CfnWaitConditionProps |
| CfnWaitConditionProps.Jsii$Proxy |
An implementation for
CfnWaitConditionProps |
| 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.
|
| CopyOptions.Builder |
A builder for
CopyOptions |
| CopyOptions.Jsii$Proxy |
An implementation for
CopyOptions |
| CustomResource |
Custom resource that is implemented using a Lambda.
|
| CustomResource.Builder |
A fluent builder for
CustomResource. |
| CustomResourceProps.Builder |
A builder for
CustomResourceProps |
| CustomResourceProps.Jsii$Proxy |
An implementation for
CustomResourceProps |
| CustomResourceProvider |
An AWS-Lambda backed custom resource provider.
|
| CustomResourceProviderProps.Builder |
A builder for
CustomResourceProviderProps |
| CustomResourceProviderProps.Jsii$Proxy |
An implementation for
CustomResourceProviderProps |
| DefaultStackSynthesizer |
Uses conventionally named roles and reify asset storage locations.
|
| DefaultStackSynthesizer.Builder |
A fluent builder for
DefaultStackSynthesizer. |
| DefaultStackSynthesizerProps.Builder |
A builder for
DefaultStackSynthesizerProps |
| DefaultStackSynthesizerProps.Jsii$Proxy |
An implementation for
DefaultStackSynthesizerProps |
| DefaultTokenResolver |
Default resolver implementation.
|
| DependableTrait |
Trait for IDependable.
|
| Dependency.Builder |
A builder for
Dependency |
| Dependency.Jsii$Proxy |
An implementation for
Dependency |
| DockerBuildOptions.Builder |
A builder for
DockerBuildOptions |
| DockerBuildOptions.Jsii$Proxy |
An implementation for
DockerBuildOptions |
| DockerImageAssetLocation.Builder |
A builder for
DockerImageAssetLocation |
| DockerImageAssetLocation.Jsii$Proxy |
An implementation for
DockerImageAssetLocation |
| DockerImageAssetSource.Builder |
A builder for
DockerImageAssetSource |
| DockerImageAssetSource.Jsii$Proxy |
An implementation for
DockerImageAssetSource |
| DockerVolume.Builder |
A builder for
DockerVolume |
| DockerVolume.Jsii$Proxy |
An implementation for
DockerVolume |
| Duration |
Represents a length of time.
|
| EncodingOptions.Builder |
A builder for
EncodingOptions |
| EncodingOptions.Jsii$Proxy |
An implementation for
EncodingOptions |
| Environment.Builder |
A builder for
Environment |
| Environment.Jsii$Proxy |
An implementation for
Environment |
| FileAssetLocation.Builder |
A builder for
FileAssetLocation |
| FileAssetLocation.Jsii$Proxy |
An implementation for
FileAssetLocation |
| FileAssetSource.Builder |
A builder for
FileAssetSource |
| FileAssetSource.Jsii$Proxy |
An implementation for
FileAssetSource |
| FileSystem |
File system utilities.
|
| FingerprintOptions.Builder |
A builder for
FingerprintOptions |
| FingerprintOptions.Jsii$Proxy |
An implementation for
FingerprintOptions |
| Fn |
CloudFormation intrinsic functions.
|
| FromCloudFormationOptions.Builder |
A builder for
FromCloudFormationOptions |
| FromCloudFormationOptions.Jsii$Proxy |
An implementation for
FromCloudFormationOptions |
| GetContextKeyOptions.Builder |
A builder for
GetContextKeyOptions |
| GetContextKeyOptions.Jsii$Proxy |
An implementation for
GetContextKeyOptions |
| GetContextKeyResult.Builder |
A builder for
GetContextKeyResult |
| GetContextKeyResult.Jsii$Proxy |
An implementation for
GetContextKeyResult |
| GetContextValueOptions.Builder |
A builder for
GetContextValueOptions |
| GetContextValueOptions.Jsii$Proxy |
An implementation for
GetContextValueOptions |
| GetContextValueResult.Builder |
A builder for
GetContextValueResult |
| GetContextValueResult.Jsii$Proxy |
An implementation for
GetContextValueResult |
| 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.
|
| IAsset.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.
|
| ICfnFinder.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.
|
| IInspectable.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.
|
| IStackSynthesizer.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 |
An implementation for
LazyAnyValueOptions |
| LazyListValueOptions.Builder |
A builder for
LazyListValueOptions |
| LazyListValueOptions.Jsii$Proxy |
An implementation for
LazyListValueOptions |
| LazyStringValueOptions.Builder |
A builder for
LazyStringValueOptions |
| LazyStringValueOptions.Jsii$Proxy |
An implementation for
LazyStringValueOptions |
| LegacyStackSynthesizer |
Use the original deployment environment.
|
| NestedStack |
A CloudFormation nested stack.
|
| NestedStack.Builder |
A fluent builder for
NestedStack. |
| NestedStackProps.Builder |
A builder for
NestedStackProps |
| NestedStackProps.Jsii$Proxy |
An implementation for
NestedStackProps |
| NestedStackSynthesizer |
Deployment environment for a nested stack.
|
| 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 |
An implementation for
RemovalPolicyOptions |
| RemoveTag |
The RemoveTag Aspect will handle removing tags from this node and children.
|
| RemoveTag.Builder |
A fluent builder for
RemoveTag. |
| ResolveOptions.Builder |
A builder for
ResolveOptions |
| ResolveOptions.Jsii$Proxy |
An implementation for
ResolveOptions |
| Resource |
A construct which represents an AWS resource.
|
| ResourceProps.Builder |
A builder for
ResourceProps |
| ResourceProps.Jsii$Proxy |
An implementation for
ResourceProps |
| ScopedAws |
Accessor for scoped pseudo parameters.
|
| SecretsManagerSecretOptions.Builder |
A builder for
SecretsManagerSecretOptions |
| SecretsManagerSecretOptions.Jsii$Proxy |
An implementation for
SecretsManagerSecretOptions |
| SecretValue |
Work with secret values in the CDK.
|
| Size |
Represents the amount of digital storage.
|
| SizeConversionOptions.Builder |
A builder for
SizeConversionOptions |
| SizeConversionOptions.Jsii$Proxy |
An implementation for
SizeConversionOptions |
| Stack |
A root construct which represents a single CloudFormation stack.
|
| Stack.Builder |
A fluent builder for
Stack. |
| StackProps.Builder |
A builder for
StackProps |
| StackProps.Jsii$Proxy |
An implementation for
StackProps |
| Stage |
An abstract application modeling unit consisting of Stacks that should be deployed together.
|
| Stage.Builder |
A fluent builder for
Stage. |
| StageProps.Builder |
A builder for
StageProps |
| StageProps.Jsii$Proxy |
An implementation for
StageProps |
| StageSynthesisOptions.Builder |
A builder for
StageSynthesisOptions |
| StageSynthesisOptions.Jsii$Proxy |
An implementation for
StageSynthesisOptions |
| StringConcat |
Converts all fragments to strings and concats those.
|
| SynthesisOptions.Builder | Deprecated |
| SynthesisOptions.Jsii$Proxy | Deprecated |
| Tag |
The Tag Aspect will handle adding a tag to this node and cascading tags to children.
|
| Tag.Builder |
A fluent builder for
Tag. |
| TagManager |
TagManager facilitates a common implementation of tagging for Constructs.
|
| TagManager.Builder |
A fluent builder for
TagManager. |
| TagManagerOptions.Builder |
A builder for
TagManagerOptions |
| TagManagerOptions.Jsii$Proxy |
An implementation for
TagManagerOptions |
| TagProps.Builder |
A builder for
TagProps |
| TagProps.Jsii$Proxy |
An implementation for
TagProps |
| TimeConversionOptions.Builder |
A builder for
TimeConversionOptions |
| TimeConversionOptions.Jsii$Proxy |
An implementation for
TimeConversionOptions |
| 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.
|
| TreeInspector |
Inspector that maintains an attribute bag.
|
| ValidationError.Builder |
A builder for
ValidationError |
| ValidationError.Jsii$Proxy |
An implementation for
ValidationError |
| ValidationResult |
Representation of validation results.
|
| ValidationResults |
A collection of validation results.
|
| Enum | Description |
|---|---|
| AssetHashType |
The type of asset hash.
|
| CfnCapabilities |
Capabilities that affect whether CloudFormation is allowed to change IAM resources.
|
| 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.
|
| CustomResourceProviderRuntime |
The lambda runtime to use for the resource provider.
|
| DockerVolumeConsistency |
Supported Docker volume consistency types.
|
| FileAssetPackaging |
Packaging modes for file assets.
|
| RemovalPolicy | |
| SizeRoundingBehavior |
Rounding behaviour when converting between units of `Size`.
|
| SymlinkFollowMode |
Determines how symlinks are followed.
|
| 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.
A Stack is the smallest physical unit of deployment, and maps directly onto
a CloudFormation Stack. You define a Stack by defining a subclass of Stack
-- let's call it MyStack -- and instantiating the constructs that make up
your application in MyStack's constructor. You then instantiate this stack
one or more times to define different instances of your application. For example,
you can instantiate it once using few and cheap EC2 instances for testing,
and once again using more and bigger EC2 instances for production.
When your application grows, you may decide that it makes more sense to split it
out across multiple Stack classes. This can happen for a number of reasons:
As soon as your conceptual application starts to encompass multiple stacks, it is convenient to wrap them in another construct that represents your logical application. You can then treat that new unit the same way you used to be able to treat a single stack: by instantiating it multiple times for different instances of your application.
You can define a custom subclass of Construct, holding one or more
Stacks, to represent a single logical instance of your application.
As a final note: Stacks are not a unit of reuse. They describe physical
deployment layouts, and as such are best left to application builders to
organize their deployments with. If you want to vend a reusable construct,
define it as a subclasses of Construct: the consumers of your construct
will decide where to place it in their own stacks.
Nested stacks are stacks created as part of other stacks. You create a nested stack within another stack by using the NestedStack construct.
As your infrastructure grows, common patterns can emerge in which you declare the same components in multiple templates. You can separate out these common components and create dedicated templates for them. Then use the resource in your template to reference other templates, creating nested stacks.
For example, assume that you have a load balancer configuration that you use for most of your stacks. Instead of copying and pasting the same configurations into your templates, you can create a dedicated template for the load balancer. Then, you just use the resource to reference that template from within other templates.
The following example will define a single top-level stack that contains two nested stacks: each one with a single Amazon S3 bucket:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
import software.amazon.awscdk.core.Stack;
import software.amazon.awscdk.core.Construct;
import software.amazon.awscdk.core.StackProps;
import software.amazon.awscdk.services.cloudformation.*;
import software.amazon.awscdk.services.s3.*;
public class MyNestedStack extends NestedStack {
public MyNestedStack(Construct scope, String id) {
this(scope, id, null);
}
public MyNestedStack(Construct scope, String id, NestedStackProps props) {
super(scope, id, props);
new Bucket(this, "NestedBucket");
}
}
public class MyParentStack extends Stack {
public MyParentStack(Construct scope, String id) {
this(scope, id, null);
}
public MyParentStack(Construct scope, String id, StackProps props) {
super(scope, id, props);
new MyNestedStack(this, "Nested1");
new MyNestedStack(this, "Nested2");
}
}
Resources references across nested/parent boundaries (even with multiple levels of nesting) will be wired by the AWS CDK
through CloudFormation parameters and outputs. When a resource from a parent stack is referenced by a nested stack,
a CloudFormation parameter will automatically be added to the nested stack and assigned from the parent; when a resource
from a nested stack is referenced by a parent stack, a CloudFormation output will be automatically be added to the
nested stack and referenced using Fn::GetAtt "Outputs.Xxx" from the parent.
Nested stacks also support the use of Docker image and file assets.
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:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
Duration.seconds(300);// 5 minutes
Duration.minutes(5);// 5 minutes
Duration.hours(1);// 1 hour
Duration.days(7);// 7 days
Duration.parse("PT5M");
To make specification of digital storage quantities unambiguous, a class called
Size is available.
An instance of Size is initialized through one of its static factory methods:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826 Size.kibibytes(200);// 200 KiB Size.mebibytes(5);// 5 MiB Size.gibibytes(40);// 40 GiB Size.tebibytes(200);// 200 TiB Size.pebibytes(3);
Instances of Size created with one of the units can be converted into others.
By default, conversion to a higher unit will fail if the conversion does not produce
a whole number. This can be overridden by unsetting integral property.
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
Size.mebibytes(2).toKibibytes();// yields 2048
Size.kibibytes(2050).toMebibyte(Map.of("integral", false));
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:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
var secret = SecretValue.secretsManager("secretId", Map.of(
"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"));
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:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
// Builds "arn:<PARTITION>:lambda:<REGION>:<ACCOUNT>:function:MyFunction"
stack.formatArn(Map.of(
"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.
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826 // Extracts the function name out of an AWS Lambda Function ARN var arnComponents = stack.parseArn(arn, ":"); var functionName = arnComponents.getResourceName();
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
constructs, constructB and constructC:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826 // Declare the dependable object var 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.
Custom Resources are CloudFormation resources that are implemented by arbitrary user code. They can do arbitrary lookups or modifications during a CloudFormation deployment.
To define a custom resource, use the CustomResource construct:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
import software.amazon.awscdk.core.CustomResource;
new CustomResource(this, "MyMagicalResource", new CustomResourceProps()
.resourceType("Custom::MyCustomResource")// must start with 'Custom::'
// the resource properties
.properties(Map.of(
"Property1", "foo",
"Property2", "bar"))
// the ARN of the provider (SNS/Lambda) which handles
// CREATE, UPDATE or DELETE events for this resource type
// see next section for details
.serviceToken("ARN"));
Custom resources are backed by a custom resource provider which can be implemented in one of the following ways. The following table compares the various provider types (ordered from low-level to high-level):
| Provider | Compute Type | Error Handling | Submit to CloudFormation | Max Timeout | Language | Footprint | |----------------------------------------------------------------------|:------------:|:--------------:|:------------------------:|:---------------:|:--------:|:---------:| | sns.Topic | Self-managed | Manual | Manual | Unlimited | Any | Depends | | lambda.Function | AWS Lambda | Manual | Manual | 15min | Any | Small | | core.CustomResourceProvider | Lambda | Auto | Auto | 15min | Node.js | Small | | custom-resources.Provider | Lambda | Auto | Auto | Unlimited Async | Any | Large |
Legend:
A NOTE ABOUT SINGLETONS
When defining resources for a custom resource provider, you will likely want to define them as a stack singleton so that only a single instance of the provider is created in your stack and which is used by all custom resources of that type.
Here is a basic pattern for defining stack singletons in the CDK. The following examples ensures that only a single SNS topic is defined:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
public void getOrCreate(Construct scope) {
var stack = Stack.of(this);
String uniqueid = "GloballyUniqueIdForSingleton";return (Object)stack.node.tryFindChild(uniqueid) ?? new Topic(stack, uniqueid)
}
Every time a resource event occurs (CREATE/UPDATE/DELETE), an SNS notification is sent to the SNS topic. Users must process these notifications (e.g. through a fleet of worker hosts) and submit success/failure responses to the CloudFormation service.
Set serviceToken to topic.topicArn in order to use this provider:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
import software.amazon.awscdk.services.sns.*;
import software.amazon.awscdk.core.CustomResource;
Topic topic = new Topic(this, "MyProvider");
new CustomResource(this, "MyResource", new CustomResourceProps()
.serviceToken(topic.getTopicArn()));
An AWS lambda function is called directly by CloudFormation for all resource events. The handler must take care of explicitly submitting a success/failure response to the CloudFormation service and handle various error cases.
Set serviceToken to lambda.functionArn to use this provider:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
import software.amazon.awscdk.services.lambda.*;
import software.amazon.awscdk.core.CustomResource;
Function fn = new Function(this, "MyProvider");
new CustomResource(this, "MyResource", new CustomResourceProps()
.serviceToken(lambda.getFunctionArn()));
core.CustomResourceProvider class
The class @aws-cdk/core.CustomResourceProvider offers a basic low-level
framework designed to implement simple and slim custom resource providers. It
currently only supports Node.js-based user handlers, and it does not have
support for asynchronous waiting (handler cannot exceed the 15min lambda
timeout).
The provider has a built-in singleton method which uses the resource type as a stack-unique identifier and returns the service token:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
var serviceToken = CustomResourceProvider.getOrCreate(this, "Custom::MyCustomResourceType", Map.of(
"codeDirectory", __dirname + "/my-handler",
"runtime", CustomResourceProviderRuntime.getNODEJS_12()));
CustomResource.Builder.create(this, "MyResource")
.resourceType("Custom::MyCustomResourceType")
.serviceToken(serviceToken)
.build();
The directory (my-handler in the above example) must include an index.js file. It cannot import
external dependencies or files outside this directory. It must export an async
function named handler. This function accepts the CloudFormation resource
event object and returns an object with the following structure:
exports.handler = async function(event) {
const id = event.PhysicalResourceId; // only for "Update" and "Delete"
const props = event.ResourceProperties;
const oldProps = event.OldResourceProperties; // only for "Update"s
switch (event.RequestType) {
case "Create":
// ...
case "Update":
// ...
// if an error is thrown, a FAILED response will be submitted to CFN
throw new Error('Failed!');
case "Delete":
// ...
}
return {
// (optional) the value resolved from `resource.ref`
// defaults to "event.PhysicalResourceId" or "event.RequestId"
PhysicalResourceId: "REF",
// (optional) calling `resource.getAtt("Att1")` on the custom resource in the CDK app
// will return the value "BAR".
Data: {
Att1: "BAR",
Att2: "BAZ"
},
// (optional) user-visible message
Reason: "User-visible message",
// (optional) hides values from the console
NoEcho: true
};
}
Here is an complete example of a custom resource that summarizes two numbers:
sum-handler/index.js:
exports.handler = async e => {
return {
Data: {
Result: e.ResourceProperties.lhs + e.ResourceProperties.rhs
}
};
};
sum.ts:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
public class SumProps {
private int lhs;
public int getLhs() {
return this.lhs;
}
public SumProps lhs(int lhs) {
this.lhs = lhs;
return this;
}
private int rhs;
public int getRhs() {
return this.rhs;
}
public SumProps rhs(int rhs) {
this.rhs = rhs;
return this;
}
}
public class Sum extends Construct {
public final int result;
public Sum(Construct scope, String id, SumProps props) {
super(scope, id);
String resourceType = "Custom::Sum";
var serviceToken = CustomResourceProvider.getOrCreate(this, resourceType, Map.of(
"codeDirectory", __dirname + "/sum-handler",
"runtime", CustomResourceProviderRuntime.getNODEJS_12()));
var resource = CustomResource.Builder.create(this, "Resource")
.resourceType(resourceType)
.serviceToken(serviceToken)
.properties(Map.of(
"lhs", props.getLhs(),
"rhs", props.getRhs()))
.build();
this.result = Token.asNumber(resource.getAtt("Result"));
}
}
Usage will look like this:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826 var sum = Sum.Builder.create(this, "MySum").lhs(40).rhs(2).build(); CfnOutput.Builder.create(this, "Result").value(sum.getResult()).build();
The @aws-cdk/custom-resource module includes an advanced framework for
implementing custom resource providers.
Handlers are implemented as AWS Lambda functions, which means that they can be
implemented in any Lambda-supported runtime. Furthermore, this provider has an
asynchronous mode, which means that users can provide an isComplete lambda
function which is called periodically until the operation is complete. This
allows implementing providers that can take up to two hours to stabilize.
Set serviceToken to provider.serviceToken to use this type of provider:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
import custom.resources.Provider;
var provider = Provider.Builder.create(this, "MyProvider")
.onEventHandler(onEventLambdaFunction)
.isCompleteHandler(isCompleteLambdaFunction)
.build();
CustomResource.Builder.create(this, "MyResource")
.serviceToken(provider.getServiceToken())
.build();
See the documentation for more details.
Every time a resource event occurs (CREATE/UPDATE/DELETE), an SNS notification is sent to the SNS topic. Users must process these notifications (e.g. through a fleet of worker hosts) and submit success/failure responses to the CloudFormation service.
Set serviceToken to topic.topicArn in order to use this provider:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
import software.amazon.awscdk.services.sns.*;
import software.amazon.awscdk.core.CustomResource;
Topic topic = new Topic(this, "MyProvider");
new CustomResource(this, "MyResource", new CustomResourceProps()
.serviceToken(topic.getTopicArn()));
An AWS lambda function is called directly by CloudFormation for all resource events. The handler must take care of explicitly submitting a success/failure response to the CloudFormation service and handle various error cases.
Set serviceToken to lambda.functionArn to use this provider:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
import software.amazon.awscdk.services.lambda.*;
import software.amazon.awscdk.core.CustomResource;
Function fn = new Function(this, "MyProvider");
new CustomResource(this, "MyResource", new CustomResourceProps()
.serviceToken(lambda.getFunctionArn()));
The @aws-cdk/custom-resource module includes an advanced framework for
implementing custom resource providers.
Handlers are implemented as AWS Lambda functions, which means that they can be
implemented in any Lambda-supported runtime. Furthermore, this provider has an
asynchronous mode, which means that users can provide an isComplete lambda
function which is called periodically until the operation is complete. This
allows implementing providers that can take up to two hours to stabilize.
Set serviceToken to provider.serviceToken to use this provider:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
import custom.resources.Provider;
var provider = Provider.Builder.create(this, "MyProvider")
.onEventHandler(onEventLambdaFunction)
.isCompleteHandler(isCompleteLambdaFunction)
.build();
CustomResource.Builder.create(this, "MyResource")
.serviceToken(provider.getServiceToken())
.build();
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:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
CfnOutput.Builder.create(this, "OutputName")
.value(bucket.getBucketName())
.description("The name of an S3 bucket")// Optional
.exportName("TheAwesomeBucket")
.build();
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:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
CfnParameter.Builder.create(this, "MyParameter")
.type("Number")
.default(1337)
.build();
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):
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826 var param = CfnParameter.Builder.create(this, "ParameterName").build(); // If the parameter is a String param.getValueAsString(); // If the parameter is a Number param.getValueAsNumber(); // If the parameter is a List param.getValueAsList();
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:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826 // "this" is the current construct var stack = Stack.of(this); stack.getAccount();// Returns the AWS::AccountId for this stack (or the literal value if known) stack.getRegion();// Returns the AWS::Region for this stack (or the literal value if known) stack.getPartition();
CloudFormation resources can also specify resource
attributes. The CfnResource class allows
accessing those through the cfnOptions property:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
var rawBucket = CfnBucket.Builder.create(this, "Bucket").build();
// -or-
var rawBucket = (Object)bucket.node.getDefaultChild();
// then
rawBucket.cfnOptions.getCondition() = CfnCondition.Builder.create(this, "EnableBucket").build();
rawBucket.cfnOptions.getMetadata() = Map.of(
"metadataKey", "MetadataValue");
Resource dependencies (the DependsOn attribute) is modified using the
cfnResource.addDependsOn method:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826 var resourceA = CfnResource.Builder.create(this, "ResourceA").build(); var resourceB = CfnResource.Builder.create(this, "ResourceB").build(); 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:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
// To use Fn::Base64
Fn.base64("SGVsbG8gQ0RLIQo=");
// To compose condition expressions:
var environmentParameter = new CfnParameter(this, "Environment");
Fn.conditionAnd(Fn.conditionEquals("Production", environmentParameter), Fn.conditionNot(Fn.conditionEquals("us-east-1", Aws.getREGION())));
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:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
var environmentParameter = new CfnParameter(this, "Environment");
var isProd = CfnCondition.Builder.create(this, "IsProduction")
.expression(Fn.conditionEquals("Production", environmentParameter))
.build();
// Configuration value that is a different string based on IsProduction
var stage = Fn.conditionIf(isProd.logicalId, 'Beta', 'Prod').toString();
// Make Bucket creation condition to IsProduction by accessing
// and overriding the CloudFormation resource
var bucket = new Bucket(this, "Bucket");
var cfnBucket = (Object)bucket.node.getDefaultChild();
cfnBucket.cfnOptions.getCondition() = isProd;
CloudFormation mappings are created and queried using the
CfnMappings class:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
var mapping = CfnMapping.Builder.create(this, "MappingTable")
.mapping(Map.of(
"regionName", Map.of(
"us-east-1", "US East (N. Virginia)",
"us-east-2", "US East (Ohio)")))
.build();
mapping.findInMap("regionName", Aws.getREGION());
CloudFormation supports dynamically resolving values
for SSM parameters (including secure strings) and Secrets Manager. Encoding such
references is done using the CfnDynamicReference class:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
CfnDynamicReference.Builder.create(this, "SecureStringValue")
.service(CfnDynamicReferenceService.getSECRETS_MANAGER())
.referenceKey("secret-id:secret-string:json-key:version-stage:version-id")
.build();
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:
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
var stack = new Stack(app, "StackName");
stack.templateOptions.getDescription() = "This will appear in the AWS console";
stack.templateOptions.getTransforms() = asList("AWS::Serverless-2016-10-31");
stack.templateOptions.getMetadata() = Map.of(
"metadataKey", "MetadataValue");
The CfnResource class allows emitting arbitrary entries in the
Resources section of the CloudFormation template.
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
CfnResource.Builder.create(this, "ResourceId")
.type("AWS::S3::Bucket")
.properties(Map.of(
"BucketName", "bucket-name"))
.build();
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.
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
CfnInclude.Builder.create(this, "ID")
.template(Map.of(
"Resources", Map.of(
"Bucket", Map.of(
"Type", "AWS::S3::Bucket",
"Properties", Map.of(
"BucketName", "my-shiny-bucket")))))
.build();
You can prevent a stack from being accidentally deleted by enabling termination
protection on the stack. If a user attempts to delete a stack with termination
protection enabled, the deletion fails and the stack--including its status--remains
unchanged. Enabling or disabling termination protection on a stack sets it for any
nested stacks belonging to that stack as well. You can enable termination protection
on a stack by setting the terminationProtection prop to true.
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
var stack = Stack.Builder.create(app, "StackName")
.terminationProtection(true)
.build();
By default, termination protection is disabled.
CfnJson allows you to postpone the resolution of a JSON blob from
deployment-time. This is useful in cases where the CloudFormation JSON template
cannot express a certain value.
A common example is to use CfnJson in order to render a JSON map which needs
to use intrinsic functions in keys. Since JSON map keys must be strings, it is
impossible to use intrinsics in keys and CfnJson can help.
The following example defines an IAM role which can only be assumed by principals that are tagged with a specific tag.
// Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826
var tagParam = new CfnParameter(this, "TagName");
var stringEquals = CfnJson.Builder.create(this, "ConditionJson")
.value(Map.of(
[`aws:PrincipalTag/${tagParam.valueAsString}`], true))
.build();
var principal = new AccountRootPrincipal().withConditions(Map.of(
"StringEquals", stringEquals));
Role.Builder.create(this, "MyRole").assumedBy(principal).build();
Explanation: since in this example we pass the tag name through a parameter, it
can only be resolved during deployment. The resolved value can be represented in
the template through a { "Ref": "TagName" }. However, since we want to use
this value inside a aws:PrincipalTag/TAG-NAME
IAM operator, we need it in the key of a StringEquals condition. JSON keys
must be strings, so to circumvent this limitation, we use CfnJson
to "delay" the rendition of this template section to deploy-time. This means
that the value of StringEquals in the template will be { "Fn::GetAtt": [ "ConditionJson", "Value" ] }, and will only "expand" to the operator we synthesized during deployment.
Copyright © 2020. All rights reserved.