AWS CDK for Ruby

API reference for the native Ruby bindings of the AWS CDK.

Getting started

Native Ruby bindings for the AWS CDK — the same construct library every other CDK language uses, generated from jsii. You write idiomatic Ruby and cdk deploy synthesises and deploys it exactly as it would from TypeScript.

Prerequisites

Gemfile

The gems are published to https://rubygems.omarqureshi.net. During the preview they're pre-release, hence the >= 0.0.0.pre constraint. Then bundle install.

source 'https://rubygems.org'

source 'https://rubygems.omarqureshi.net' do
  gem 'aws-cdk-lib', '>= 0.0.0.pre'
  gem 'constructs', '>= 0.0.0.pre'
  gem 'jsii-ruby-runtime', '>= 0.0.0.pre'

  # aws-cdk-lib requires these asset packages at load time:
  gem 'aws-cdk-asset-awscli-v1', '>= 0.0.0.pre'
  gem 'aws-cdk-asset-node-proxy-agent-v6', '>= 0.0.0.pre'
  gem 'aws-cdk-cloud-assembly-schema', '>= 0.0.0.pre'
end

cdk.json

Tells the CDK CLI how to run your app:

{
  "app": "bundle exec ruby app.rb"
}

A first stack

Subclass AWSCDK::Stack, call super, and instantiate constructs with (self, 'LogicalId', props) — the same shape as every other CDK language.

# stacks/my_stack.rb
require 'aws-cdk-lib'

class MyStack < AWSCDK::Stack
  def initialize(scope, id, props = nil)
    super(scope, id, props)

    AWSCDK::S3::Bucket.new(
      self,
      'MyBucket',
      {
        versioned: true,
        removal_policy: AWSCDK::RemovalPolicy::DESTROY,
        auto_delete_objects: true
      }
    )
  end
end
# app.rb
require 'aws-cdk-lib'
require_relative 'stacks/my_stack'

app = AWSCDK::App.new

MyStack.new(app, 'MyStack', {
  env: AWSCDK::Environment.new(
    account: ENV['CDK_DEFAULT_ACCOUNT'],
    region: ENV.fetch('CDK_DEFAULT_REGION', 'us-east-1')
  )
})

app.synth

Deploy

$ bundle install
$ npm install -g aws-cdk @jsii/runtime
$ cdk deploy

Naming rules

The conventions you'll rely on reading these docs:

Core types 282

Classes 103

