Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(s3): autoDeleteObjects log group allows retention period and removal policy definitions #2

Closed
wants to merge 14 commits into from

Conversation

kishiel
Copy link
Owner

@kishiel kishiel commented Apr 2, 2024

Issue aws#24815

Closes aws#24815

Reason for this change

S3 bucket autoDeleteObjects leaves behind a log group for each bucket that uses the feature. This results in a lot of cruft, especially in test accounts, which should be configurable by the bucket owner. The account limit for log groups is 10,000 and I've got test accounts that have hit this limit several times.

Description of changes

  • Creates a log group rather than relying on the underlying custom-resource to create it automatically (a side effect of using CfnResource for AWS::Lambda::Function)
  • Sets a default retention period of 90 days on the log group (I picked a number)
  • Sets a default removal policy of delete on the log group (I don't think anyone wants these after they delete a bucket)
  • Denies the custom-resource Lambda role permission to create a log group (prevents log group recreation on delete)
  • Adds log group name as an optional to the interface of the custom-resource. This is plumbed into the loggingConfig and results in an undefined entry if not provided.

Description of how you validated changes

Unit tests in addition to some simple functional tests.

When making a bucket with autoDeleteObjects enabled I wanted to confirm that the log group for the lambda was, in fact, gone after I deleted the stack. This is how I found that I needed to modify the permission of the Lambda role to deny log group creation.

I also confirmed that the custom-resources which do not provide a log group name still produce a log group and logs within.

Also, over 100 snapshot tests (RIP me).

Checklist


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

nmussy and others added 14 commits March 30, 2024 10:41
### Issue # (if applicable)

Closes #29560.

### Reason for this change

The service name generated by the CDK for global VPC endpoints was incorrect, as it contained the stack's region:

```sh
$ aws ec2 describe-vpc-endpoint-services --region=us-east-1 --service-names=com.amazonaws.s3-global.accesspoint | jq '.ServiceDetails[] | .ServiceName'

"com.amazonaws.s3-global.accesspoint"
```

```ts
new CfnOutput(this, "endpoint", {
	value: ec2.InterfaceVpcEndpointAwsService.S3_MULTI_REGION_ACCESS_POINTS.name,
});

// TestDeployStack.endpoint = com.amazonaws.eu-west-1.s3-global.accesspoint
```

In addition, another global endpoint was missing from `InterfaceVpcEndpointAwsService`.

### Description of changes

* The `InterfaceVpcEndpointAwsService` constructor was modified to
  * I would have preferred to switch to a single object for the optional constructor properties (`prefix`, `port`, and now `global`), but couldn't make a breaking change to a publicly accessible constructor
* `InterfaceVpcEndpointAwsService.S3_MULTI_REGION_ACCESS_POINTS` was changed to be a global VPC endpoint
* `InterfaceVpcEndpointAwsService.CODECATALYST` was added

### Description of how you validated changes

I've added a unit test to check that the global endpoints' name were set correctly.

I also added an integration test for `InterfaceVpcEndpointAwsService.S3_MULTI_REGION_ACCESS_POINTS`.
To test it, I created a publicly accessible EC2 instance on the VPC, connected to it and ran `nslookup accesspoint.s3-global.amazonaws.com` to make sure it was resolvable (see [Configuring a Multi-Region Access Point for use with AWS PrivateLink](https://docs.aws.amazon.com/AmazonS3/latest/userguide/MultiRegionAccessPointsPrivateLink.html)):

Without the `InterfaceVpcEndpointAwsService.S3_MULTI_REGION_ACCESS_POINTS` interface endpoint:
```sh
$ nslookup accesspoint.s3-global.amazonaws.com
Server:         10.0.0.2
Address:        10.0.0.2#53

Non-authoritative answer:
*** Can't find accesspoint.s3-global.amazonaws.com: No answer
```

With the `InterfaceVpcEndpointAwsService.S3_MULTI_REGION_ACCESS_POINTS` interface endpoint:
```sh
$ nslookup accesspoint.s3-global.amazonaws.com
Server:         10.0.0.2
Address:        10.0.0.2#53

Non-authoritative answer:
Name:   accesspoint.s3-global.amazonaws.com
Address: 10.0.156.75
Name:   accesspoint.s3-global.amazonaws.com
Address: 10.0.246.83
```


### Checklist
- [x] My code adheres to the [CONTRIBUTING GUIDE](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md) and [DESIGN GUIDELINES](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md)

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
)

Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 43.0.1 to 44.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/tj-actions/changed-files/releases">tj-actions/changed-files's releases</a>.</em></p>
<blockquote>
<h2>v44.0.0</h2>
<h2>🔥🔥 BREAKING CHANGE 🔥🔥</h2>
<h3>Overview</h3>
<p>We've made a significant update to how pull requests (PRs) from forked repositories are processed. This improvement not only streamlines the handling of such PRs but also fixes a previously identified issue.</p>
<h3>Before the Change</h3>
<p>Previously, when you created a pull request from a forked repository, any files changed in the target branch after the PR creation would erroneously appear as part of the PR's changed files. This made it difficult to distinguish between the actual changes introduced by the PR and subsequent changes made directly to the target branch.</p>
<h3>What Has Changed</h3>
<p>With this update, a pull request from a fork will now <strong>only</strong> include the files that were explicitly changed in the fork. This ensures that the list of changed files in a PR accurately reflects the contributions from the fork, without being muddled by unrelated changes to the target branch.</p>
<hr />
<h2>What's Changed</h2>
<ul>
<li>Upgraded to v43.0.1 by <a href="https://github.com/tj-actions-bot"><code>@​tj-actions-bot</code></a> in <a href="https://redirect.github.com/tj-actions/changed-files/pull/2004">tj-actions/changed-files#2004</a></li>
<li>chore(deps): lock file maintenance by <a href="https://github.com/renovate"><code>@​renovate</code></a> in <a href="https://redirect.github.com/tj-actions/changed-files/pull/2005">tj-actions/changed-files#2005</a></li>
<li>chore(deps): update typescript-eslint monorepo to v7.4.0 by <a href="https://github.com/renovate"><code>@​renovate</code></a> in <a href="https://redirect.github.com/tj-actions/changed-files/pull/2006">tj-actions/changed-files#2006</a></li>
<li>fix: bug with prs from forks returning incorrect set of changed files by <a href="https://github.com/jackton1"><code>@​jackton1</code></a> in <a href="https://redirect.github.com/tj-actions/changed-files/pull/2007">tj-actions/changed-files#2007</a></li>
<li>fix: check for setting remote urls for forks by <a href="https://github.com/jackton1"><code>@​jackton1</code></a> in <a href="https://redirect.github.com/tj-actions/changed-files/pull/2009">tj-actions/changed-files#2009</a></li>
<li>fix: update to add the fork remote by <a href="https://github.com/jackton1"><code>@​jackton1</code></a> in <a href="https://redirect.github.com/tj-actions/changed-files/pull/2010">tj-actions/changed-files#2010</a></li>
<li>fix: update previous sha for forks by <a href="https://github.com/jackton1"><code>@​jackton1</code></a> in <a href="https://redirect.github.com/tj-actions/changed-files/pull/2011">tj-actions/changed-files#2011</a></li>
<li>fix: ensure the fork remote doesn't exists before creating it by <a href="https://github.com/jackton1"><code>@​jackton1</code></a> in <a href="https://redirect.github.com/tj-actions/changed-files/pull/2012">tj-actions/changed-files#2012</a></li>
<li>chore: update description of other_deleted_files output by <a href="https://github.com/tonyejack1"><code>@​tonyejack1</code></a> in <a href="https://redirect.github.com/tj-actions/changed-files/pull/2008">tj-actions/changed-files#2008</a></li>
<li>Updated README.md by <a href="https://github.com/tj-actions-bot"><code>@​tj-actions-bot</code></a> in <a href="https://redirect.github.com/tj-actions/changed-files/pull/2013">tj-actions/changed-files#2013</a></li>
<li>remove: unused code by <a href="https://github.com/jackton1"><code>@​jackton1</code></a> in <a href="https://redirect.github.com/tj-actions/changed-files/pull/2014">tj-actions/changed-files#2014</a></li>
<li>chore: update description of outputs removing asterisks  by <a href="https://github.com/tonyejack1"><code>@​tonyejack1</code></a> in <a href="https://redirect.github.com/tj-actions/changed-files/pull/2015">tj-actions/changed-files#2015</a></li>
<li>Updated README.md by <a href="https://github.com/tj-actions-bot"><code>@​tj-actions-bot</code></a> in <a href="https://redirect.github.com/tj-actions/changed-files/pull/2016">tj-actions/changed-files#2016</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/tonyejack1"><code>@​tonyejack1</code></a> made their first contribution in <a href="https://redirect.github.com/tj-actions/changed-files/pull/2008">tj-actions/changed-files#2008</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a href="https://github.com/tj-actions/changed-files/compare/v43.0.1...v44.0.0">https://github.com/tj-actions/changed-files/compare/v43.0.1...v44.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/tj-actions/changed-files/blob/main/HISTORY.md">tj-actions/changed-files's changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h1><a href="https://github.com/tj-actions/changed-files/compare/v43.0.1...v44.0.0">44.0.0</a> - (2024-03-27)</h1>
<h2>🐛 Bug Fixes</h2>
<ul>
<li>Ensure the fork remote doesn't exists before creating it (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2012">#2012</a>) (<a href="https://github.com/tj-actions/changed-files/commit/4bbd49b9986b1300b75e8efb5778350b750ae6c8">4bbd49b</a>)  - (Tonye Jack)</li>
<li>Update previos sha for forks (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2011">#2011</a>) (<a href="https://github.com/tj-actions/changed-files/commit/f0e7702ccc35952acb83edeb7400b05c0a67e2be">f0e7702</a>)  - (Tonye Jack)</li>
<li>Update to add the fork remote (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2010">#2010</a>) (<a href="https://github.com/tj-actions/changed-files/commit/6354e6c5426d1e7c7a2d8a5887e26b535837958e">6354e6c</a>)  - (Tonye Jack)</li>
<li>Check for setting remote urls for forks (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2009">#2009</a>) (<a href="https://github.com/tj-actions/changed-files/commit/117616472fb771d9e030aa0c3741057ad520d9cf">1176164</a>)  - (Tonye Jack)</li>
<li>Bug with prs from forks returning incorrect set of changed files (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2007">#2007</a>) (<a href="https://github.com/tj-actions/changed-files/commit/4ff79362e5015d6d0c6c0050b3082c97a5b7e84a">4ff7936</a>)  - (Tonye Jack)</li>
</ul>
<h2>➖ Remove</h2>
<ul>
<li>Unused code (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2014">#2014</a>) (<a href="https://github.com/tj-actions/changed-files/commit/90941b398f6d8d3ade3e2b8f179d0c64f3679de6">90941b3</a>)  - (Tonye Jack)</li>
</ul>
<h2>🔄 Update</h2>
<ul>
<li>Updated README.md (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2016">#2016</a>)</li>
</ul>
<p>Co-authored-by: jackton1 <a href="mailto:17484350+jackton1@users.noreply.github.com">17484350+jackton1@users.noreply.github.com</a> (<a href="https://github.com/tj-actions/changed-files/commit/2d756ea4c53f7f6b397767d8723b3a10a9f35bf2">2d756ea</a>)  - (tj-actions[bot])</p>
<ul>
<li>Update README.md (<a href="https://github.com/tj-actions/changed-files/commit/2d21bbb405b3e0e15479b93c4d9989b4b780a266">2d21bbb</a>)  - (Tonye Jack)</li>
<li>Updated README.md (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2013">#2013</a>)</li>
</ul>
<p>Co-authored-by: jackton1 <a href="mailto:17484350+jackton1@users.noreply.github.com">17484350+jackton1@users.noreply.github.com</a> (<a href="https://github.com/tj-actions/changed-files/commit/2ca8dc42f60aab6d0f54beb4e1bd63f15aa53632">2ca8dc4</a>)  - (tj-actions[bot])</p>
<ul>
<li>Update README.md (<a href="https://github.com/tj-actions/changed-files/commit/4621617d4b568fe72798b05a512482442405549c">4621617</a>)  - (tonyejack1)</li>
<li>Update README.md (<a href="https://github.com/tj-actions/changed-files/commit/c6557ed000b9d1dbc0abcb5c2a7efc1ef3baa379">c6557ed</a>)  - (Tonye Jack)</li>
<li>Update README.md (<a href="https://github.com/tj-actions/changed-files/commit/0713a11242c796d0e601c9ac8f009c2beed0d646">0713a11</a>)  - (Tonye Jack)</li>
</ul>
<h2>⚙️ Miscellaneous Tasks</h2>
<ul>
<li>Update description of outputs removing asterisks (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2015">#2015</a>) (<a href="https://github.com/tj-actions/changed-files/commit/ce497c39e9043c5dec72f4506445f6b5dbd1f027">ce497c3</a>)  - (tonyejack1)</li>
<li>Update description of other_deleted_files output (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2008">#2008</a>) (<a href="https://github.com/tj-actions/changed-files/commit/ee096d679e877096b9d6e42066f654e0d9d65b1a">ee096d6</a>)  - (tonyejack1)</li>
<li><strong>deps:</strong> Update typescript-eslint monorepo to v7.4.0 (<a href="https://github.com/tj-actions/changed-files/commit/064742427d8106b59345e3fabb40031068c82c41">0647424</a>)  - (renovate[bot])</li>
<li><strong>deps:</strong> Lock file maintenance (<a href="https://github.com/tj-actions/changed-files/commit/efe5e6c7a415f33e8936dea8c45a8fe80be66a92">efe5e6c</a>)  - (renovate[bot])</li>
</ul>
<h2>⬆️ Upgrades</h2>
<ul>
<li>Upgraded to v43.0.1 (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2004">#2004</a>)</li>
</ul>
<p>Co-authored-by: jackton1 <a href="mailto:17484350+jackton1@users.noreply.github.com">17484350+jackton1@users.noreply.github.com</a> (<a href="https://github.com/tj-actions/changed-files/commit/01e9662a12a71c5aea74e82ca1c58fa76a640c61">01e9662</a>)  - (tj-actions[bot])</p>
<h1><a href="https://github.com/tj-actions/changed-files/compare/v43.0.0...v43.0.1">43.0.1</a> - (2024-03-20)</h1>
<h2>🐛 Bug Fixes</h2>
<ul>
<li>Remove warning with detecting the local git repository when using Github's REST API (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2002">#2002</a>) (<a href="https://github.com/tj-actions/changed-files/commit/077b23f6a68d9322b1b4ed4d0c88791b30b314d8">077b23f</a>)  - (Tonye Jack)</li>
</ul>
<h2>📦 Bumps</h2>

</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/tj-actions/changed-files/commit/2d756ea4c53f7f6b397767d8723b3a10a9f35bf2"><code>2d756ea</code></a> Updated README.md (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2016">#2016</a>)</li>
<li><a href="https://github.com/tj-actions/changed-files/commit/ce497c39e9043c5dec72f4506445f6b5dbd1f027"><code>ce497c3</code></a> chore: update description of outputs removing asterisks (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2015">#2015</a>)</li>
<li><a href="https://github.com/tj-actions/changed-files/commit/2d21bbb405b3e0e15479b93c4d9989b4b780a266"><code>2d21bbb</code></a> Update README.md</li>
<li><a href="https://github.com/tj-actions/changed-files/commit/90941b398f6d8d3ade3e2b8f179d0c64f3679de6"><code>90941b3</code></a> remove: unused code (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2014">#2014</a>)</li>
<li><a href="https://github.com/tj-actions/changed-files/commit/2ca8dc42f60aab6d0f54beb4e1bd63f15aa53632"><code>2ca8dc4</code></a> Updated README.md (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2013">#2013</a>)</li>
<li><a href="https://github.com/tj-actions/changed-files/commit/ee096d679e877096b9d6e42066f654e0d9d65b1a"><code>ee096d6</code></a> chore: update description of other_deleted_files output (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2008">#2008</a>)</li>
<li><a href="https://github.com/tj-actions/changed-files/commit/4621617d4b568fe72798b05a512482442405549c"><code>4621617</code></a> Update README.md</li>
<li><a href="https://github.com/tj-actions/changed-files/commit/4bbd49b9986b1300b75e8efb5778350b750ae6c8"><code>4bbd49b</code></a> fix: ensure the fork remote doesn't exists before creating it (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2012">#2012</a>)</li>
<li><a href="https://github.com/tj-actions/changed-files/commit/c6557ed000b9d1dbc0abcb5c2a7efc1ef3baa379"><code>c6557ed</code></a> Update README.md</li>
<li><a href="https://github.com/tj-actions/changed-files/commit/f0e7702ccc35952acb83edeb7400b05c0a67e2be"><code>f0e7702</code></a> fix: update previos sha for forks (<a href="https://redirect.github.com/tj-actions/changed-files/issues/2011">#2011</a>)</li>
<li>Additional commits viewable in <a href="https://github.com/tj-actions/changed-files/compare/20576b4b9ed46d41e2d45a2256e5e2316dde6834...2d756ea4c53f7f6b397767d8723b3a10a9f35bf2">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=tj-actions/changed-files&package-manager=github_actions&previous-version=43.0.1&new-version=44.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>
Bumps [github/issue-metrics](https://github.com/github/issue-metrics) from 2 to 3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/github/issue-metrics/releases">github/issue-metrics's releases</a>.</em></p>
<blockquote>
<h2>v3.0.0</h2>
<h1>Changelog</h1>
<ul>
<li>Update CODEOWNERS <a href="https://github.com/zkoppert"><code>@​zkoppert</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/220">#220</a>)</li>
</ul>
<h2>🚀 Features</h2>
<ul>
<li>feat: [breaking] authenticate with github app installation and repo standardization <a href="https://github.com/jmeridth"><code>@​jmeridth</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/221">#221</a>)</li>
</ul>
<h2>🧰 Maintenance</h2>
<ul>
<li>switch to v3 <a href="https://github.com/zkoppert"><code>@​zkoppert</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/223">#223</a>)</li>
<li>build(deps): bump mypy from 1.8.0 to 1.9.0 <a href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/224">#224</a>)</li>
<li>build(deps): bump pytest-cov from 4.1.0 to 5.0.0 <a href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/225">#225</a>)</li>
<li>build(deps): bump pytest-cov from 4.1.0 to 5.0.0 <a href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/222">#222</a>)</li>
</ul>
<p>See details of <a href="https://github.com/github/issue-metrics/compare/v2.15.0...v3.0.0">all code changes</a> since previous release</p>
<h2>v2.15.0</h2>
<h1>Changelog</h1>
<h2>🚀 Features</h2>
<ul>
<li>linking author to profile <a href="https://github.com/chrheg"><code>@​chrheg</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/203">#203</a>)</li>
</ul>
<h2>🧰 Maintenance</h2>
<ul>
<li>Use keep label to exempt issues from stale action <a href="https://github.com/zkoppert"><code>@​zkoppert</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/216">#216</a>)</li>
<li>Create stale.yaml <a href="https://github.com/zkoppert"><code>@​zkoppert</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/214">#214</a>)</li>
<li>build(deps): bump pytest from 8.0.2 to 8.1.1 <a href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/213">#213</a>)</li>
<li>build(deps): bump pytest from 8.0.1 to 8.0.2 <a href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/209">#209</a>)</li>
<li>build(deps): bump pylint from 3.0.3 to 3.1.0 <a href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/210">#210</a>)</li>
<li>build(deps): bump pytest from 8.0.0 to 8.0.1 <a href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/207">#207</a>)</li>
<li>build(deps): bump numpy from 1.26.3 to 1.26.4 <a href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/205">#205</a>)</li>
<li>Update README.md to include github-ospo reference <a href="https://github.com/ashleywolf"><code>@​ashleywolf</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/204">#204</a>)</li>
</ul>
<p>See details of <a href="https://github.com/github/issue-metrics/compare/v2.14.3...v2.15.0">all code changes</a> since previous release</p>
<h2>v2.14.3</h2>
<h1>Changelog</h1>
<h2>🧰 Maintenance</h2>
<ul>
<li>build(deps): bump pytz from 2023.4 to 2024.1 <a href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/200">#200</a>)</li>
<li>build(deps): bump release-drafter/release-drafter from 5 to 6 <a href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/199">#199</a>)</li>
<li>Update issue creation action version <a href="https://github.com/zkoppert"><code>@​zkoppert</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/201">#201</a>)</li>
<li>build(deps): bump pytest from 7.4.4 to 8.0.0 <a href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/194">#194</a>)</li>
<li>build(deps): bump pytz from 2023.3.post1 to 2023.4 <a href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/195">#195</a>)</li>
<li>build(deps): bump peter-evans/create-issue-from-file from 4 to 5 <a href="https://github.com/dependabot"><code>@​dependabot</code></a> (<a href="https://redirect.github.com/github/issue-metrics/issues/193">#193</a>)</li>
</ul>
<p>See details of <a href="https://github.com/github/issue-metrics/compare/v2.14.2...v2.14.3">all code changes</a> since previous release</p>
<h2>v2.14.2</h2>

</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/github/issue-metrics/commit/e14baff5582145869503e312797bc49d69df9d01"><code>e14baff</code></a> Merge pull request <a href="https://redirect.github.com/github/issue-metrics/issues/223">#223</a> from github/v3-bumps</li>
<li><a href="https://github.com/github/issue-metrics/commit/b5aba8c1c166d9afc427a59a681b8d44ea705950"><code>b5aba8c</code></a> Merge branch 'main' into v3-bumps</li>
<li><a href="https://github.com/github/issue-metrics/commit/f407304d84a7b4584874c5a0c437292bca31cb70"><code>f407304</code></a> Merge pull request <a href="https://redirect.github.com/github/issue-metrics/issues/224">#224</a> from github/dependabot/pip/mypy-1.9.0</li>
<li><a href="https://github.com/github/issue-metrics/commit/af0a53a715d8eddc56bd44d288976ccb00808f07"><code>af0a53a</code></a> build(deps): bump mypy from 1.8.0 to 1.9.0</li>
<li><a href="https://github.com/github/issue-metrics/commit/587c6238ca40f5b051950f82f5dc7cb63f5c6377"><code>587c623</code></a> Merge pull request <a href="https://redirect.github.com/github/issue-metrics/issues/225">#225</a> from github/dependabot/pip/pytest-cov-5.0.0</li>
<li><a href="https://github.com/github/issue-metrics/commit/1220b749fe73a9d2e8fb9ea913a47e4a64b0ef3f"><code>1220b74</code></a> build(deps): bump pytest-cov from 4.1.0 to 5.0.0</li>
<li><a href="https://github.com/github/issue-metrics/commit/7f16de02e0e64e020fc1dad6e460f5f2b2d2bcc7"><code>7f16de0</code></a> Merge branch 'main' into v3-bumps</li>
<li><a href="https://github.com/github/issue-metrics/commit/ed01a22309ca09fb7b9360447aeede4f7905522d"><code>ed01a22</code></a> hotfix for codeql build</li>
<li><a href="https://github.com/github/issue-metrics/commit/a0261dfa7d020810468e4ad17bb7754d01972426"><code>a0261df</code></a> v3 bump</li>
<li><a href="https://github.com/github/issue-metrics/commit/f090ae3a28fdb77cfb6142d2799ef9fbf8e78d12"><code>f090ae3</code></a> v3 bump</li>
<li>Additional commits viewable in <a href="https://github.com/github/issue-metrics/compare/v2...v3">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github/issue-metrics&package-manager=github_actions&previous-version=2&new-version=3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>
Updates the L1 CloudFormation resource definitions with the latest changes from `@aws-cdk/aws-service-spec`

**L1 CloudFormation resource definition changes:**
```
├[~] service aws-appintegrations
│ └ resources
│    └[~] resource AWS::AppIntegrations::Application
│      ├  - documentation: Resource Type definition for AWS:AppIntegrations::Application
│      │  + documentation: Creates and persists an Application resource.
│      ├ properties
│      │  ├ ApplicationSourceConfig: (documentation changed)
│      │  ├ Description: (documentation changed)
│      │  └ Tags: (documentation changed)
│      └ types
│         ├[~] type ApplicationSourceConfig
│         │ ├  - documentation: Application source config
│         │ │  + documentation: The configuration for where the application should be loaded from.
│         │ └ properties
│         │    └ ExternalUrlConfig: (documentation changed)
│         └[~] type ExternalUrlConfig
│           ├  - documentation: undefined
│           │  + documentation: The external URL source for the application.
│           └ properties
│              ├ AccessUrl: (documentation changed)
│              └ ApprovedOrigins: (documentation changed)
├[~] service aws-applicationautoscaling
│ └ resources
│    └[~] resource AWS::ApplicationAutoScaling::ScalingPolicy
│      └ types
│         └[~] type TargetTrackingMetricStat
│           └  - documentation: This structure defines the CloudWatch metric to return, along with the statistic, period, and unit.
│              `TargetTrackingMetricStat` is a property of the [AWS::ApplicationAutoScaling::ScalingPolicy TargetTrackingMetricDataQuery](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricdataquery.html) property type.
│              For more information about the CloudWatch terminology below, see [Amazon CloudWatch concepts](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html) in the *Amazon CloudWatch User Guide* .
│              + documentation: This structure defines the CloudWatch metric to return, along with the statistic and unit.
│              `TargetTrackingMetricStat` is a property of the [AWS::ApplicationAutoScaling::ScalingPolicy TargetTrackingMetricDataQuery](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-applicationautoscaling-scalingpolicy-targettrackingmetricdataquery.html) property type.
│              For more information about the CloudWatch terminology below, see [Amazon CloudWatch concepts](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html) in the *Amazon CloudWatch User Guide* .
├[~] service aws-appmesh
│ └ resources
│    └[~] resource AWS::AppMesh::VirtualNode
│      └  - documentation: Creates a virtual node within a service mesh.
│         A virtual node acts as a logical pointer to a particular task group, such as an Amazon ECS service or a Kubernetes deployment. When you create a virtual node, you can specify the service discovery information for your task group, and whether the proxy running in a task group will communicate with other proxies using Transport Layer Security (TLS).
│         You define a `listener` for any inbound traffic that your virtual node expects. Any virtual service that your virtual node expects to communicate to is specified as a `backend` .
│         The response metadata for your new virtual node contains the `arn` that is associated with the virtual node. Set this value to the full ARN; for example, `arn:aws:appmesh:us-west-2:123456789012:myMesh/default/virtualNode/myApp` ) as the `APPMESH_RESOURCE_ARN` environment variable for your task group's Envoy proxy container in your task definition or pod spec. This is then mapped to the `node.id` and `node.cluster` Envoy parameters.
│         > By default, App Mesh uses the name of the resource you specified in `APPMESH_RESOURCE_ARN` when Envoy is referring to itself in metrics and traces. You can override this behavior by setting the `APPMESH_RESOURCE_CLUSTER` environment variable with your own name. 
│         For more information about virtual nodes, see [Virtual nodes](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html) . You must be using `1.15.0` or later of the Envoy image when setting these variables. For more information about App Mesh Envoy variables, see [Envoy image](https://docs.aws.amazon.com/app-mesh/latest/userguide/envoy.html) in the AWS App Mesh User Guide.
│         + documentation: Creates a virtual node within a service mesh.
│         A virtual node acts as a logical pointer to a particular task group, such as an Amazon ECS service or a Kubernetes deployment. When you create a virtual node, you can specify the service discovery information for your task group, and whether the proxy running in a task group will communicate with other proxies using Transport Layer Security (TLS).
│         You define a `listener` for any inbound traffic that your virtual node expects. Any virtual service that your virtual node expects to communicate to is specified as a `backend` .
│         The response metadata for your new virtual node contains the `arn` that is associated with the virtual node. Set this value to the full ARN; for example, `arn:aws:appmesh:us-west-2:123456789012:myMesh/default/virtualNode/myApp` ) as the `APPMESH_RESOURCE_ARN` environment variable for your task group's Envoy proxy container in your task definition or pod spec. This is then mapped to the `node.id` and `node.cluster` Envoy parameters.
│         > By default, App Mesh uses the name of the resource you specified in `APPMESH_RESOURCE_ARN` when Envoy is referring to itself in metrics and traces. You can override this behavior by setting the `APPMESH_RESOURCE_CLUSTER` environment variable with your own name. 
│         For more information about virtual nodes, see [Virtual nodes](https://docs.aws.amazon.com/app-mesh/latest/userguide/virtual_nodes.html) . You must be using `1.15.0` or later of the Envoy image when setting these variables. For more information aboutApp Mesh Envoy variables, see [Envoy image](https://docs.aws.amazon.com/app-mesh/latest/userguide/envoy.html) in the AWS App Mesh User Guide.
├[~] service aws-aps
│ └ resources
│    ├[~] resource AWS::APS::RuleGroupsNamespace
│    │ └  - documentation: The definition of a rule groups namespace in an Amazon Managed Service for Prometheus workspace. A rule groups namespace is associated with exactly one rules file. A workspace can have multiple rule groups namespaces. For more information about rules files, seee [Creating a rules file](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-ruler-rulesfile.html) , in the *Amazon Managed Service for Prometheus User Guide* .
│    │    + documentation: The definition of a rule groups namespace in an Amazon Managed Service for Prometheus workspace. A rule groups namespace is associated with exactly one rules file. A workspace can have multiple rule groups namespaces. For more information about rules files, see [Creating a rules file](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-ruler-rulesfile.html) , in the *Amazon Managed Service for Prometheus User Guide* .
│    └[+] resource AWS::APS::Scraper
│      ├  name: Scraper
│      │  cloudFormationType: AWS::APS::Scraper
│      │  documentation: Resource Type definition for AWS::APS::Scraper
│      │  tagInformation: {"tagPropertyName":"Tags","variant":"standard"}
│      ├ properties
│      │  ├Alias: string (immutable)
│      │  ├ScrapeConfiguration: ScrapeConfiguration (required, immutable)
│      │  ├Source: Source (required, immutable)
│      │  ├Destination: Destination (required, immutable)
│      │  └Tags: Array<tag>
│      ├ attributes
│      │  ├ScraperId: string
│      │  ├Arn: string
│      │  └RoleArn: string
│      └ types
│         ├type ScrapeConfiguration
│         │├  documentation: Scraper configuration
│         ││  name: ScrapeConfiguration
│         │└ properties
│         │   └ConfigurationBlob: string (required)
│         ├type Source
│         │├  documentation: Scraper metrics source
│         ││  name: Source
│         │└ properties
│         │   └EksConfiguration: EksConfiguration (required)
│         ├type EksConfiguration
│         │├  documentation: Configuration for EKS metrics source
│         ││  name: EksConfiguration
│         │└ properties
│         │   ├ClusterArn: string (required)
│         │   ├SecurityGroupIds: Array<string>
│         │   └SubnetIds: Array<string> (required)
│         ├type Destination
│         │├  documentation: Scraper metrics destination
│         ││  name: Destination
│         │└ properties
│         │   └AmpConfiguration: AmpConfiguration (required)
│         └type AmpConfiguration
│          ├  documentation: Configuration for Amazon Managed Prometheus metrics destination
│          │  name: AmpConfiguration
│          └ properties
│             └WorkspaceArn: string (required)
├[~] service aws-cleanrooms
│ └ resources
│    └[~] resource AWS::CleanRooms::ConfiguredTable
│      └ types
│         ├[~] type AnalysisRuleCustom
│         │ └ properties
│         │    └[+] DifferentialPrivacy: DifferentialPrivacy
│         ├[+] type DifferentialPrivacy
│         │ ├  name: DifferentialPrivacy
│         │ └ properties
│         │    └Columns: Array<DifferentialPrivacyColumn> (required)
│         └[+] type DifferentialPrivacyColumn
│           ├  documentation: Specifies the name of the column that contains the unique identifier of your users, whose privacy you want to protect.
│           │  name: DifferentialPrivacyColumn
│           └ properties
│              └Name: string (required)
├[~] service aws-codebuild
│ └ resources
│    ├[~] resource AWS::CodeBuild::Project
│    │ └ types
│    │    ├[~] type ProjectSourceVersion
│    │    │ └ properties
│    │    │    └ SourceVersion: (documentation changed)
│    │    └[~] type Source
│    │      └ properties
│    │         ├ Location: (documentation changed)
│    │         └ Type: (documentation changed)
│    └[~] resource AWS::CodeBuild::SourceCredential
│      └ properties
│         ├ AuthType: (documentation changed)
│         └ ServerType: (documentation changed)
├[~] service aws-codestarconnections
│ └ resources
│    └[~] resource AWS::CodeStarConnections::SyncConfiguration
│      └ properties
│         ├[+] PublishDeploymentStatus: string
│         └[+] TriggerResourceUpdateOn: string
├[~] service aws-connect
│ └ resources
│    └[~] resource AWS::Connect::PredefinedAttribute
│      └ attributes
│         ├[+] LastModifiedRegion: string
│         └[+] LastModifiedTime: number
├[~] service aws-dms
│ └ resources
│    └[~] resource AWS::DMS::Endpoint
│      └ types
│         └[~] type PostgreSqlSettings
│           └ properties
│              ├ CaptureDdls: (documentation changed)
│              ├ DdlArtifactsSchema: (documentation changed)
│              ├ FailTasksOnLobTruncation: (documentation changed)
│              ├ HeartbeatEnable: (documentation changed)
│              ├ HeartbeatFrequency: (documentation changed)
│              ├ HeartbeatSchema: (documentation changed)
│              ├ MapBooleanAsBoolean: (documentation changed)
│              ├ MaxFileSize: (documentation changed)
│              └ PluginName: (documentation changed)
├[~] service aws-docdbelastic
│ └ resources
│    └[~] resource AWS::DocDBElastic::Cluster
│      └ properties
│         ├ BackupRetentionPeriod: (documentation changed)
│         ├ PreferredBackupWindow: (documentation changed)
│         └ ShardInstanceCount: (documentation changed)
├[~] service aws-ec2
│ └ resources
│    ├[~] resource AWS::EC2::Subnet
│    │ └ properties
│    │    └[+] EnableLniAtDeviceIndex: integer
│    └[~] resource AWS::EC2::TransitGatewayRouteTableAssociation
├[~] service aws-ecs
│ └ resources
│    └[~] resource AWS::ECS::TaskSet
│      └  - documentation: Create a task set in the specified cluster and service. This is used when a service uses the `EXTERNAL` deployment controller type. For more information, see [Amazon ECS deployment types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html) in the *Amazon Elastic Container Service Developer Guide* .
│         For information about the maximum number of task sets and otther quotas, see [Amazon ECS service quotas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-quotas.html) in the *Amazon Elastic Container Service Developer Guide* .
│         + documentation: Create a task set in the specified cluster and service. This is used when a service uses the `EXTERNAL` deployment controller type. For more information, see [Amazon ECS deployment types](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html) in the *Amazon Elastic Container Service Developer Guide* .
│         > On March 21, 2024, a change was made to resolve the task definition revision before authorization. When a task definition revision is not specified, authorization will occur using the latest revision of a task definition. 
│         For information about the maximum number of task sets and otther quotas, see [Amazon ECS service quotas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-quotas.html) in the *Amazon Elastic Container Service Developer Guide* .
├[~] service aws-entityresolution
│ └ resources
│    └[~] resource AWS::EntityResolution::MatchingWorkflow
│      └ types
│         └[~] type ResolutionTechniques
│           └ properties
│              └ ResolutionType: (documentation changed)
├[~] service aws-globalaccelerator
│ └ resources
│    └[~] resource AWS::GlobalAccelerator::EndpointGroup
│      └ types
│         └[~] type EndpointConfiguration
│           └ properties
│              └ AttachmentArn: (documentation changed)
├[~] service aws-glue
│ └ resources
│    └[~] resource AWS::Glue::Crawler
│      ├ properties
│      │  └ LakeFormationConfiguration: (documentation changed)
│      └ types
│         └[~] type LakeFormationConfiguration
│           ├  - documentation: undefined
│           │  + documentation: Specifies AWS Lake Formation configuration settings for the crawler.
│           └ properties
│              ├ AccountId: (documentation changed)
│              └ UseLakeFormationCredentials: (documentation changed)
├[~] service aws-iotsitewise
│ └ resources
│    └[~] resource AWS::IoTSiteWise::AssetModel
│      └ types
│         ├[~] type AssetModelCompositeModel
│         │ └ properties
│         │    ├ Description: (documentation changed)
│         │    ├ ExternalId: (documentation changed)
│         │    ├ ParentAssetModelCompositeModelExternalId: (documentation changed)
│         │    └ Path: (documentation changed)
│         ├[~] type AssetModelHierarchy
│         │ └ properties
│         │    ├ ExternalId: (documentation changed)
│         │    └ LogicalId: (documentation changed)
│         └[~] type AssetModelProperty
│           └ properties
│              ├ ExternalId: (documentation changed)
│              └ LogicalId: (documentation changed)
├[~] service aws-kafkaconnect
│ └ resources
│    ├[~] resource AWS::KafkaConnect::CustomPlugin
│    │ ├  - documentation: An example resource schema demonstrating some basic constructs and validation rules.
│    │ │  + documentation: Creates a custom plugin using the specified properties.
│    │ ├ properties
│    │ │  ├ ContentType: (documentation changed)
│    │ │  ├ Description: (documentation changed)
│    │ │  └ Location: (documentation changed)
│    │ ├ attributes
│    │ │  └ CustomPluginArn: (documentation changed)
│    │ └ types
│    │    ├[~] type CustomPluginFileDescription
│    │    │ └  - documentation: Details about the custom plugin file.
│    │    │    + documentation: Details about a custom plugin file.
│    │    └[~] type S3Location
│    │      └  - documentation: The S3 bucket Amazon Resource Name (ARN), file key, and object version of the plugin file stored in Amazon S3.
│    │         + documentation: The location of an object in Amazon S3.
│    └[~] resource AWS::KafkaConnect::WorkerConfiguration
│      ├  - documentation: The configuration of the workers, which are the processes that run the connector logic.
│      │  + documentation: Creates a worker configuration using the specified properties.
│      ├ properties
│      │  ├ Description: (documentation changed)
│      │  └ PropertiesFileContent: (documentation changed)
│      └ attributes
│         ├ Revision: (documentation changed)
│         └ WorkerConfigurationArn: (documentation changed)
├[~] service aws-kendra
│ └ resources
│    └[~] resource AWS::Kendra::DataSource
│      └ types
│         ├[~] type ConnectionConfiguration
│         │ └ properties
│         │    └ SecretArn: (documentation changed)
│         ├[~] type CustomDocumentEnrichmentConfiguration
│         │ └ properties
│         │    └ RoleArn: (documentation changed)
│         ├[~] type HookConfiguration
│         │ └ properties
│         │    └ LambdaArn: (documentation changed)
│         ├[~] type OneDriveUsers
│         │ └ properties
│         │    └ OneDriveUserList: (documentation changed)
│         ├[~] type ProxyConfiguration
│         │ └ properties
│         │    └ Credentials: (documentation changed)
│         └[~] type WebCrawlerBasicAuthentication
│           └ properties
│              └ Credentials: (documentation changed)
├[~] service aws-kinesisfirehose
│ └ resources
│    └[~] resource AWS::KinesisFirehose::DeliveryStream
│      ├ properties
│      │  └ Tags: (documentation changed)
│      └ types
│         └[~] type ParquetSerDe
│           └  - documentation: A serializer to use for converting data to the Parquet format before storing it in Amazon S3. For more information, see [Apache Parquet](https://docs.aws.amazon.com/https://parquet.apache.org/documentation/latest/) .
│              + documentation: A serializer to use for converting data to the Parquet format before storing it in Amazon S3. For more information, see [Apache Parquet](https://docs.aws.amazon.com/https://parquet.apache.org/docs/) .
├[~] service aws-managedblockchain
│ └ resources
│    └[~] resource AWS::ManagedBlockchain::Node
│      └ properties
│         └ NetworkId: (documentation changed)
├[~] service aws-oam
│ └ resources
│    └[~] resource AWS::Oam::Link
│      └ properties
│         └ ResourceTypes: (documentation changed)
├[~] service aws-rds
│ └ resources
│    ├[~] resource AWS::RDS::DBCluster
│    │ ├ properties
│    │ │  ├ ScalingConfiguration: (documentation changed)
│    │ │  └ ServerlessV2ScalingConfiguration: (documentation changed)
│    │ └ types
│    │    ├[~] type ScalingConfiguration
│    │    │ └  - documentation: The `ScalingConfiguration` property type specifies the scaling configuration of an Aurora Serverless DB cluster.
│    │    │    For more information, see [Using Amazon Aurora Serverless](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html) in the *Amazon Aurora User Guide* .
│    │    │    This property is only supported for Aurora Serverless v1. For Aurora Serverless v2, Use the `ServerlessV2ScalingConfiguration` property.
│    │    │    Valid for: Aurora DB clusters only
│    │    │    + documentation: The `ScalingConfiguration` property type specifies the scaling configuration of an Aurora Serverless v1 DB cluster.
│    │    │    For more information, see [Using Amazon Aurora Serverless](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless.html) in the *Amazon Aurora User Guide* .
│    │    │    This property is only supported for Aurora Serverless v1. For Aurora Serverless v2, Use the `ServerlessV2ScalingConfiguration` property.
│    │    │    Valid for: Aurora Serverless v1 DB clusters only
│    │    └[~] type ServerlessV2ScalingConfiguration
│    │      └  - documentation: The `ServerlessV2ScalingConfiguration` property type specifies the scaling configuration of an Aurora Serverless V2 DB cluster.
│    │         For more information, see [Using Amazon Aurora Serverless v2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html) in the *Amazon Aurora User Guide* .
│    │         If you have an Aurora cluster, you must set the `ScalingConfigurationInfo` attribute before you add a DB instance that uses the `db.serverless` DB instance class. For more information, see [Clusters that use Aurora Serverless v2 must have a capacity range specified](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.requirements.html#aurora-serverless-v2.requirements.capacity-range) in the *Amazon Aurora User Guide* .
│    │         This property is only supported for Aurora Serverless v2. For Aurora Serverless v1, Use the `ScalingConfiguration` property.
│    │         + documentation: The `ServerlessV2ScalingConfiguration` property type specifies the scaling configuration of an Aurora Serverless V2 DB cluster.
│    │         For more information, see [Using Amazon Aurora Serverless v2](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.html) in the *Amazon Aurora User Guide* .
│    │         If you have an Aurora cluster, you must set the `ScalingConfigurationInfo` attribute before you add a DB instance that uses the `db.serverless` DB instance class. For more information, see [Clusters that use Aurora Serverless v2 must have a capacity range specified](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-serverless-v2.requirements.html#aurora-serverless-v2.requirements.capacity-range) in the *Amazon Aurora User Guide* .
│    │         This property is only supported for Aurora Serverless v2. For Aurora Serverless v1, use the `ScalingConfiguration` property.
│    │         Valid for: Aurora Serverless v2 DB clusters
│    └[~] resource AWS::RDS::Integration
│      └ properties
│         ├[+] DataFilter: string
│         ├[+] Description: string
│         └ IntegrationName: - string (immutable)
│                            + string
├[~] service aws-securityhub
│ └ resources
│    └[~] resource AWS::SecurityHub::AutomationRule
│      └ types
│         ├[~] type AutomationRulesFindingFilters
│         │ └ properties
│         │    ├ CreatedAt: (documentation changed)
│         │    ├ FirstObservedAt: (documentation changed)
│         │    ├ LastObservedAt: (documentation changed)
│         │    ├ NoteUpdatedAt: (documentation changed)
│         │    └ UpdatedAt: (documentation changed)
│         └[~] type DateFilter
│           └ properties
│              ├ End: (documentation changed)
│              └ Start: (documentation changed)
└[+] service aws-securitylake
  ├  capitalized: SecurityLake
  │  cloudFormationNamespace: AWS::SecurityLake
  │  name: aws-securitylake
  │  shortName: securitylake
  └ resources
     └resource AWS::SecurityLake::DataLake
      ├  name: DataLake
      │  cloudFormationType: AWS::SecurityLake::DataLake
      │  documentation: Resource Type definition for AWS::SecurityLake::DataLake
      │  tagInformation: {"tagPropertyName":"Tags","variant":"standard"}
      ├ properties
      │  ├EncryptionConfiguration: EncryptionConfiguration
      │  ├LifecycleConfiguration: LifecycleConfiguration
      │  ├ReplicationConfiguration: ReplicationConfiguration
      │  ├MetaStoreManagerRoleArn: string (immutable)
      │  └Tags: Array<tag>
      ├ attributes
      │  ├Arn: string
      │  └S3BucketArn: string
      └ types
         ├type EncryptionConfiguration
         │├  documentation: Provides encryption details of Amazon Security Lake object.
         ││  name: EncryptionConfiguration
         │└ properties
         │   └KmsKeyId: string
         ├type LifecycleConfiguration
         │├  documentation: Provides lifecycle details of Amazon Security Lake object.
         ││  name: LifecycleConfiguration
         │└ properties
         │   ├Expiration: Expiration
         │   └Transitions: Array<Transitions>
         ├type Expiration
         │├  documentation: Provides data expiration details of Amazon Security Lake object.
         ││  name: Expiration
         │└ properties
         │   └Days: integer
         ├type Transitions
         │├  name: Transitions
         │└ properties
         │   ├Days: integer
         │   └StorageClass: string
         └type ReplicationConfiguration
          ├  documentation: Provides replication details of Amazon Security Lake object.
          │  name: ReplicationConfiguration
          └ properties
             ├Regions: Array<string>
             └RoleArn: string
```
### Issue # (if applicable)

Closes #29663

### Reason for this change

kms key created within integ test remains after integ test.

### Description of changes

Added "pendingWindow" and "removalPolicy" to kms resource.



```ts
    const key = new Key(this, 'CustomKey', {
      pendingWindow: Duration.days(7),
      removalPolicy: RemovalPolicy.DESTROY,
    });
```

### Description of how you validated changes

I confirmed with integ test that it works as expected.

### Checklist
- [ ] My code adheres to the [CONTRIBUTING GUIDE](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md) and [DESIGN GUIDELINES](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md)

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Adds `ruby 3.3` to the available [Lambda Runtimes constants](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_lambda.Runtime.html#initializer)

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
### Issue #29637

Closes #29637

### Reason for this change
Allow setting the enableExecuteCommand for ECSRunTask in sfn

### Description of changes
Add the enableExecuteCommand property to the EcsRunTaskProps, to start the task from step functions with execution command enabled.

### Description of how you validated changes
Unit-test added. Existing ones passed.

### Checklist
- [x] My code adheres to the [CONTRIBUTING GUIDE](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md) and [DESIGN GUIDELINES](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md)

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
### Issue # (if applicable)

Closes #27504 

### Reason for this change

The current validation of `repoString` in constructor of `CodeStarConnectionSource` does not support nested repository that can appear in GitLab.

### Description of changes

The validation is fixed to accept nested repository.

### Description of how you validated changes

I added unit tests and confirmed all tests passed.

### Checklist
- [X] My code adheres to the [CONTRIBUTING GUIDE](https://github.com/aws/aws-cdk/blob/main/CONTRIBUTING.md) and [DESIGN GUIDELINES](https://github.com/aws/aws-cdk/blob/main/docs/DESIGN_GUIDELINES.md)

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
Some customers have typo'd `--no-changeset` where `--no-change-set` was expected. Make these two aliases of each other since they're easy to mix up, and this flag being valid changes the permissions used by diff, which will cause errors in certain environments. 

tested manually.

----

*By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license*
@kishiel
Copy link
Owner Author

kishiel commented Apr 2, 2024

There are about 10 snapshot tests which are failing that I'm unable to resolve on my own and I could use some help in running them. I believe that a few of them are because I'm using an internal AWS account so hopefully they just need to be run from someone's not-quite-so-special account.

@kishiel
Copy link
Owner Author

kishiel commented Apr 2, 2024

Oh, I definitely did something wrong on opening this PR I have no idea what though, changing to a draft.

@kishiel kishiel marked this pull request as draft April 2, 2024 20:31
@kishiel
Copy link
Owner Author

kishiel commented Apr 2, 2024

Opened this backwards. Closing.

@kishiel kishiel closed this Apr 2, 2024
@kishiel
Copy link
Owner Author

kishiel commented Apr 2, 2024

Actual PR: aws#29698

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants