Skip to content

Commit 10267a2

Browse files
authored
2 parents ad84b4d + a2d55da commit 10267a2

File tree

1,657 files changed

+672546
-408018
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,657 files changed

+672546
-408018
lines changed

.gitattributes

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
*.zip binary
88
*.png binary
99
*.jpg binary
10+
*.tar binary
1011
*.tgz binary
1112
*.tar.gz binary
1213
# Hide snapshots from GitHub UI, except for the actual templates

.github/workflows/pr-linter.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
steps:
3737
- name: "Download workflow_run artifact"
3838
if: github.event_name == 'workflow_run'
39-
uses: dawidd6/action-download-artifact@v16
39+
uses: dawidd6/action-download-artifact@v19
4040
continue-on-error: true
4141
with:
4242
run_id: ${{ github.event.workflow_run.id }}

.github/workflows/security-report.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ jobs:
7474
);
7575
7676
if (botComment) {
77-
const disclaimer = '⚠️ **Experimental Feature**: This security report is currently in experimental phase. Results may include false positives and the rules are being actively refined. \n**Please try `merge from main` to avoid findings unrelated to the PR.**\n\n---\n\n';
77+
const disclaimer = '⚠️ **Experimental Feature**: This security report is currently in experimental phase. Results may include false positives and the rules are being actively refined. \n**This security report is NOT a review blocker.** Please try `merge from main` to avoid findings unrelated to the PR.\n\n---\n\n';
7878
await github.rest.issues.updateComment({
7979
owner: context.repo.owner,
8080
repo: context.repo.repo,
@@ -126,7 +126,7 @@ jobs:
126126
);
127127
128128
if (botComment) {
129-
const disclaimer = '⚠️ **Experimental Feature**: This security report is currently in experimental phase. Results may include false positives and the rules are being actively refined. \n**Please try `merge from main` to avoid findings unrelated to the PR.**\n\n---\n\n';
129+
const disclaimer = '⚠️ **Experimental Feature**: This security report is currently in experimental phase. Results may include false positives and the rules are being actively refined. \n**This security report is NOT a review blocker.** Please try `merge from main` to avoid findings unrelated to the PR.\n\n---\n\n';
130130
await github.rest.issues.updateComment({
131131
owner: context.repo.owner,
132132
repo: context.repo.repo,

CHANGELOG.v2.alpha.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22

33
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
44

5+
## [2.244.0-alpha.0](https://github.com/aws/aws-cdk/compare/v2.243.0-alpha.0...v2.244.0-alpha.0) (2026-03-19)
6+
7+
8+
### Bug Fixes
9+
10+
* **kinesisanalytics-flink-alpha:** mark deprecated flink runtimes as deprecated ([#37155](https://github.com/aws/aws-cdk/issues/37155)) ([0a89447](https://github.com/aws/aws-cdk/commit/0a894472650bb1a2c41050ae2b00581fb937c924))
11+
512
## [2.243.0-alpha.0](https://github.com/aws/aws-cdk/compare/v2.242.0-alpha.0...v2.243.0-alpha.0) (2026-03-11)
613

714
## [2.242.0-alpha.0](https://github.com/aws/aws-cdk/compare/v2.241.0-alpha.0...v2.242.0-alpha.0) (2026-03-10)

CHANGELOG.v2.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,25 @@
22

33
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
44

5+
## [2.244.0](https://github.com/aws/aws-cdk/compare/v2.243.0...v2.244.0) (2026-03-19)
6+
7+
8+
### Features
9+
10+
* **codebuild:** add support for macOS 26 runners ([#37240](https://github.com/aws/aws-cdk/issues/37240)) ([1b7b292](https://github.com/aws/aws-cdk/commit/1b7b2929fccd786c0bd38ea735b90aef9e470106)), closes [#37241](https://github.com/aws/aws-cdk/issues/37241) [#35836](https://github.com/aws/aws-cdk/issues/35836)
11+
* update L1 CloudFormation resource definitions ([#37260](https://github.com/aws/aws-cdk/issues/37260)) ([40a5142](https://github.com/aws/aws-cdk/commit/40a5142771b1ea450a2f7c684e102548a626ddba))
12+
* **rds:** add standalone resource creation for ParameterGroup ([#37165](https://github.com/aws/aws-cdk/issues/37165)) ([5441a51](https://github.com/aws/aws-cdk/commit/5441a515b6aab9e091c7a09f96663c723b122bcf)), closes [#9741](https://github.com/aws/aws-cdk/issues/9741)
13+
* **ecs:** add forceNewDeployment feature for ecs service ([#35726](https://github.com/aws/aws-cdk/issues/35726)) ([d16dc7e](https://github.com/aws/aws-cdk/commit/d16dc7e433c4986f3473b2992ba36bee9fb64f1e)), closes [#27762](https://github.com/aws/aws-cdk/issues/27762)
14+
* **mixins:** helpers to convert between Aspects and Mixins ([#37235](https://github.com/aws/aws-cdk/issues/37235)) ([4537f69](https://github.com/aws/aws-cdk/commit/4537f694f7b8da5fa038b994031998c85bfbe3c8))
15+
* **spec2cdk:** add `actions()` method to Grants classes ([#36987](https://github.com/aws/aws-cdk/issues/36987)) ([bbeaf5d](https://github.com/aws/aws-cdk/commit/bbeaf5df5aef3f926586b4fe94fbcb6f903da8ce))
16+
17+
18+
### Bug Fixes
19+
20+
* **aws-cdk-lib:** error annotations now have error codes ([#37270](https://github.com/aws/aws-cdk/issues/37270)) ([0b9629e](https://github.com/aws/aws-cdk/commit/0b9629e421a2edc41d749af13ba058eba14342fa))
21+
* **eks:** clear OCI repo/version after local pull for Helm v4 compatibility ([#37142](https://github.com/aws/aws-cdk/issues/37142)) ([e6a8804](https://github.com/aws/aws-cdk/commit/e6a88047b5776a69156ef5116930e5788ee550b7)), closes [/github.com/helm/helm/blob/v3.19.0/pkg/action/install.go#L753-L769](https://github.com/aws//github.com/helm/helm/blob/v3.19.0/pkg/action/install.go/issues/L753-L769) [/github.com/helm/helm/blob/main/pkg/action/install.go#L893-L909](https://github.com/aws//github.com/helm/helm/blob/main/pkg/action/install.go/issues/L893-L909)
22+
* all errors now have error codes ([#36934](https://github.com/aws/aws-cdk/issues/36934)) ([408c12f](https://github.com/aws/aws-cdk/commit/408c12f0b00fede5c3a8b1d43024e961087adcfa))
23+
524
## [2.243.0](https://github.com/aws/aws-cdk/compare/v2.242.0...v2.243.0) (2026-03-11)
625

726

design/mixins-facades-traits.md

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ graph TD
2323
M["<b>Mixins</b><br/>Inward-looking features<br/><i>BucketVersioning, AutoDeleteObjects</i>"]
2424
CFN(["<b>CFN Resource<br/>Construct</b>"])
2525
T["<b>Traits</b><br/>Outward advertisement of contracts<br/><i>Encryptable, HasResourcePolicy</i>"]
26-
F["<b>Facades</b><br/>Simplified interfaces for integrations<br/><i>Grants, Metrics, Reflections</i>"]
26+
F["<b>Facades</b><br/>Simplified interfaces for external consumers<br/><i>Grants, Metrics, Reflections</i>"]
2727
2828
M --- CFN
2929
CFN --- T
@@ -63,14 +63,24 @@ the right Trait, and build custom L2s by composing these building blocks.
6363

6464
### Mixins
6565

66-
Mixins are **inward-looking features** that modify a resource's own
67-
configuration. They are composable abstractions applied to constructs via the
68-
`.with()` method from the `constructs` library.
66+
Mixins are **inward-looking features** that extend a resource's own behavior.
67+
They are composable abstractions applied to constructs via the `.with()` method
68+
from the `constructs` library.
6969

70-
Mixins operate on a single primary resource. While a mixin can create auxiliary
71-
resources (like custom resource handlers) or accept other constructs as props,
72-
it is not designed for integrations between two equally important resources
73-
(e.g. connecting an SNS Topic to an SQS Queue). For those, use a Facade.
70+
A Mixin is a feature *of* the target resource. The defining question is: "is
71+
this feature about the target resource?" If yes, it is a Mixin — regardless of
72+
whether it sets properties on the L1, creates auxiliary resources, or both.
73+
74+
Mixins operate on a single primary resource. A Mixin may set properties on the
75+
L1 resource directly (e.g. enabling versioning), create auxiliary resources that
76+
serve the primary resource (e.g. a custom resource handler for auto-deletion, or
77+
a delivery source for vended logs), or accept other constructs as props (e.g. a
78+
destination log group or S3 bucket). What matters is that the feature is *about*
79+
the target resource — the auxiliary resources and props exist to support it.
80+
81+
Mixins are not designed for integrations between two equally important resources
82+
where neither is subordinate to the other (e.g. granting a role access to a
83+
bucket). For those, use a Facade.
7484

7585
Mixins target L1 (`Cfn*`) resources. When applied to an L2 construct via
7686
`.with()`, the mixin framework automatically delegates to the L1 default child.
@@ -90,14 +100,19 @@ Mixins target L1 (`Cfn*`) resources. When applied to an L2 construct via
90100

91101
**When to use:**
92102

93-
- A feature modifies the resource's own configuration.
103+
- The feature is *about* the target resource — it extends the resource's own
104+
behavior or lifecycle.
105+
- The feature sets properties on the L1 resource (e.g. enabling versioning).
106+
- The feature creates auxiliary resources that serve the primary resource (e.g.
107+
custom resource handlers, delivery sources, policy resources).
94108
- The feature should work with both L1 and L2 constructs.
95-
- The feature involves creating auxiliary resources (custom resources, policies).
96109
- Users should be able to compose features independently of L2 props.
97110

98111
**When not to use:**
99112

100-
- The feature integrates the resource with something external (use a Facade).
113+
- The feature serves an external consumer, not the target resource (use a
114+
Facade). For example, granting a role access to a bucket is about the
115+
role's needs, not the bucket's behavior.
101116
- The feature advertises a capability to other constructs (use a Trait).
102117
- You need to change the optionality of properties or change defaults (Mixins
103118
cannot do this).
@@ -108,8 +123,15 @@ For detailed implementation guidelines, see
108123
### Facades
109124

110125
Facades are **resource-specific simplified interfaces that provide
111-
integrations** for a resource with other things. They are standalone classes
112-
with a static factory method that accepts a resource reference interface.
126+
integrations** for a resource with external consumers. They are standalone
127+
classes with a static factory method that accepts a resource reference interface.
128+
129+
The defining characteristic of a Facade is directionality: a Facade serves an
130+
*external consumer*, not the target resource. For example, `BucketGrants`
131+
exists to serve the grantee (a role that needs access), not the bucket. The
132+
bucket doesn't care about the grant — the grant exists because the consumer
133+
needs it. Compare this to a Mixin like `BucketAutoDeleteObjects`, which is a
134+
feature *of* the bucket regardless of any external consumer.
113135

114136
Facades are always specific to a particular resource type — that is why it is
115137
`BucketGrants` and not just `Grants`. While Facades for different resources look
@@ -130,16 +152,15 @@ provide their own Facades for any resource without modifying `aws-cdk-lib`.
130152
- Accept the resource reference interface (`IBucketRef`), enabling use with
131153
both L1 and L2 constructs.
132154
- Exposed as properties on the construct interface (e.g. `readonly grants`).
133-
- Do not modify the resource's own configuration.
134155

135156
**Examples:** `BucketGrants`, `TopicGrants`, `BucketMetrics`, `BucketReflection`
136157

137158
**When to use:**
138159

139-
- The feature provides an integration between a specific resource and something
140-
external (IAM permissions, CloudWatch metrics, event patterns).
160+
- The feature serves an external consumer, not the target resource (e.g. IAM
161+
permissions serve the grantee, CloudWatch metrics serve the operator).
141162
- The feature should work with both L1 and L2 constructs.
142-
- The feature does not modify the resource itself.
163+
- The feature is not *about* the target resource's own behavior.
143164

144165
### Traits
145166

docs/DESIGN_GUIDELINES.md

Lines changed: 39 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -213,11 +213,19 @@ distinct role and can be used independently of an L2.
213213

214214
### Mixins
215215

216-
Mixins are **inward-looking features** that modify a resource's own
217-
configuration. They are composable abstractions applied to constructs via the
218-
`.with()` method. Mixins usually operate on a single primary resource and can be
219-
applied to L1s, L2s, or custom constructs alike. They are not designed for
220-
integrations between two equally important resources — use a
216+
Mixins are **inward-looking features** that extend a resource's own behavior.
217+
They are composable abstractions applied to constructs via the `.with()` method.
218+
219+
A Mixin is a feature *of* the target resource. The defining question is: "is
220+
this feature about the target resource?" If yes, it is a Mixin — regardless of
221+
whether it sets properties on the L1, creates auxiliary resources (e.g. custom
222+
resource handlers, delivery sources), or both. Mixins may accept other
223+
constructs as props (e.g. a destination log group), but the feature remains
224+
about the target resource.
225+
226+
Mixins usually operate on a single primary resource and can be applied to L1s,
227+
L2s, or custom constructs alike. They are not designed for features that serve
228+
an external consumer rather than the target resource — use a
221229
[Facade](#facades) for that.
222230

223231
Examples: `BucketVersioning`, `BucketAutoDeleteObjects`, `BucketBlockPublicAccess`.
@@ -235,10 +243,12 @@ new s3.Bucket(this, 'Bucket', { removalPolicy: RemovalPolicy.DESTROY })
235243

236244
When to use a Mixin:
237245

238-
- A feature can be expressed as a modification to an L1 resource.
246+
- The feature is *about* the target resource — it extends the resource's own
247+
behavior or lifecycle.
248+
- The feature sets properties on the L1 resource (e.g. enabling versioning).
249+
- The feature creates auxiliary resources that serve the primary resource (e.g.
250+
custom resource handlers, delivery sources, policy resources).
239251
- The same feature should be applicable to both L1 and L2 constructs.
240-
- A feature involves creating auxiliary resources (e.g., custom resources,
241-
policies) that support the primary resource.
242252
- You want to allow users to compose features independently of the L2
243253
construct's props.
244254

@@ -253,10 +263,16 @@ For detailed implementation guidelines, see the
253263
### Facades
254264

255265
Facades are **resource-specific simplified interfaces that provide
256-
integrations** for a resource with other things. They are standalone classes
257-
with a static factory method (e.g., `fromBucket()` or `of()`) that accepts a
258-
resource reference interface. Facades are exposed as properties on the construct
259-
interface.
266+
integrations** for a resource with external consumers. They are standalone
267+
classes with a static factory method (e.g., `fromBucket()` or `of()`) that
268+
accepts a resource reference interface. Facades are exposed as properties on the
269+
construct interface.
270+
271+
The defining characteristic of a Facade is directionality: a Facade serves an
272+
*external consumer*, not the target resource. For example, `BucketGrants`
273+
exists to serve the grantee (a role that needs access), not the bucket. Compare
274+
this to a Mixin like `BucketAutoDeleteObjects`, which is a feature *of* the
275+
bucket regardless of any external consumer.
260276

261277
Facades are always specific to a particular resource type — that is why it is
262278
`BucketGrants` and not just `Grants`. While Facades for different resources look
@@ -284,10 +300,10 @@ grants.read(role);
284300

285301
When to use a Facade:
286302

287-
- The feature provides an integration between a specific resource and something
288-
external (e.g., IAM permissions, CloudWatch metrics, event patterns).
303+
- The feature serves an external consumer, not the target resource (e.g., IAM
304+
permissions serve the grantee, CloudWatch metrics serve the operator).
289305
- The feature should work with both L1 and L2 constructs.
290-
- The feature does not modify the resource's own configuration.
306+
- The feature is not *about* the target resource's own behavior.
291307

292308
The [Grants](#grants) section below describes the most common Facade in detail.
293309

@@ -318,8 +334,8 @@ interact with directly.
318334

319335
| Question | Mixin | Facade | Trait |
320336
| ------------------------------------------------ | ------------------------------- | ---------------- | ---------------- |
321-
| Does it modify the resource itself? | yes | no | |
322-
| Does it integrate with external things? | no | yes | yes |
337+
| Is the feature *about* the target resource? | yes | no | |
338+
| Does it serve an external consumer? | no | yes | yes |
323339
| Does it advertise a service-agnostic capability? | cross-service Mixins | no | yes |
324340
| Is it specific to one resource type? | yes | yes | no |
325341
| Should it work with L1 constructs? | yes | yes | yes |
@@ -1541,6 +1557,7 @@ so on). The `grants.json` file has the following general structure:
15411557
{
15421558
"resources": {
15431559
"Topic": {
1560+
"isEncrypted": true,
15441561
"hasResourcePolicy": true,
15451562
"grants": {
15461563
"publish": {
@@ -1561,6 +1578,11 @@ so on). The `grants.json` file has the following general structure:
15611578
where:
15621579

15631580
* `Topic` - the class to generate grants for. This will lead to a class named TopicGrants.
1581+
* `isEncrypted` - indicates whether the resource is encrypted with a KMS key. When true, the `actions()` method will
1582+
have an `options` parameter of type `EncryptedPermissionOptions` that allows users to specify additional KMS permissions
1583+
to be granted on the key. If left undefined, but at least one grant method includes `keyActions`, the CDK will assume
1584+
that the resource is encrypted and the same behavior will apply. Note that if `isEncrypted` is explicitly set to false,
1585+
it is an error to specify `keyActions` in any of the grants.
15641586
* `hasResourcePolicy` - indicates whether the resource supports a resource policy. When true, all auto-generated methods in the Grants class will attempt to add statements to the resource policy when applicable. When false, the methods will only modify the principal's policy.
15651587
* `publish` - the name of a grant.
15661588
* `actions` - the actions to encompass in the grant.

docs/MIXINS_DESIGN_GUIDELINES.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,20 @@ For an overview of how Mixins relate to Facades and Traits, see the
1313

1414
Mixins are appropriate when:
1515

16-
- A feature can be expressed as a modification to an L1 resource (e.g.,
17-
enabling versioning on a bucket).
16+
- The feature is *about* the target resource — it extends the resource's own
17+
behavior or lifecycle.
18+
- The feature sets properties on the L1 resource (e.g., enabling versioning on
19+
a bucket).
20+
- The feature creates auxiliary resources that serve the primary resource (e.g.,
21+
custom resource handlers, delivery sources, policy resources).
1822
- The same feature should be applicable to both L1 and L2 constructs.
19-
- A feature involves creating auxiliary resources (e.g., custom resources,
20-
policies) that support the primary resource.
2123
- You want to allow users to compose features independently of the L2
2224
construct's props.
2325

26+
Mixins are _not_ appropriate when the feature serves an external consumer rather
27+
than the target resource (use a Facade). For example, granting a role access to
28+
a bucket is about the role's needs, not the bucket's behavior.
29+
2430
Mixins are _not_ a replacement for construct properties. They cannot change the
2531
optionality of properties or change defaults.
2632

packages/@aws-cdk-testing/framework-integ/test/aws-autoscaling/test/integ.asg-lc.js.snapshot/AsgFromLaunchConfigTestDefaultTestDeployAssert4F0C1C7C.assets.json

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)