AWSCDK::Annotations AWSCDK::App AWSCDK::ARN AWSCDK::ArrayMergeStrategy AWSCDK::AspectApplication AWSCDK::AspectPriority AWSCDK::Aspects AWSCDK::AssetManifestBuilder AWSCDK::AssetStaging AWSCDK::AWS AWSCDK::Bitrate AWSCDK::BootstraplessSynthesizer AWSCDK::CfnCodeDeployBlueGreenHook AWSCDK::CfnCondition AWSCDK::CfnCustomResource AWSCDK::CfnDynamicReference AWSCDK::CfnElement AWSCDK::CfnGuardHook AWSCDK::CfnHook AWSCDK::CfnHookDefaultVersion AWSCDK::CfnHookTypeConfig AWSCDK::CfnHookVersion AWSCDK::CfnJson AWSCDK::CfnLambdaHook AWSCDK::CfnMacro AWSCDK::CfnMapping AWSCDK::CfnModuleDefaultVersion AWSCDK::CfnModuleVersion AWSCDK::CfnOutput AWSCDK::CfnParameter AWSCDK::CfnPublicTypeVersion AWSCDK::CfnPublisher AWSCDK::CfnRefElement AWSCDK::CfnResource AWSCDK::CfnResourceDefaultVersion AWSCDK::CfnResourceVersion AWSCDK::CfnRule AWSCDK::CfnStack AWSCDK::CfnStackSet AWSCDK::CfnTypeActivation AWSCDK::CfnWaitCondition AWSCDK::CfnWaitConditionHandle AWSCDK::CliCredentialsStackSynthesizer AWSCDK::CloudFormationValidatePlugin AWSCDK::ConstructSelector AWSCDK::ContextProvider AWSCDK::CrossStackReferences AWSCDK::CustomResource AWSCDK::CustomResourceProvider AWSCDK::CustomResourceProviderBase AWSCDK::DefaultStackSynthesizer AWSCDK::DefaultTokenResolver AWSCDK::DockerBuildSecret AWSCDK::DockerIgnoreStrategy AWSCDK::DockerImage AWSCDK::Duration AWSCDK::Errors AWSCDK::Expiration AWSCDK::FeatureFlags AWSCDK::FileSystem AWSCDK::Fn AWSCDK::GitIgnoreStrategy AWSCDK::GlobIgnoreStrategy AWSCDK::IgnoreStrategy AWSCDK::Intrinsic AWSCDK::JsonNull AWSCDK::Lazy AWSCDK::LegacyStackSynthesizer AWSCDK::MissingRemovalPolicies AWSCDK::Mixin AWSCDK::MixinApplicator AWSCDK::Mixins AWSCDK::Names AWSCDK::NestedStack AWSCDK::NestedStackSynthesizer AWSCDK::PermissionsBoundary AWSCDK::PhysicalName AWSCDK::PropertyInjectors AWSCDK::PropertyMergeStrategy AWSCDK::Reference AWSCDK::RemovalPolicies AWSCDK::RemoveTag AWSCDK::Resource AWSCDK::ScopedAWS AWSCDK::SecretValue AWSCDK::Shims AWSCDK::Size AWSCDK::Stack AWSCDK::StackSynthesizer AWSCDK::Stage AWSCDK::StringConcat AWSCDK::Tag AWSCDK::TagManager AWSCDK::Tags AWSCDK::TimeZone AWSCDK::Token AWSCDK::TokenComparison AWSCDK::Tokenization AWSCDK::TokenizedStringFragments AWSCDK::TreeInspector AWSCDK::ValidationResult AWSCDK::ValidationResults AWSCDK::Validations

Interfaces 159

