Skip to content

Conversation

@drduhe
Copy link
Contributor

@drduhe drduhe commented Jan 30, 2025

Issue 33229

closes #33229

Reason for this change

The BucketDeployment construct in AWS CDK allows deploying assets to S3 buckets, often requiring a Lambda function to perform the deployment. Currently, users can specify a custom VPC via BucketDeploymentProps, ensuring the deployment happens within a restricted network.

However, many organizations require more granular network security control. While specifying a VPC is helpful, allowing custom security groups would enable teams to define specific ingress/egress rules, meeting stricter compliance and security requirements.

Description of changes

  • Updated BucketDeploymentProps to include an optional securityGroups?: ec2.ISecurityGroup[] property.
  • Modified BucketDeployment constructor to pass securityGroups to the Lambda function.
  • Ensured backward compatibility by keeping securityGroups optional.
  • Updated README to include guidance on setting vpc, vpcSubnets, and securityGroups parameters.
  • Testing has been implemented at a unit test and integration test level for all new logic..
  • Improved unit testing patterns through all other unit tests in this module.

Describe any new or updated permissions being added

N/A

Description of how you validated changes

Added unit tests to the relevant code modules to cover feature usage.

Checklist


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

@github-actions github-actions bot added beginning-contributor [Pilot] contributed between 0-2 PRs to the CDK feature-request A feature should be added or improved. p2 labels Jan 30, 2025
@aws-cdk-automation aws-cdk-automation requested a review from a team January 30, 2025 05:51
Copy link
Collaborator

@aws-cdk-automation aws-cdk-automation left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(This review is outdated)

@drduhe drduhe requested a review from a team as a code owner January 30, 2025 06:42
@drduhe drduhe force-pushed the issue/33229 branch 2 times, most recently from e9003c1 to ba8b378 Compare January 30, 2025 07:16
@drduhe
Copy link
Contributor Author

drduhe commented Jan 30, 2025

This now has integration tests and documentation for the new feature and the missing tests/documentation for the related VPC feature previously implemented.

@aws-cdk-automation aws-cdk-automation added pr-linter/exemption-requested The contributor has requested an exemption to the PR Linter feedback. pr/needs-community-review This PR needs a review from a Trusted Community Member or Core Team Member. labels Jan 30, 2025
@drduhe drduhe force-pushed the issue/33229 branch 6 times, most recently from 8da326c to a2a7583 Compare January 30, 2025 23:19
@github-actions github-actions bot added the effort/medium Medium work item – several days of effort label Jan 30, 2025
@drduhe drduhe force-pushed the issue/33229 branch 2 times, most recently from 33c979d to 71b57fa Compare January 30, 2025 23:46
@drduhe
Copy link
Contributor Author

drduhe commented Feb 3, 2025

Any traction on getting this one looked at reviewed? I can't see the build logs as to why it is failing.

@codecov
Copy link

codecov bot commented Feb 4, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 80.84%. Comparing base (fd9462c) to head (e70acf6).
Report is 26 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main   #33233   +/-   ##
=======================================
  Coverage   80.84%   80.84%           
=======================================
  Files         236      236           
  Lines       14230    14230           
  Branches     2487     2487           
=======================================
  Hits        11504    11504           
  Misses       2442     2442           
  Partials      284      284           
Flag Coverage Δ
suite.unit 80.84% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
packages/aws-cdk 79.64% <ø> (ø)
packages/aws-cdk-lib/core 82.14% <ø> (ø)

@pahud
Copy link
Contributor

pahud commented Feb 5, 2025

Any traction on getting this one looked at reviewed? I can't see the build logs as to why it is failing.

The CI is still failing. Looks like this is the start of the failing point

