aws / aws/aws-cdk

(ruby): Ruby language bindings for AWS CDK

Open
#38,247 2 comments 0 reactions 0 assignees View on GitHub
aws-cdk-lib effort/medium feature-request p2
Dominant language
TypeScript
Stars
12.9k
Forks
4.6k
Avg merge
2d 3h
Merged PRs (30d)
83

Description

### Describe the feature

Add **Ruby** as a first-class supported language for AWS CDK, alongside TypeScript, Python, Java, C#/.NET and Go. This would let Ruby-centric teams author CDK infrastructure in Ruby (e.g. `AWSCDK::S3::Bucket`) via a published `aws-cdk-lib` Ruby gem, instead of context-switching to another language.

This issue tracks the `aws-cdk-lib` side of the work. The enabling changes live in jsii (compiler, the `jsii-pacmak` Ruby target, and the `@jsii/ruby-runtime` gem); `aws-cdk-lib` only needs additive per-module `.jsiirc.json` Ruby target configuration.

### Use Case

Ruby remains a primary language for many infrastructure and platform teams, who today either maintain a parallel toolchain in another language or avoid CDK entirely. Demand has been long-standing and well-documented — the original request has been open since 2018 and is one of the most-reacted language asks.

Native Ruby bindings remove that friction: infrastructure is defined in the language the team already uses, with idiomatic Ruby ergonomics (snake_case methods, keyword-argument structs, PascalCase modules).

### Proposed Solution

Design is captured in **RFC 0935: Ruby language bindings** — tracking issue [aws/aws-cdk-rfcs#935](https://github.com/aws/aws-cdk-rfcs/issues/935) ([full RFC text](https://github.com/omarqureshi/aws-cdk-rfcs/blob/112e8691e482c53d9de54ccd499a98d76d5eeb47/text/0935-ruby-language-bindings.md)).

The change is **strictly additive** — no breaking changes to existing languages, and only an additive `targets.ruby` schema extension.

Implementation is split across repositories:

- **jsii** (compiler + `jsii-pacmak` Ruby target + `@jsii/ruby-runtime`): aws/jsii#5178 (draft).
- **aws-cdk-lib**: per-module `.jsiirc.json` Ruby target configuration (gem/module naming + acronyms) across the library. A self-contained branch is ready (`omarqureshi/aws-cdk@ruby-language-bindings`, a single commit with no dev scaffolding); a PR will follow this issue.

Naming follows the RFC: root namespace `AWSCDK`, idiomatic Ruby member/module casing, and AWS-prefix de-duplication (`aws-s3` → `AWSCDK::S3::Bucket`). Minimum Ruby is 3.3 (MRI).

> **Dependency:** this is gated on a jsii-compiler release with Ruby target support (tracked in the jsii PR above). Until that ships, the aws-cdk-lib PR's CI will be red by design. End-to-end generation and gem publishing have already been validated against a pre-release build of the compiler.

### Other Information

- Rosetta (code-example translation) for Ruby is out of scope for the initial submission and will follow separately.
- JRuby/TruffleRuby are out of scope for the initial release (MRI only).

### Acknowledgements

- [x] I may be able to implement this feature request
- [ ] This feature might incur a breaking change

### AWS CDK Library version (aws-cdk-lib)

n/a — cross-cutting language-binding addition to `aws-cdk-lib` (targets current `main`); not tied to a released version.

### AWS CDK CLI version

n/a — code-generation / library feature, not CLI-specific.

### Environment details (OS name and version, etc.)

n/a — affects jsii code generation and packaging, not a runtime environment.

Contributor guide

Open the contributing guide

Research direction

Start with RFC 0935 and the per-module .jsiirc.json Ruby target configuration described for aws-cdk-lib; review the dependency on jsii#5178 and its Ruby compiler, pacmak, and runtime work. Done means the additive module configuration is complete across aws-cdk-lib and works with a jsii release supporting Ruby, while Rosetta and non-MRI runtimes remain out of scope.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, ruby, typescript
Domain
build-system, cloud, infrastructure
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.