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(efs): allow to specify az for one-zone #30010

Merged
merged 7 commits into from
May 1, 2024
Merged

feat(efs): allow to specify az for one-zone #30010

merged 7 commits into from
May 1, 2024

Conversation

pahud
Copy link
Contributor

@pahud pahud commented Apr 30, 2024

Issue # (if applicable)

This PR allows users to specify AZ for the one-zone filesystems through the vpcSubnets.availabilityZones. Before this PR, vpcSubnets is not allowed when oneZone is enabled, this PR removes the restriction and takes the following use cases into considerations:

  • create a regional EFS file system with a mount target for each AZ
  • create a one-zone EFS file system with mount target at the auto-selected AZ
  • create a one-zone EFS file system at specified AZ with a single mount target at that AZ
  • create a regional EFS file system with a single mount target at the specified AZ

Closes #30005

Reason for this change

Description of changes

Description of how you validated changes

  1. Add additional unit tests.
  2. I have deployed the code below and validated from my AWS console.
// create a regional EFS file system with a mount target for each AZ
new FileSystem(stack, 'FileSystem1', {
  vpc,
});

// create a one-zone EFS file system with mount target at the auto-selected AZ
new FileSystem(stack, 'FileSystem2', {
  vpc,
  oneZone: true,
});

// create a one-zone EFS file system at specified AZ with a single mount target at that AZ
new FileSystem(stack, 'FileSystem3', {
  vpc,
  oneZone: true,
  vpcSubnets: {
    availabilityZones: [vpc.availabilityZones[1]],
  },
});

// create a regional EFS file system with a single mount target at the specified AZ
new FileSystem(stack, 'FileSystem4', {
  vpc,
  vpcSubnets: {
    availabilityZones: [vpc.availabilityZones[2]],
  },
});

Checklist


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

@aws-cdk-automation aws-cdk-automation requested a review from a team April 30, 2024 01:35
@github-actions github-actions bot added effort/medium Medium work item – several days of effort feature-request A feature should be added or improved. p2 labels Apr 30, 2024
@mergify mergify bot added the contribution/core This is a PR that came from AWS. label Apr 30, 2024
@pahud pahud marked this pull request as ready for review April 30, 2024 02:05
@aws-cdk-automation aws-cdk-automation added the pr/needs-maintainer-review This PR needs a review from a Core Team Member label Apr 30, 2024
// if props.vpcSubnets.availabilityZones is defined, select the first one as the zone otherwise
// the first AZ of the VPC.
const oneZoneAzName = props.vpcSubnets?.availabilityZones ?
props.vpcSubnets.availabilityZones[0] : props.vpc.availabilityZones[0];
Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe add a check for

props.vpc.availabilityZones.includes(props.vpcSubnets.availabilityZones[0])

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Nice catch! I'll add it in. Thanks.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

OK this is a little tricky because vpc.availabilityZones could be dummy values if the context was not generated by the context provider. Let's only check that when we are confident they are neither dummy values nor unresolved tokens.

Copy link
Contributor

Choose a reason for hiding this comment

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

Yeah good call, I only saw the unresolved tokens coming

Copy link
Contributor

@GavinZZ GavinZZ left a comment

Choose a reason for hiding this comment

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

Nice, thanks!

Copy link
Contributor

mergify bot commented May 1, 2024

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).

@aws-cdk-automation aws-cdk-automation removed the pr/needs-maintainer-review This PR needs a review from a Core Team Member label May 1, 2024
@aws-cdk-automation
Copy link
Collaborator

AWS CodeBuild CI Report

  • CodeBuild project: AutoBuildv2Project1C6BFA3F-wQm2hXv2jqQv
  • Commit ID: f082a5f
  • Result: SUCCEEDED
  • Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

@mergify mergify bot merged commit cbf130e into aws:main May 1, 2024
12 checks passed
Copy link
Contributor

mergify bot commented May 1, 2024

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).

@aws-cdk-automation
Copy link
Collaborator

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.

@aws aws locked as resolved and limited conversation to collaborators Jul 25, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
contribution/core This is a PR that came from AWS. effort/medium Medium work item – several days of effort feature-request A feature should be added or improved. p2
Projects
None yet
Development

Successfully merging this pull request may close these issues.

EFS: support setting the AZ when setting up a oneZone FileSystem
4 participants