aws-cdk-lib: FAIL aws-s3-deployment/test/bucket-deployment.test.ts (20.454 s)
aws-cdk-lib:   â—� different security groups create different Lambdas and single CLI
aws-cdk-lib:     Cannot find asset at /codebuild/output/src1875233622/src/github.com/aws/aws-cdk/packages/aws-cdk-lib/aws-s3-deployment/test/my-website-2
aws-cdk-lib:       173 |
aws-cdk-lib:       174 |     if (!fs.existsSync(this.sourcePath)) {
aws-cdk-lib:     > 175 |       throw new Error(`Cannot find asset at ${this.sourcePath}`);
aws-cdk-lib:           |             ^
aws-cdk-lib:       176 |     }
aws-cdk-lib:       177 |
aws-cdk-lib:       178 |     this.sourceStats = fs.statSync(this.sourcePath);
aws-cdk-lib:       at new AssetStaging (core/lib/asset-staging.ts:175:13)
aws-cdk-lib:       at new Asset (aws-s3-assets/lib/asset.ts:153:21)
aws-cdk-lib:       at Object.bind (aws-s3-deployment/lib/source.ts:132:23)
aws-cdk-lib:       at bind (aws-s3-deployment/lib/bucket-deployment.ts:395:66)
aws-cdk-lib:           at Array.map (<anonymous>)
aws-cdk-lib:       at new map (aws-s3-deployment/lib/bucket-deployment.ts:395:34)
aws-cdk-lib:       at Object.<anonymous> (aws-s3-deployment/test/bucket-deployment.test.ts:1175:3)

Copy link
Contributor

@aaythapa aaythapa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the PR! The integration tests for this construct is included in this this dir. Could you add integ tests with assertions there? For more info about integ tests you can use this doc

@aaythapa aaythapa added pr-linter/no-exemption The requested exemption will not be granted to the PR linter result and removed pr-linter/exemption-requested The contributor has requested an exemption to the PR Linter feedback. labels Feb 7, 2025
@Abogical
Copy link
Member

@drduhe Yes, you can make them run sequentially by using the --parallel-regions option. You can use --parallel-regions us-east-1 which will only use us-east-1 region to deploy, effectively making the process sequential.

@drduhe
Copy link
Contributor Author

drduhe commented Oct 31, 2025

@drduhe Yes, you can make them run sequentially by using the --parallel-regions option. You can use --parallel-regions us-east-1 which will only use us-east-1 region to deploy, effectively making the process sequential.

But this will just make it run sequentially in my local dev deployment right? How would we enforce they get run sequentially as part of the production build that happens in the Github pipeline?

@Abogical
Copy link
Member

Abogical commented Oct 31, 2025

@drduhe The Github pipeline currently only checks that the snapshots are matching. It doesn't currently deploy the snapshots automatically.

@drduhe
Copy link
Contributor Author

drduhe commented Oct 31, 2025

Ack - running sequentially now

@drduhe drduhe force-pushed the issue/33229 branch 2 times, most recently from 9f553ef to cffe5c7 Compare November 4, 2025 03:27
@drduhe
Copy link
Contributor Author

drduhe commented Nov 4, 2025

Ok, sorry for the delay but it took like 8+ hours to run all the tests sequentially but they all this passed when I ran it them this final time - I cleaned up the other integration tests the grouping as well with this PR. See results below from my final deployment / tests this evening:

(base) 5ce91e835887:framework-integ drduhe$ yarn integ --directory test/aws-s3-deployment/test --update-on-failed --parallel-regions us-east-1
yarn run v1.22.22
(node:4686) [DEP0169] DeprecationWarning: `url.parse()` behavior is not standardized and prone to errors that have security implications. Use the WHATWG URL API instead. CVEs are not issued for `url.parse()` vulnerabilities.
(Use `node --trace-deprecation ...` to show where the warning was created)
$ integ-runner --unstable=toolkit-lib-engine --language javascript --directory test/aws-s3-deployment/test --update-on-failed --parallel-regions us-east-1

Verifying integration test snapshots...

  UNCHANGED  integ.bucket-deployment-signcontent 4.005s
  UNCHANGED  integ.bucket-deployment-loggroup 4.13s
  UNCHANGED  integ.bucket-deployment-cloudfront 4.25s
  UNCHANGED  integ.bucket-deployment-substitution-with-role 4.301s
  UNCHANGED  integ.bucket-deployment-cross-nested-stack-source 4.318s
  UNCHANGED  integ.bucket-deployment-substitution-with-destination-key 4.375s
  UNCHANGED  integ.bucket-deployment-deployed-bucket 4.396s
  UNCHANGED  integ.bucket-deployment-security-groups-single 4.617s
  UNCHANGED  integ.bucket-deployment-cross-stack-source 5.016s
  UNCHANGED  integ.bucket-deployment-security-groups-empty 5.234s
  UNCHANGED  integ.bucket-deployment-security-groups-efs 5.363s
  UNCHANGED  integ.bucket-deployment-cross-stack-ssm-source 5.28s
  UNCHANGED  integ.bucket-deployment-security-groups-multiple 5.45s
  UNCHANGED  integ.bucket-deployment-data 5.942s
  UNCHANGED  integ.bucket-deployment-large-file 6.444s
  UNCHANGED  integ.bucket-deployment-substitution 3.526s
  UNCHANGED  integ.bucket-deployment-vpc-config 3.798s
  UNCHANGED  integ.bucket-deployment-vpc-custom-subnets 3.775s
  UNCHANGED  integ.bucket-deployment-vpc-basic 4.041s
  UNCHANGED  integ.bucket-deployment-vpc-subnet-selection 3.56s
  UNCHANGED  integ.bucket-deployment-vpc-security-groups 3.692s
  UNCHANGED  integ.bucket-deployment-vpc-efs 4.104s
  UNCHANGED  integ.bucket-deployment 4.457s
  UNCHANGED  integ.bucket-deployment-big-response 9.301s

