feat(ec2): support NAT instances, AMI lookups#4898
Conversation
Add support for NAT instances (as opposed to NAT gateways) on VPCs. This change introduces the concept of a 'NAT provider', and provides two implementations out of the box: one for gateways, one for instances. Instances are not guarded against termination; a future implementation should use ASGs to make sure there are always instances running. To make it easier to pick the right AMI for the NAT instance, add an AMI context provider, which will look up AMIs available to the user. Fixes #4876.
|
Thanks so much for taking the time to contribute to the AWS CDK ❤️ We will shortly assign someone to review this pull request and help get it
|
|
I explicitly pushed out the CX API protocol bump a couple of versions. I don't expect to merge this before the next release (maybe the one after that). |
AWS CodeBuild CI Report
Powered by github-codebuild-logs, available on the AWS Serverless Application Repository |
AWS CodeBuild CI Report
Powered by github-codebuild-logs, available on the AWS Serverless Application Repository |
AWS CodeBuild CI Report
Powered by github-codebuild-logs, available on the AWS Serverless Application Repository |
AWS CodeBuild CI Report
Powered by github-codebuild-logs, available on the AWS Serverless Application Repository |
eladb
left a comment
There was a problem hiding this comment.
Wow! When did you do this??
| * If you have a specific AMI ID you want to use, pass a `GenericLinuxImage`. For example: | ||
| * | ||
| * ```ts | ||
| * NatProvider.instance({ |
There was a problem hiding this comment.
Yeeahhhh... not a big fan of @example. But I suppose I could.
| /** | ||
| * Instance type of the NAT instance | ||
| */ | ||
| readonly instanceType: InstanceType; |
There was a problem hiding this comment.
Let's make it optional and pick a sensible default, no?
packages/@aws-cdk/aws-ec2/lib/vpc.ts
Outdated
| * Select between NAT gateways or NAT instances. NAT gateways | ||
| * may not be available in all AWS regions. | ||
| * | ||
| * @default - NatProvider.gateway() |
There was a problem hiding this comment.
If you have a concrete value (NatProvider.gateway()) you should use it instead of -, no?
| } | ||
|
|
||
| if (manifest.version === '1.16.0') { | ||
| // Added AMI context provider |
There was a problem hiding this comment.
a note why it is "safe" to upgrade
AWS CodeBuild CI Report
Powered by github-codebuild-logs, available on the AWS Serverless Application Repository |
| * evict the value from the cache using the `cdk context` command. See | ||
| * https://docs.aws.amazon.com/cdk/latest/guide/context.html for more information. | ||
| */ | ||
| export class LookupMachineImage implements IMachineImage { |
There was a problem hiding this comment.
I believe we need to get this documented under the 'Context Methods' section in here
AWS CodeBuild CI Report
Powered by github-codebuild-logs, available on the AWS Serverless Application Repository |
AWS CodeBuild CI Report
Powered by github-codebuild-logs, available on the AWS Serverless Application Repository |
AWS CodeBuild CI Report
Powered by github-codebuild-logs, available on the AWS Serverless Application Repository |
Add support for NAT instances (as opposed to NAT gateways) on VPCs. This
change introduces the concept of a 'NAT provider', and provides two
implementations out of the box: one for gateways, one for instances.
Instances are not guarded against termination; a future implementation
should use ASGs to make sure there are always instances running.
To make it easier to pick the right AMI for the NAT instance,
add an AMI context provider, which will look up AMIs available to
the user.
Fixes #4876.
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license