AWSCDK::Acknowledgment AWSCDK::AddDockerImageAssetOptions AWSCDK::AddFileAssetOptions AWSCDK::AppProps AWSCDK::ARNComponents AWSCDK::AspectOptions AWSCDK::AssetManifestDockerImageDestination AWSCDK::AssetManifestFileDestination AWSCDK::AssetOptions AWSCDK::AssetStagingProps AWSCDK::AWSEventMetadataProps AWSCDK::BootstraplessSynthesizerProps AWSCDK::BundlingOptions AWSCDK::CfnAutoScalingReplacingUpdate AWSCDK::CfnAutoScalingRollingUpdate AWSCDK::CfnAutoScalingScheduledAction AWSCDK::CfnCodeDeployBlueGreenAdditionalOptions AWSCDK::CfnCodeDeployBlueGreenApplication AWSCDK::CfnCodeDeployBlueGreenApplicationTarget AWSCDK::CfnCodeDeployBlueGreenECSAttributes AWSCDK::CfnCodeDeployBlueGreenHookProps AWSCDK::CfnCodeDeployBlueGreenLifecycleEventHooks AWSCDK::CfnCodeDeployLambdaAliasUpdate AWSCDK::CfnConditionProps AWSCDK::CfnCreationPolicy AWSCDK::CfnCustomResourceProps AWSCDK::CfnDynamicReferenceProps AWSCDK::CfnGuardHookProps AWSCDK::CfnHookDefaultVersionProps AWSCDK::CfnHookProps AWSCDK::CfnHookTypeConfigProps AWSCDK::CfnHookVersionProps AWSCDK::CfnJsonProps AWSCDK::CfnLambdaHookProps AWSCDK::CfnMacroProps AWSCDK::CfnMappingProps AWSCDK::CfnModuleDefaultVersionProps AWSCDK::CfnModuleVersionProps AWSCDK::CfnOutputProps AWSCDK::CfnParameterProps AWSCDK::CfnPublicTypeVersionProps AWSCDK::CfnPublisherProps AWSCDK::CfnResourceAutoScalingCreationPolicy AWSCDK::CfnResourceDefaultVersionProps AWSCDK::CfnResourceProps AWSCDK::CfnResourceSignal AWSCDK::CfnResourceVersionProps AWSCDK::CfnRuleAssertion AWSCDK::CfnRuleProps AWSCDK::CfnStackProps AWSCDK::CfnStackSetProps AWSCDK::CfnTag AWSCDK::CfnTrafficRoute AWSCDK::CfnTrafficRouting AWSCDK::CfnTrafficRoutingConfig AWSCDK::CfnTrafficRoutingTimeBasedCanary AWSCDK::CfnTrafficRoutingTimeBasedLinear AWSCDK::CfnTypeActivationProps AWSCDK::CfnUpdatePolicy AWSCDK::CfnWaitConditionHandleProps AWSCDK::CfnWaitConditionProps AWSCDK::CliCredentialsStackSynthesizerProps AWSCDK::CloudFormationValidatePluginProps AWSCDK::CombineStrategyOptions AWSCDK::CopyOptions AWSCDK::CustomResourceProps AWSCDK::CustomResourceProviderBaseProps AWSCDK::CustomResourceProviderOptions AWSCDK::CustomResourceProviderProps AWSCDK::DefaultStackSynthesizerProps AWSCDK::DockerBuildOptions AWSCDK::DockerCacheOption AWSCDK::DockerImageAssetLocation AWSCDK::DockerImageAssetSource AWSCDK::DockerRunOptions AWSCDK::DockerVolume AWSCDK::EncodingOptions AWSCDK::EncryptedPermissionsOptions AWSCDK::Environment AWSCDK::ExportValueOptions AWSCDK::FileAssetLocation AWSCDK::FileAssetSource AWSCDK::FileCopyOptions AWSCDK::FileFingerprintOptions AWSCDK::FingerprintOptions AWSCDK::GetContextKeyOptions AWSCDK::GetContextKeyResult AWSCDK::GetContextValueOptions AWSCDK::GetContextValueResult AWSCDK::IAnyProducer AWSCDK::IArrayMergeStrategy AWSCDK::IAspect AWSCDK::IAsset AWSCDK::IBoundStackSynthesizer AWSCDK::ICfnConditionExpression AWSCDK::ICfnResourceOptions AWSCDK::ICfnRuleConditionExpression AWSCDK::IConstructSelector AWSCDK::IFragmentConcatenator AWSCDK::IInspectable AWSCDK::IListProducer AWSCDK::ILocalBundling AWSCDK::IMergeStrategy AWSCDK::InjectionContext AWSCDK::IntrinsicProps AWSCDK::INumberProducer AWSCDK::IPolicyValidationContext AWSCDK::IPolicyValidationContextBeta1 AWSCDK::IPolicyValidationPlugin AWSCDK::IPolicyValidationPluginBeta1 AWSCDK::IPostProcessor AWSCDK::IPropertyInjector AWSCDK::IResolvable AWSCDK::IResolveContext AWSCDK::IResource AWSCDK::IReusableStackSynthesizer AWSCDK::IStableAnyProducer AWSCDK::IStableListProducer AWSCDK::IStableNumberProducer AWSCDK::IStableStringProducer AWSCDK::IStackSynthesizer AWSCDK::IStringProducer AWSCDK::ISynthesisSession AWSCDK::ITaggable AWSCDK::ITaggableV2 AWSCDK::ITemplateOptions AWSCDK::ITokenMapper AWSCDK::ITokenResolver AWSCDK::LazyAnyValueOptions AWSCDK::LazyListValueOptions AWSCDK::LazyStringValueOptions AWSCDK::MixinApplication AWSCDK::NestedStackProps AWSCDK::PermissionsBoundaryBindOptions AWSCDK::PermissionsOptions AWSCDK::PolicyValidationPluginReport AWSCDK::PolicyValidationPluginReportBeta1 AWSCDK::PolicyViolatingResource AWSCDK::PolicyViolatingResourceBeta1 AWSCDK::PolicyViolation AWSCDK::PolicyViolationBeta1 AWSCDK::RemovalPolicyOptions AWSCDK::RemovalPolicyProps AWSCDK::ResolveChangeContextOptions AWSCDK::ResolveOptions AWSCDK::ResourceProps AWSCDK::ReverseOptions AWSCDK::RoleOptions AWSCDK::SecretsManagerSecretOptions AWSCDK::SizeConversionOptions AWSCDK::StackProps AWSCDK::StageProps AWSCDK::StageSynthesisOptions AWSCDK::SynthesizeStackArtifactOptions AWSCDK::TagManagerOptions AWSCDK::TagProps AWSCDK::TimeConversionOptions AWSCDK::UniqueResourceNameOptions AWSCDK::ValidationRuleSource