Snapshot Results: 

Tests:    24 passed, 24 total

Running integration tests for failed tests...

Running in parallel across regions: us-east-1

Test Results: 

Tests:    0 passed, 0 total
✨  Done in 10.82s.

Copy link
Member

@Abogical Abogical left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thanks!

@mergify mergify bot dismissed Abogical’s stale review November 4, 2025 13:37

Pull request has been modified.

@drduhe
Copy link
Contributor Author

drduhe commented Nov 4, 2025

Fixed Rosetta README.md errors. Not sure why the request-cli-integ-test / cli-changes (pull_request_target)](https://github.com/aws/aws-cdk/actions/runs/19072300010/job/54478171302?pr=33233) is failing now.

@drduhe
Copy link
Contributor Author

drduhe commented Nov 4, 2025

Lemme know if I need to do anything specific - happy to work this down today so it doesn't lose traction again.

@Abogical
Copy link
Member

Abogical commented Nov 4, 2025

request-cli-integ-test is not a required workflow to pass atm.

Appreciate your efforts on this @drduhe , I want to see this PR done as well. 😅

@Abogical
Copy link
Member

Abogical commented Nov 4, 2025

@drduhe Please don't force push commits. Its hard to see what changes you made since last review when you do this.

@drduhe
Copy link
Contributor Author

drduhe commented Nov 4, 2025

@drduhe Please don't force push commits. Its hard to see what changes you made since last review when you do this.

@Abogical - Ah, I won't do this moving forward, I realize now you support squashing on the merge and I should have left my changes as atomic commits. Pushing another commit now targeting the remaining failures in the README.md reported by Rosetta.


Update: It seems to be passing the Rosetta linting workflow now.

@mergify
Copy link
Contributor

mergify bot commented Nov 5, 2025

Thank you for contributing! Your pull request will be updated from main and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork).

@mergify
Copy link
Contributor

mergify bot commented Nov 5, 2025

This pull request has been removed from the queue for the following reason: pull request branch update failed.

The pull request can't be updated

For security reasons, Mergify can't update this pull request. Try updating locally.
GitHub response: refusing to allow a GitHub App to create or update workflow .github/workflows/codecov-upload.yml without workflows permission.

You should update or rebase your pull request manually. If you do, this pull request will automatically be requeued once the queue conditions match again.
If you think this was a flaky issue, you can requeue the pull request, without updating it, by posting a @mergifyio requeue comment.

@mergify
Copy link
Contributor

mergify bot commented Nov 5, 2025

Thank you for contributing! Your pull request will be updated from main and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork).

@mergify mergify bot merged commit f2a3166 into aws:main Nov 5, 2025
20 of 21 checks passed
@github-actions
Copy link
Contributor

github-actions bot commented Nov 5, 2025

Comments on closed issues and PRs are hard for our team to see.
If you need help, please open a new issue that references this one.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Nov 5, 2025
@drduhe drduhe deleted the issue/33229 branch November 5, 2025 16:45
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

beginning-contributor [Pilot] contributed between 0-2 PRs to the CDK effort/medium Medium work item – several days of effort feature-request A feature should be added or improved. p2 pr/needs-community-review This PR needs a review from a Trusted Community Member or Core Team Member. pr-linter/no-exemption The requested exemption will not be granted to the PR linter result

Projects

None yet

Development

Successfully merging this pull request may close these issues.

(s3-deployment): Add securityGroups to BucketDeploymentProps

6 participants