Enums 20

AWSCDK::ARNFormat AWSCDK::AssetHashType AWSCDK::BundlingFileAccess AWSCDK::BundlingOutput AWSCDK::CfnCapabilities AWSCDK::CfnDeletionPolicy AWSCDK::CfnDynamicReferenceService AWSCDK::CfnTrafficRoutingType AWSCDK::CustomResourceProviderRuntime AWSCDK::DockerVolumeConsistency AWSCDK::FileAssetPackaging AWSCDK::IgnoreMode AWSCDK::PolicyValidationReportStatus AWSCDK::PolicyValidationReportStatusBeta1 AWSCDK::ReferenceStrength AWSCDK::RemovalPolicy AWSCDK::ResolutionTypeHint AWSCDK::SizeRoundingBehavior AWSCDK::SymlinkFollowMode AWSCDK::TagType

Modules

AWSCDK::AccessAnalyzer AWSCDK::ACMPCA AWSCDK::AIOps AWSCDK::AlexaAsk AWSCDK::AmazonMQ AWSCDK::Amplify AWSCDK::AmplifyUIBuilder AWSCDK::APIGateway AWSCDK::APIGatewayv2 AWSCDK::APIGatewayv2Authorizers AWSCDK::APIGatewayv2Integrations AWSCDK::AppConfig AWSCDK::AppFlow AWSCDK::AppIntegrations AWSCDK::ApplicationAutoScaling AWSCDK::ApplicationInsights AWSCDK::ApplicationSignals AWSCDK::AppMesh AWSCDK::AppRunner AWSCDK::AppStream AWSCDK::AppSync AWSCDK::Apptest AWSCDK::APS AWSCDK::ARCRegionSwitch AWSCDK::ARCZonalShift AWSCDK::Assertions AWSCDK::Athena AWSCDK::AuditManager AWSCDK::Autoscaling AWSCDK::AutoScalingCommon AWSCDK::AutoScalingHookTargets AWSCDK::AutoScalingPlans AWSCDK::B2BI AWSCDK::Backup AWSCDK::BackupGateway AWSCDK::Batch AWSCDK::BCMDataExports AWSCDK::BCMPricingCalculator AWSCDK::Bedrock AWSCDK::BedrockAgentCore AWSCDK::BedrockMantle AWSCDK::BillingConductor AWSCDK::Braket AWSCDK::Budgets AWSCDK::Cases AWSCDK::Cassandra AWSCDK::CE AWSCDK::CertificateManager AWSCDK::Chatbot AWSCDK::Chime AWSCDK::CleanRooms AWSCDK::CleanRoomsML AWSCDK::Cloud9 AWSCDK::CloudFormation AWSCDK::CloudFormationInclude AWSCDK::CloudFront AWSCDK::CloudFrontOrigins AWSCDK::CloudTrail AWSCDK::CloudWatch AWSCDK::CloudWatchActions AWSCDK::CodeArtifact AWSCDK::CodeBuild AWSCDK::Codecommit AWSCDK::CodeConnections AWSCDK::CodeDeploy AWSCDK::CodeGuruProfiler AWSCDK::CodeGuruReviewer AWSCDK::Codepipeline AWSCDK::CodePipelineActions AWSCDK::CodeStar AWSCDK::CodeStarConnections AWSCDK::CodeStarNotifications AWSCDK::Cognito AWSCDK::CognitoIdentitypool AWSCDK::Comprehend AWSCDK::ComputeOptimizer AWSCDK::Config AWSCDK::Connect AWSCDK::ConnectCampaigns AWSCDK::ConnectCampaignsv2 AWSCDK::ControlTower AWSCDK::CUR AWSCDK::CustomerProfiles AWSCDK::CustomResources AWSCDK::CXAPI AWSCDK::DataBrew AWSCDK::DataPipeline AWSCDK::Datasync AWSCDK::DataZone AWSCDK::DAX AWSCDK::Deadline AWSCDK::Detective AWSCDK::DeviceFarm AWSCDK::DevOpsAgent AWSCDK::DevOpsGuru AWSCDK::Directconnect AWSCDK::DirectoryService AWSCDK::DLM AWSCDK::DMS AWSCDK::DocDB AWSCDK::DocDBElastic AWSCDK::DSQL AWSCDK::DynamoDB AWSCDK::EC2 AWSCDK::ECR AWSCDK::ECRAssets AWSCDK::ECS AWSCDK::ECSPatterns AWSCDK::EFS AWSCDK::EKS AWSCDK::EKSv2 AWSCDK::Elasticache AWSCDK::ElasticBeanstalk AWSCDK::ElasticLoadBalancing AWSCDK::ElasticLoadBalancingv2 AWSCDK::ElasticLoadBalancingv2Actions AWSCDK::ElasticLoadBalancingv2Targets AWSCDK::Elasticsearch AWSCDK::ElementalInference AWSCDK::EMR AWSCDK::EMRContainers AWSCDK::EMRServerless AWSCDK::EntityResolution AWSCDK::Events AWSCDK::EventSchemas AWSCDK::EventsTargets AWSCDK::Evidently AWSCDK::EVS AWSCDK::ExternalAnthropic AWSCDK::FinSpace AWSCDK::FIS AWSCDK::FMS AWSCDK::Forecast AWSCDK::FraudDetector AWSCDK::FSX AWSCDK::GameLift AWSCDK::GameLiftStreams AWSCDK::GlobalAccelerator AWSCDK::GlobalAcceleratorEndpoints AWSCDK::Glue AWSCDK::Grafana AWSCDK::Greengrass AWSCDK::Greengrassv2 AWSCDK::GroundStation AWSCDK::GuardDuty AWSCDK::HealthImaging AWSCDK::HealthLake AWSCDK::IAM AWSCDK::IdentityStore AWSCDK::ImageBuilder AWSCDK::Inspector AWSCDK::Inspectorv2 AWSCDK::Interconnect AWSCDK::Interfaces AWSCDK::InternetMonitor AWSCDK::Invoicing AWSCDK::IoT AWSCDK::IoTAnalytics AWSCDK::IoTCoreDeviceAdvisor AWSCDK::IoTEvents AWSCDK::IoTFleetHub AWSCDK::IoTFleetWise AWSCDK::IoTSiteWise AWSCDK::IoTThingsGraph AWSCDK::IoTTwinMaker AWSCDK::IoTWireless AWSCDK::IVS AWSCDK::IVSChat AWSCDK::KafkaConnect AWSCDK::Kendra AWSCDK::KendraRanking AWSCDK::Kinesis AWSCDK::KinesisAnalytics AWSCDK::KinesisAnalyticsv2 AWSCDK::KinesisFirehose AWSCDK::KinesisVideo AWSCDK::KMS AWSCDK::LakeFormation AWSCDK::Lambda AWSCDK::LambdaDestinations AWSCDK::LambdaEventSources AWSCDK::LambdaLayerAWSCLI AWSCDK::LambdaLayerNodeProxyAgent AWSCDK::LambdaNodejs AWSCDK::LaunchWizard AWSCDK::Lex AWSCDK::LicenseManager AWSCDK::Lightsail AWSCDK::Location AWSCDK::Logs AWSCDK::LogsDestinations AWSCDK::LookoutEquipment AWSCDK::LookoutMetrics AWSCDK::LookoutVision AWSCDK::M2 AWSCDK::Macie AWSCDK::ManagedBlockchain AWSCDK::MediaConnect AWSCDK::MediaConvert AWSCDK::MediaLive AWSCDK::MediaPackage AWSCDK::MediaPackagev2 AWSCDK::MediaStore AWSCDK::MediaTailor AWSCDK::MemoryDB AWSCDK::MPA AWSCDK::MSK AWSCDK::MWAA AWSCDK::MWAAServerless AWSCDK::Neptune AWSCDK::NeptuneGraph AWSCDK::NetworkFirewall AWSCDK::NetworkManager AWSCDK::NimbleStudio AWSCDK::Notifications AWSCDK::NotificationsContacts AWSCDK::NovaAct AWSCDK::OAM AWSCDK::ObservabilityAdmin AWSCDK::ODB AWSCDK::Omics AWSCDK::OpenSearchServerless AWSCDK::OpenSearchService AWSCDK::OpsWorks AWSCDK::OpsWorksCM AWSCDK::Organizations AWSCDK::OSIS AWSCDK::Panorama AWSCDK::PaymentCryptography AWSCDK::PCAConnectorAD AWSCDK::PCAConnectorSCEP AWSCDK::PCS AWSCDK::Personalize AWSCDK::Pinpoint AWSCDK::PinpointEmail AWSCDK::Pipelines AWSCDK::Pipes AWSCDK::Proton AWSCDK::QBusiness AWSCDK::QLDB AWSCDK::QuickSight AWSCDK::RAM AWSCDK::Rbin AWSCDK::RDS AWSCDK::Redshift AWSCDK::RedshiftServerless AWSCDK::RefactorSpaces AWSCDK::RegionInfo AWSCDK::Rekognition AWSCDK::ResilienceHub AWSCDK::ResilienceHubv2 AWSCDK::ResourceExplorer2 AWSCDK::ResourceGroups AWSCDK::RoboMaker AWSCDK::RolesAnywhere AWSCDK::Route53 AWSCDK::Route53GlobalResolver AWSCDK::Route53Patterns AWSCDK::Route53Profiles AWSCDK::Route53RecoveryControl AWSCDK::Route53RecoveryReadiness AWSCDK::Route53Resolver AWSCDK::Route53Targets AWSCDK::RTBFabric AWSCDK::RUM AWSCDK::S3 AWSCDK::S3Assets AWSCDK::S3Deployment AWSCDK::S3Express AWSCDK::S3Files AWSCDK::S3Notifications AWSCDK::S3ObjectLambda AWSCDK::S3Outposts AWSCDK::S3Tables AWSCDK::S3Vectors AWSCDK::Sagemaker AWSCDK::SAM AWSCDK::Scheduler AWSCDK::SchedulerTargets AWSCDK::SDB AWSCDK::SecretsManager AWSCDK::SecurityAgent AWSCDK::SecurityHub AWSCDK::SecurityLake AWSCDK::ServiceCatalog AWSCDK::ServiceCatalogAppRegistry AWSCDK::ServiceDiscovery AWSCDK::SES AWSCDK::SESActions AWSCDK::Shield AWSCDK::Signer AWSCDK::SimSpaceWeaver AWSCDK::SMSVoice AWSCDK::SNS AWSCDK::SNSSubscriptions AWSCDK::SQS AWSCDK::SSM AWSCDK::SSMContacts AWSCDK::SSMGUIConnect AWSCDK::SSMIncidents AWSCDK::SSMQuickSetup AWSCDK::SSO AWSCDK::StepFunctions AWSCDK::StepFunctionsTasks AWSCDK::SupportApp AWSCDK::Synthetics AWSCDK::SystemsManagerSAP AWSCDK::Timestream AWSCDK::Transfer AWSCDK::Triggers AWSCDK::UXC AWSCDK::Verifiedpermissions AWSCDK::VoiceID AWSCDK::VPCLattice AWSCDK::WAF AWSCDK::WAFRegional AWSCDK::WAFv2 AWSCDK::Wisdom AWSCDK::Workspaces AWSCDK::WorkspacesInstances AWSCDK::WorkspacesThinClient AWSCDK::WorkspacesWeb AWSCDK::XRay