cdk-nextjs 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +1253 -732
- package/API.md +2458 -1108
- package/README.md +37 -5
- package/docs/cdk-nextjs-NextjsRegionalFunctions.png +0 -0
- package/docs/cdk-nextjs-cfn-exec-policy.json +27 -0
- package/docs/cdk-nextjs.drawio +71 -11
- package/lib/constants.d.ts +2 -1
- package/lib/constants.js +2 -1
- package/lib/generated-structs/OptionalNextjsDistributionProps.d.ts +1 -1
- package/lib/generated-structs/OptionalNextjsDistributionProps.js +1 -1
- package/lib/index.d.ts +3 -2
- package/lib/index.js +8 -2
- package/lib/nextjs-api.d.ts +71 -0
- package/lib/nextjs-api.js +173 -0
- package/lib/nextjs-assets-deployment.js +2 -2
- package/lib/nextjs-build/nextjs-build.d.ts +1 -1
- package/lib/nextjs-build/nextjs-build.js +2 -2
- package/lib/nextjs-compute/nextjs-containers.js +1 -1
- package/lib/nextjs-compute/nextjs-functions.d.ts +3 -1
- package/lib/nextjs-compute/nextjs-functions.js +11 -10
- package/lib/nextjs-distribution.d.ts +2 -2
- package/lib/nextjs-distribution.js +2 -2
- package/lib/nextjs-file-system.js +1 -1
- package/lib/nextjs-post-deploy.js +1 -1
- package/lib/nextjs-static-assets.d.ts +0 -4
- package/lib/nextjs-static-assets.js +2 -2
- package/lib/nextjs-vpc.js +1 -1
- package/lib/root-constructs/nextjs-base-construct.d.ts +137 -0
- package/lib/root-constructs/nextjs-base-construct.js +112 -0
- package/lib/root-constructs/nextjs-global-containers.d.ts +5 -32
- package/lib/root-constructs/nextjs-global-containers.js +10 -83
- package/lib/root-constructs/nextjs-global-functions.d.ts +5 -32
- package/lib/root-constructs/nextjs-global-functions.js +12 -84
- package/lib/root-constructs/nextjs-regional-containers.d.ts +5 -21
- package/lib/root-constructs/nextjs-regional-containers.js +10 -71
- package/lib/root-constructs/nextjs-regional-functions.d.ts +37 -0
- package/lib/root-constructs/nextjs-regional-functions.js +58 -0
- package/package.json +1 -1
- package/lib/root-constructs/nextjs-base-overrides.d.ts +0 -30
- package/lib/root-constructs/nextjs-base-overrides.js +0 -3
- package/lib/root-constructs/nextjs-base-props.d.ts +0 -64
- package/lib/root-constructs/nextjs-base-props.js +0 -3
package/README.md
CHANGED
|
@@ -75,13 +75,13 @@ See [examples/](./examples/) for more usage examples.
|
|
|
75
75
|
|
|
76
76
|
### `NextjsGlobalFunctions`
|
|
77
77
|
|
|
78
|
-
Architecture includes [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) Functions to respond to dynamic requests and [CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) Distribution to globally serve requests and distribute static assets. Use this construct when you have unpredictable traffic, can afford occasional latency (i.e. cold starts - [typically 1% of production traffic](https://aws.amazon.com/blogs/compute/operating-lambda-performance-optimization-part-1/)), and/or want the most granular pricing model. ([code](./src/root-constructs/nextjs-global-functions.ts
|
|
78
|
+
Architecture includes [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) Functions to respond to dynamic requests and [CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) Distribution to globally serve requests and distribute static assets. Use this construct when you have unpredictable traffic, can afford occasional latency (i.e. cold starts - [typically 1% of production traffic](https://aws.amazon.com/blogs/compute/operating-lambda-performance-optimization-part-1/)), and/or want the most granular pricing model. ([code](./src/root-constructs/nextjs-global-functions.ts))
|
|
79
79
|
|
|
80
80
|

|
|
81
81
|
|
|
82
82
|
### `NextjsGlobalContainers`
|
|
83
83
|
|
|
84
|
-
Architecture includes [ECS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) containers to respond to dynamic requests and [CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) Distribution to globally serve requests and distribute static assets. Use this option when you have predictable traffic, need the lowest latency, and/or can afford a less granular pricing model. ([code](./src/root-constructs/nextjs-global-containers.ts
|
|
84
|
+
Architecture includes [ECS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html) containers to respond to dynamic requests and [CloudFront](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html) Distribution to globally serve requests and distribute static assets. Use this option when you have predictable traffic, need the lowest latency, and/or can afford a less granular pricing model. ([code](./src/root-constructs/nextjs-global-containers.ts))
|
|
85
85
|
|
|
86
86
|

|
|
87
87
|
|
|
@@ -91,6 +91,12 @@ Architecture includes [ECS Fargate](https://docs.aws.amazon.com/AmazonECS/latest
|
|
|
91
91
|
|
|
92
92
|

|
|
93
93
|
|
|
94
|
+
### `NextjsRegionalFunctions`
|
|
95
|
+
|
|
96
|
+
Architecture includes [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) Functions to respond to dynamic requests and [API Gateway REST API](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-rest-api.html) to regionally serve requests and distribute static assets. Use this options when you cannot use Amazon CloudFront (i.e. [AWS GovCloud](https://aws.amazon.com/govcloud-us/?whats-new.sort-by=item.additionalFields.postDateTime&whats-new.sort-order=desc)). ([code](./src/root-constructs/nextjs-regional-functions.ts))
|
|
97
|
+
|
|
98
|
+

|
|
99
|
+
|
|
94
100
|
## Why
|
|
95
101
|
|
|
96
102
|
The simplest path to deploy Next.js is on [Vercel](https://vercel.com/) - the Platform-as-a-Service company behind Next.js. However, deploying to Vercel can be expensive and some developers want all of their workloads running _directly_ on AWS. Developers can deploy Next.js on AWS through [AWS Amplify Hosting](https://docs.aws.amazon.com/amplify/latest/userguide/ssr-Amplifysupport.html), but Amplify does not support all Next.js features and manages AWS resources for you so they cannot be customized. If Amplify meets your requirements we recommend you use it, but if you want to use all Next.js features or want more visibility into the AWS resources then this construct is for you.
|
|
@@ -104,9 +110,11 @@ The simplest path to deploy Next.js is on [Vercel](https://vercel.com/) - the Pl
|
|
|
104
110
|
|
|
105
111
|
## Limitations
|
|
106
112
|
|
|
107
|
-
- If using `NextjsGlobalFunctions` or `NextjsGlobalContainers` (which use CloudFront), the number of top level files/directories cannot exceed 25, the max number of behaviors a CloudFront
|
|
113
|
+
- If using `NextjsGlobalFunctions` or `NextjsGlobalContainers` (which use CloudFront), the number of top level files/directories cannot exceed 25, the max number of behaviors a CloudFront Distribution supports. We recommend you put all of your public assets into one top level directory (i.e. public/static) so you don't reach this limit. See [CloudFront Quotas](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cloudfront-limits.html) for more information.
|
|
108
114
|
- If using `NextjsGlobalFunctions`, when [revalidating data in Next.js](https://nextjs.org/docs/app/building-your-application/data-fetching/fetching-caching-and-revalidating#on-demand-revalidation) (i.e. [revalidatePath](https://nextjs.org/docs/app/api-reference/functions/revalidatePath)), the CloudFront Cache will still hold stale data. You'll need to use AWS SDK JS V3 [CreateInvalidationCommand](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-cloudfront/Class/CreateInvalidationCommand/) to manually invalidate the path in CloudFront. See more [here](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html).
|
|
109
115
|
- If using `NextjsGlobalFunctions`, setting an Authorization header won't work by default because of Lambda Function URL with IAM Auth is already using the Authorization header. You can use the `AWS_LWA_AUTHORIZATION_SOURCE` environment variable of [AWS Lambda Web Adapter](https://github.com/awslabs/aws-lambda-web-adapter) to set an alternative Authorization header in the client which will then be set to the Authorization header when it reaches your app.
|
|
116
|
+
- `NextjsRegionalFunctions` doesn't support streaming because API Gateway doesn't support streaming yet.
|
|
117
|
+
- If using `NextjsRegionalFunctions` without a custom domain, API Gateway REST APIs require a [stage name](https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-stages.html) (default: `/prod`) to be specified. This causes links to pages and static assets to break because they're not prefixed with the stage name. You can work around this issue by specifying [basePath](https://nextjs.org/docs/app/api-reference/config/next-config-js/basePath) in next.config.js as your stage name. Additionally, you'll need to add middleware logic to rewrite requests to include the stage name because API Gateway does not include the stage name in the path passed to Lambda. See [examples/app-playground/middleware.ts](./examples/app-playground/middleware.ts).
|
|
110
118
|
|
|
111
119
|
## Additional Security Recommendations
|
|
112
120
|
|
|
@@ -115,8 +123,8 @@ This construct by default implements all AWS security best practices that a CDK
|
|
|
115
123
|
- [VPC Flow Logs](https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs.html). See [examples/](./examples) for sample implementation.
|
|
116
124
|
- [Scan ECR Images For Vulnerabilities](https://docs.aws.amazon.com/AmazonECR/latest/userguide/image-scanning.html).
|
|
117
125
|
- For `NextjsGlobalFunctions` and `NextjsGlobalContainers`, [CloudFront Access Logs](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/AccessLogs.html). See [examples/](./examples) for sample implementation.
|
|
118
|
-
- For `NextjsGlobalContainers` and `NextjsRegionalContainers`, [ALB HTTPS Listener](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html)
|
|
119
|
-
- If using `NextjsGlobalContainers`, enable `ReadonlyRootFilesystem`. This will remove ability to use Static On-Demand feature of Next.js so it's not enabled by default, but is recommended for security.
|
|
126
|
+
- For `NextjsGlobalContainers` and `NextjsRegionalContainers`, use [ALB HTTPS Listener](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html)
|
|
127
|
+
- If using `NextjsGlobalContainers` and `NextjsRegionalContainers`, enable `ReadonlyRootFilesystem`. This will remove ability to use Static On-Demand feature of Next.js so it's not enabled by default, but is recommended for security.
|
|
120
128
|
|
|
121
129
|
## Estimated Costs
|
|
122
130
|
|
|
@@ -191,6 +199,18 @@ More Details:
|
|
|
191
199
|
| VPC | NAT Gateway, 2 AZs | $64.80 |
|
|
192
200
|
| Total | | $138.07 |
|
|
193
201
|
|
|
202
|
+
### NextjsRegionalFunctions
|
|
203
|
+
|
|
204
|
+
[AWS Pricing Calculator](https://calculator.aws/#/estimate?id=a6d21afbb983c7efa53da096aa608739da113247)
|
|
205
|
+
|
|
206
|
+
| Service | Monthly Usage | Estimated Monthly Cost (USD) |
|
|
207
|
+
| ----------- | ---------------------------------------------- | ---------------------------- |
|
|
208
|
+
| Lambda | 500K requests, 2 GB memory, 150ms avg duration | $0.00 (Always Free Tier) |
|
|
209
|
+
| API Gateway | 2M requests | $7.00 |
|
|
210
|
+
| EFS | 10 GB storage, 25/2.5 GB Read/Write Throughput | $4.05 |
|
|
211
|
+
| VPC | NAT Gateway, 2 AZs | $64.80 |
|
|
212
|
+
| Total | | $75.85 |
|
|
213
|
+
|
|
194
214
|
## Performance
|
|
195
215
|
|
|
196
216
|
[Artillery Playwright](https://www.artillery.io/docs/reference/engines/playwright#overview) app playground example load tests results with 1K concurrent users. Reproduce with `pnpm test-fargate:lg` within `examples/load-tests`.
|
|
@@ -290,6 +310,15 @@ TODO
|
|
|
290
310
|
TODO
|
|
291
311
|
```
|
|
292
312
|
|
|
313
|
+
### NextjsRegionalFunctions
|
|
314
|
+
|
|
315
|
+
<details>
|
|
316
|
+
<summary>`NextjsRegionalFunctions` Performance Details</summary>
|
|
317
|
+
|
|
318
|
+
```bash
|
|
319
|
+
TODO
|
|
320
|
+
```
|
|
321
|
+
|
|
293
322
|
</details>
|
|
294
323
|
|
|
295
324
|
## Contributing
|
|
@@ -336,6 +365,9 @@ A: `NextjsGlobalFunctionsProps.overrides.nextjsDistribution` allows you to custo
|
|
|
336
365
|
Q: Why use container image for `NextjsGlobalFunctions`?<br />
|
|
337
366
|
A: Read [The case for containers on Lambda (with benchmarks)](https://aaronstuyvenberg.com/posts/containers-on-lambda).
|
|
338
367
|
|
|
368
|
+
Q: How can I `cdk bootstrap --cloudformation-execution-policies ...` my AWS Account with limited permissions for cdk-nextjs to deploy?<br />
|
|
369
|
+
A: See [docs/cdk-nextjs-cfn-exec-policy.json](./docs/cdk-nextjs-cfn-exec-policy.json). Note, this IAM Policy is scoped to all cdk-nextjs constructs so you can remove services if you know the construct you're using doesn't use that service.
|
|
370
|
+
|
|
339
371
|
## Acknowledgements
|
|
340
372
|
|
|
341
373
|
This construct was built on the shoulders of giants. Thank you to the contributors of [cdk-nextjs-standalone](https://github.com/jetbridge/cdk-nextjs) and [open-next](https://github.com/sst/open-next).
|
|
Binary file
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Version": "2012-10-17",
|
|
3
|
+
"Statement": [
|
|
4
|
+
{
|
|
5
|
+
"Sid": "CfnExecCdkNextjs",
|
|
6
|
+
"Effect": "Allow",
|
|
7
|
+
"Action": [
|
|
8
|
+
"apigateway:*",
|
|
9
|
+
"application-autoscaling:*",
|
|
10
|
+
"cloudformation:*",
|
|
11
|
+
"cloudfront:*",
|
|
12
|
+
"cloudwatch:*",
|
|
13
|
+
"ecs:*",
|
|
14
|
+
"ec2:*",
|
|
15
|
+
"elasticfilesystem:*",
|
|
16
|
+
"elasticloadbalancing:*",
|
|
17
|
+
"iam:*",
|
|
18
|
+
"lambda:*",
|
|
19
|
+
"logs:*",
|
|
20
|
+
"s3:*",
|
|
21
|
+
"servicediscovery:*",
|
|
22
|
+
"ssm:*"
|
|
23
|
+
],
|
|
24
|
+
"Resource": ["*"]
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
}
|
package/docs/cdk-nextjs.drawio
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<mxfile host="Electron" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/27.0.9 Chrome/134.0.6998.205 Electron/35.4.0 Safari/537.36" version="27.0.9" pages="
|
|
1
|
+
<mxfile host="Electron" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/27.0.9 Chrome/134.0.6998.205 Electron/35.4.0 Safari/537.36" version="27.0.9" pages="4">
|
|
2
2
|
<diagram name="NextjsGlobalFunctions" id="VdQA3LVE7DweftUdzD3P">
|
|
3
3
|
<mxGraphModel dx="1634" dy="1998" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
|
4
4
|
<root>
|
|
@@ -132,37 +132,97 @@
|
|
|
132
132
|
<mxCell id="ZM6Z_FSj9kd4RMqbAZD0-11" value="User" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#232F3D;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.user;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
|
|
133
133
|
<mxGeometry x="-155" y="214" width="78" height="78" as="geometry" />
|
|
134
134
|
</mxCell>
|
|
135
|
-
<mxCell id="BQkD81zyo4f87xUlEk-l-0" value="VPC" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc2;strokeColor=#8C4FFF;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#AAB7B8;dashed=0;"
|
|
135
|
+
<mxCell id="BQkD81zyo4f87xUlEk-l-0" value="VPC" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc2;strokeColor=#8C4FFF;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#AAB7B8;dashed=0;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
|
|
136
136
|
<mxGeometry x="-24.5" y="138" width="503" height="318" as="geometry" />
|
|
137
137
|
</mxCell>
|
|
138
|
-
<mxCell id="BQkD81zyo4f87xUlEk-l-1" value="Private subnet" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#00A4A6;fillColor=#E6F6F7;verticalAlign=top;align=left;spacingLeft=30;fontColor=#147EBA;dashed=0;"
|
|
138
|
+
<mxCell id="BQkD81zyo4f87xUlEk-l-1" value="Private subnet" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=1;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#00A4A6;fillColor=#E6F6F7;verticalAlign=top;align=left;spacingLeft=30;fontColor=#147EBA;dashed=0;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
|
|
139
139
|
<mxGeometry x="156.5" y="168" width="312" height="281" as="geometry" />
|
|
140
140
|
</mxCell>
|
|
141
|
-
<mxCell id="BQkD81zyo4f87xUlEk-l-2" value="Public subnet" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#7AA116;fillColor=#F2F6E8;verticalAlign=top;align=left;spacingLeft=30;fontColor=#248814;dashed=0;"
|
|
141
|
+
<mxCell id="BQkD81zyo4f87xUlEk-l-2" value="Public subnet" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#7AA116;fillColor=#F2F6E8;verticalAlign=top;align=left;spacingLeft=30;fontColor=#248814;dashed=0;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
|
|
142
142
|
<mxGeometry x="-19.5" y="168" width="164" height="281" as="geometry" />
|
|
143
143
|
</mxCell>
|
|
144
|
-
<mxCell id="BQkD81zyo4f87xUlEk-l-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;"
|
|
144
|
+
<mxCell id="BQkD81zyo4f87xUlEk-l-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" source="BQkD81zyo4f87xUlEk-l-4" target="BQkD81zyo4f87xUlEk-l-5" edge="1">
|
|
145
145
|
<mxGeometry relative="1" as="geometry" />
|
|
146
146
|
</mxCell>
|
|
147
|
-
<mxCell id="BQkD81zyo4f87xUlEk-l-4" value="AWS Fargate<div>Next.js Server</div>" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.fargate;"
|
|
147
|
+
<mxCell id="BQkD81zyo4f87xUlEk-l-4" value="AWS Fargate<div>Next.js Server</div>" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.fargate;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
|
|
148
148
|
<mxGeometry x="205.5" y="263" width="78" height="78" as="geometry" />
|
|
149
149
|
</mxCell>
|
|
150
|
-
<mxCell id="BQkD81zyo4f87xUlEk-l-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;"
|
|
150
|
+
<mxCell id="BQkD81zyo4f87xUlEk-l-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" source="BQkD81zyo4f87xUlEk-l-5" target="ZM6Z_FSj9kd4RMqbAZD0-11" edge="1">
|
|
151
151
|
<mxGeometry relative="1" as="geometry" />
|
|
152
152
|
</mxCell>
|
|
153
|
-
<mxCell id="BQkD81zyo4f87xUlEk-l-5" value="Application Load<div>Balancer</div>" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.application_load_balancer;"
|
|
153
|
+
<mxCell id="BQkD81zyo4f87xUlEk-l-5" value="Application Load<div>Balancer</div>" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.application_load_balancer;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
|
|
154
154
|
<mxGeometry x="26.5" y="214" width="78" height="78" as="geometry" />
|
|
155
155
|
</mxCell>
|
|
156
|
-
<mxCell id="BQkD81zyo4f87xUlEk-l-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;"
|
|
156
|
+
<mxCell id="BQkD81zyo4f87xUlEk-l-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" source="BQkD81zyo4f87xUlEk-l-6" target="BQkD81zyo4f87xUlEk-l-4" edge="1">
|
|
157
157
|
<mxGeometry relative="1" as="geometry" />
|
|
158
158
|
</mxCell>
|
|
159
|
-
<mxCell id="BQkD81zyo4f87xUlEk-l-6" value="Amazon EFS<div>Next.js Cache</div>" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#7AA116;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.elastic_file_system;"
|
|
159
|
+
<mxCell id="BQkD81zyo4f87xUlEk-l-6" value="Amazon EFS<div>Next.js Cache</div>" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#7AA116;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.elastic_file_system;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
|
|
160
160
|
<mxGeometry x="354.5" y="263" width="78" height="78" as="geometry" />
|
|
161
161
|
</mxCell>
|
|
162
|
-
<mxCell id="BQkD81zyo4f87xUlEk-l-3" value="NAT Gateway" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.nat_gateway;"
|
|
162
|
+
<mxCell id="BQkD81zyo4f87xUlEk-l-3" value="NAT Gateway" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.nat_gateway;" parent="ZM6Z_FSj9kd4RMqbAZD0-1" vertex="1">
|
|
163
163
|
<mxGeometry x="26.5" y="341" width="78" height="78" as="geometry" />
|
|
164
164
|
</mxCell>
|
|
165
165
|
</root>
|
|
166
166
|
</mxGraphModel>
|
|
167
167
|
</diagram>
|
|
168
|
+
<diagram name="NextjsRegionalFunctions" id="9k_BY9TFF7wC6czyA1JQ">
|
|
169
|
+
<mxGraphModel dx="1634" dy="1998" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
|
170
|
+
<root>
|
|
171
|
+
<mxCell id="dAvX3k6xTMvLQ2_Hd7h_-0" />
|
|
172
|
+
<mxCell id="dAvX3k6xTMvLQ2_Hd7h_-1" parent="dAvX3k6xTMvLQ2_Hd7h_-0" />
|
|
173
|
+
<mxCell id="dAvX3k6xTMvLQ2_Hd7h_-2" value="AWS Account" style="sketch=0;outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_aws_cloud;strokeColor=#AAB7B8;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#AAB7B8;dashed=0;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
|
|
174
|
+
<mxGeometry x="-50" y="-1131" width="742" height="464" as="geometry" />
|
|
175
|
+
</mxCell>
|
|
176
|
+
<mxCell id="dAvX3k6xTMvLQ2_Hd7h_-3" value="Private subnet" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#00A4A6;fillColor=#E6F6F7;verticalAlign=top;align=left;spacingLeft=30;fontColor=#147EBA;dashed=0;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
|
|
177
|
+
<mxGeometry x="378" y="-953" width="270" height="260" as="geometry" />
|
|
178
|
+
</mxCell>
|
|
179
|
+
<mxCell id="dAvX3k6xTMvLQ2_Hd7h_-4" value="VPC" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_vpc2;strokeColor=#8C4FFF;fillColor=none;verticalAlign=top;align=left;spacingLeft=30;fontColor=#AAB7B8;dashed=0;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
|
|
180
|
+
<mxGeometry x="198" y="-983" width="459" height="295" as="geometry" />
|
|
181
|
+
</mxCell>
|
|
182
|
+
<mxCell id="dAvX3k6xTMvLQ2_Hd7h_-5" value="User" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#232F3D;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.user;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
|
|
183
|
+
<mxGeometry x="-184" y="-972" width="78" height="78" as="geometry" />
|
|
184
|
+
</mxCell>
|
|
185
|
+
<mxCell id="dAvX3k6xTMvLQ2_Hd7h_-6" value="Static<div>Requests</div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1" source="dAvX3k6xTMvLQ2_Hd7h_-7" target="Iu0hWbrv-bcQxfW1xtsR-0">
|
|
186
|
+
<mxGeometry relative="1" as="geometry">
|
|
187
|
+
<mxPoint x="25" y="-972" as="targetPoint" />
|
|
188
|
+
</mxGeometry>
|
|
189
|
+
</mxCell>
|
|
190
|
+
<mxCell id="dAvX3k6xTMvLQ2_Hd7h_-7" value="Next.js Static<div>Assets Bucket</div>" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#7AA116;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.s3;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
|
|
191
|
+
<mxGeometry x="97" y="-1081" width="78" height="78" as="geometry" />
|
|
192
|
+
</mxCell>
|
|
193
|
+
<mxCell id="dAvX3k6xTMvLQ2_Hd7h_-10" value="Public subnet" style="points=[[0,0],[0.25,0],[0.5,0],[0.75,0],[1,0],[1,0.25],[1,0.5],[1,0.75],[1,1],[0.75,1],[0.5,1],[0.25,1],[0,1],[0,0.75],[0,0.5],[0,0.25]];outlineConnect=0;gradientColor=none;html=1;whiteSpace=wrap;fontSize=12;fontStyle=0;container=0;pointerEvents=0;collapsible=0;recursiveResize=0;shape=mxgraph.aws4.group;grIcon=mxgraph.aws4.group_security_group;grStroke=0;strokeColor=#7AA116;fillColor=#F2F6E8;verticalAlign=top;align=left;spacingLeft=30;fontColor=#248814;dashed=0;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
|
|
194
|
+
<mxGeometry x="209" y="-953" width="164" height="255" as="geometry" />
|
|
195
|
+
</mxCell>
|
|
196
|
+
<mxCell id="dAvX3k6xTMvLQ2_Hd7h_-12" value="NAT Gateway" style="sketch=0;outlineConnect=0;fontColor=#232F3E;gradientColor=none;fillColor=#8C4FFF;strokeColor=none;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;pointerEvents=1;shape=mxgraph.aws4.nat_gateway;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
|
|
197
|
+
<mxGeometry x="249" y="-864.5" width="78" height="78" as="geometry" />
|
|
198
|
+
</mxCell>
|
|
199
|
+
<mxCell id="dAvX3k6xTMvLQ2_Hd7h_-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1" source="dAvX3k6xTMvLQ2_Hd7h_-16" target="dAvX3k6xTMvLQ2_Hd7h_-15">
|
|
200
|
+
<mxGeometry relative="1" as="geometry" />
|
|
201
|
+
</mxCell>
|
|
202
|
+
<mxCell id="dAvX3k6xTMvLQ2_Hd7h_-15" value="AWS Lambda<div>Next.js Server</div>" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#ED7100;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.lambda;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
|
|
203
|
+
<mxGeometry x="392" y="-870" width="80" height="78" as="geometry" />
|
|
204
|
+
</mxCell>
|
|
205
|
+
<mxCell id="dAvX3k6xTMvLQ2_Hd7h_-16" value="Amazon EFS<br>Next.js Cache" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#7AA116;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.elastic_file_system;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
|
|
206
|
+
<mxGeometry x="547" y="-870" width="80" height="78" as="geometry" />
|
|
207
|
+
</mxCell>
|
|
208
|
+
<mxCell id="dAvX3k6xTMvLQ2_Hd7h_-17" value="Dynamic<div>Requests</div>" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1" source="dAvX3k6xTMvLQ2_Hd7h_-15" target="Iu0hWbrv-bcQxfW1xtsR-0">
|
|
209
|
+
<mxGeometry relative="1" as="geometry">
|
|
210
|
+
<Array as="points">
|
|
211
|
+
<mxPoint x="432" y="-899" />
|
|
212
|
+
<mxPoint x="127" y="-899" />
|
|
213
|
+
<mxPoint x="127" y="-933" />
|
|
214
|
+
</Array>
|
|
215
|
+
<mxPoint x="128" y="-866" as="sourcePoint" />
|
|
216
|
+
<mxPoint x="64" y="-933" as="targetPoint" />
|
|
217
|
+
</mxGeometry>
|
|
218
|
+
</mxCell>
|
|
219
|
+
<mxCell id="Iu0hWbrv-bcQxfW1xtsR-2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1" source="Iu0hWbrv-bcQxfW1xtsR-0" target="dAvX3k6xTMvLQ2_Hd7h_-5">
|
|
220
|
+
<mxGeometry relative="1" as="geometry" />
|
|
221
|
+
</mxCell>
|
|
222
|
+
<mxCell id="Iu0hWbrv-bcQxfW1xtsR-0" value="API Gateway<div>REST API</div>" style="sketch=0;points=[[0,0,0],[0.25,0,0],[0.5,0,0],[0.75,0,0],[1,0,0],[0,1,0],[0.25,1,0],[0.5,1,0],[0.75,1,0],[1,1,0],[0,0.25,0],[0,0.5,0],[0,0.75,0],[1,0.25,0],[1,0.5,0],[1,0.75,0]];outlineConnect=0;fontColor=#232F3E;fillColor=#8C4FFF;strokeColor=#ffffff;dashed=0;verticalLabelPosition=bottom;verticalAlign=top;align=center;html=1;fontSize=12;fontStyle=0;aspect=fixed;shape=mxgraph.aws4.resourceIcon;resIcon=mxgraph.aws4.api_gateway;" vertex="1" parent="dAvX3k6xTMvLQ2_Hd7h_-1">
|
|
223
|
+
<mxGeometry x="-14" y="-972" width="78" height="78" as="geometry" />
|
|
224
|
+
</mxCell>
|
|
225
|
+
</root>
|
|
226
|
+
</mxGraphModel>
|
|
227
|
+
</diagram>
|
|
168
228
|
</mxfile>
|
package/lib/constants.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export declare enum NextjsType {
|
|
2
2
|
GLOBAL_CONTAINERS = "GLOBAL_CONTAINERS",
|
|
3
3
|
GLOBAL_FUNCTIONS = "GLOBAL_FUNCTIONS",
|
|
4
|
-
REGIONAL_CONTAINERS = "REGIONAL_CONTAINERS"
|
|
4
|
+
REGIONAL_CONTAINERS = "REGIONAL_CONTAINERS",
|
|
5
|
+
REGIONAL_FUNCTIONS = "REGIONAL_FUNCTIONS"
|
|
5
6
|
}
|
|
6
7
|
/**
|
|
7
8
|
* Mount path in container for EFS. Next.js image optimization, data, and full
|
package/lib/constants.js
CHANGED
|
@@ -6,6 +6,7 @@ var NextjsType;
|
|
|
6
6
|
NextjsType["GLOBAL_CONTAINERS"] = "GLOBAL_CONTAINERS";
|
|
7
7
|
NextjsType["GLOBAL_FUNCTIONS"] = "GLOBAL_FUNCTIONS";
|
|
8
8
|
NextjsType["REGIONAL_CONTAINERS"] = "REGIONAL_CONTAINERS";
|
|
9
|
+
NextjsType["REGIONAL_FUNCTIONS"] = "REGIONAL_FUNCTIONS";
|
|
9
10
|
})(NextjsType || (exports.NextjsType = NextjsType = {}));
|
|
10
11
|
/**
|
|
11
12
|
* Mount path in container for EFS. Next.js image optimization, data, and full
|
|
@@ -35,4 +36,4 @@ exports.FULL_ROUTE_CACHE_PATH = `${exports.SERVER_DIST_PATH}/app`;
|
|
|
35
36
|
exports.STATIC_PATH = ".next/static";
|
|
36
37
|
exports.CDK_NEXTJS_SERVER_DIST_DIR_ENV_VAR_NAME = "CDK_NEXTJS_SERVER_DIST_DIR";
|
|
37
38
|
exports.INJECT_CDK_NEXTJS_BUILD_ENV_VARS = "{{INJECT_CDK_NEXTJS_BUILD_ENV_VARS}}";
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFZLFVBS1g7QUFMRCxXQUFZLFVBQVU7SUFDcEIscURBQXVDLENBQUE7SUFDdkMsbURBQXFDLENBQUE7SUFDckMseURBQTJDLENBQUE7SUFDM0MsdURBQXlDLENBQUE7QUFDM0MsQ0FBQyxFQUxXLFVBQVUsMEJBQVYsVUFBVSxRQUtyQjtBQUVEOzs7Ozs7OztHQVFHO0FBQ1UsUUFBQSxVQUFVLEdBQUcsaUJBQWlCLENBQUM7QUFFNUMsaUZBQWlGO0FBQ3BFLFFBQUEsaUJBQWlCLEdBQUcsVUFBVSxDQUFDO0FBQy9CLFFBQUEsNEJBQTRCLEdBQUcscUJBQXFCLENBQUM7QUFDckQsUUFBQSxtQkFBbUIsR0FBRyxZQUFZLENBQUM7QUFDbkMsUUFBQSx3QkFBd0IsR0FBRyxpQkFBaUIsQ0FBQztBQUM3QyxRQUFBLHlCQUF5QixHQUFHLGtCQUFrQixDQUFDO0FBQy9DLFFBQUEsbUJBQW1CLEdBQUcsWUFBWSxDQUFDO0FBQ25DLFFBQUEsb0JBQW9CLEdBQUcsYUFBYSxDQUFDO0FBQ3JDLFFBQUEsaUNBQWlDLEdBQUcsMEJBQTBCLENBQUM7QUFFL0QsUUFBQSxVQUFVLEdBQUcsYUFBYSxDQUFDO0FBQzNCLFFBQUEsZUFBZSxHQUFHLEdBQUcsa0JBQVUsY0FBYyxDQUFDO0FBQzlDLFFBQUEsZ0JBQWdCLEdBQUcsR0FBRyxrQkFBVSxTQUFTLENBQUM7QUFDMUMsUUFBQSxXQUFXLEdBQUcsUUFBUSxDQUFDO0FBQ3ZCLFFBQUEsZ0JBQWdCLEdBQUcsY0FBYyxDQUFDO0FBQ2xDLFFBQUEscUJBQXFCLEdBQUcsR0FBRyx3QkFBZ0IsTUFBTSxDQUFDO0FBQ2xELFFBQUEsV0FBVyxHQUFHLGNBQWMsQ0FBQztBQUU3QixRQUFBLHVDQUF1QyxHQUNsRCw0QkFBNEIsQ0FBQztBQUVsQixRQUFBLGdDQUFnQyxHQUMzQyxzQ0FBc0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIE5leHRqc1R5cGUge1xuICBHTE9CQUxfQ09OVEFJTkVSUyA9IFwiR0xPQkFMX0NPTlRBSU5FUlNcIixcbiAgR0xPQkFMX0ZVTkNUSU9OUyA9IFwiR0xPQkFMX0ZVTkNUSU9OU1wiLFxuICBSRUdJT05BTF9DT05UQUlORVJTID0gXCJSRUdJT05BTF9DT05UQUlORVJTXCIsXG4gIFJFR0lPTkFMX0ZVTkNUSU9OUyA9IFwiUkVHSU9OQUxfRlVOQ1RJT05TXCIsXG59XG5cbi8qKlxuICogTW91bnQgcGF0aCBpbiBjb250YWluZXIgZm9yIEVGUy4gTmV4dC5qcyBpbWFnZSBvcHRpbWl6YXRpb24sIGRhdGEsIGFuZCBmdWxsXG4gKiByb3V0ZSBjYWNoZSB3aWxsIGJlIHN5bWxpbmtlZCB0byB0aGlzIGxvY2F0aW9uLlxuICpcbiAqIE11c3QgY29tcGx5IHdpdGggcGF0dGVybjogXi9tbnQvW2EtekEtWjAtOS1fLl0rJCBkdWUgdG8gbGFtYmRhIHJlcXVpcmVtZW50LlxuICogRmFyZ2F0ZSBkb2Vzbid0IGhhdmUgdGhpcyBzYW1lIHJlcXVpcmVtZW50IGJ1dCB3ZSBzaGFyZSBjb2RlIGZvciBsYW1iZGEgYW5kXG4gKiBmYXJnYXRlLlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9hcGkvQVBJX0ZpbGVTeXN0ZW1Db25maWcuaHRtbFxuICovXG5leHBvcnQgY29uc3QgTU9VTlRfUEFUSCA9IFwiL21udC9jZGstbmV4dGpzXCI7XG5cbi8vIE5PVEU6ICpfQVJHX05BTUUgY29uc3RhbnRzIGFyZSByZWZlcmVuY2VkIGluIERvY2tlcmZpbGVzIHNvIHRoZXkgY2FuIGJlIHJldXNlZFxuZXhwb3J0IGNvbnN0IEJVSUxEX0lEX0FSR19OQU1FID0gXCJCVUlMRF9JRFwiO1xuZXhwb3J0IGNvbnN0IEJVSUxERVJfSU1BR0VfQUxJQVNfQVJHX05BTUUgPSBcIkJVSUxERVJfSU1BR0VfQUxJQVNcIjtcbmV4cG9ydCBjb25zdCBDQUNIRV9QQVRIX0FSR19OQU1FID0gXCJDQUNIRV9QQVRIXCI7XG5leHBvcnQgY29uc3QgREFUQV9DQUNIRV9QQVRIX0FSR19OQU1FID0gXCJEQVRBX0NBQ0hFX1BBVEhcIjtcbmV4cG9ydCBjb25zdCBJTUFHRV9DQUNIRV9QQVRIX0FSR19OQU1FID0gXCJJTUFHRV9DQUNIRV9QQVRIXCI7XG5leHBvcnQgY29uc3QgTU9VTlRfUEFUSF9BUkdfTkFNRSA9IFwiTU9VTlRfUEFUSFwiO1xuZXhwb3J0IGNvbnN0IFBVQkxJQ19QQVRIX0FSR19OQU1FID0gXCJQVUJMSUNfUEFUSFwiO1xuZXhwb3J0IGNvbnN0IFJFTEFUSVZFX1BBVEhfVE9fUEFDS0FHRV9BUkdfTkFNRSA9IFwiUkVMQVRJVkVfUEFUSF9UT19QQUNLQUdFXCI7XG5cbmV4cG9ydCBjb25zdCBDQUNIRV9QQVRIID0gXCIubmV4dC9jYWNoZVwiO1xuZXhwb3J0IGNvbnN0IERBVEFfQ0FDSEVfUEFUSCA9IGAke0NBQ0hFX1BBVEh9L2ZldGNoLWNhY2hlYDtcbmV4cG9ydCBjb25zdCBJTUFHRV9DQUNIRV9QQVRIID0gYCR7Q0FDSEVfUEFUSH0vaW1hZ2VzYDtcbmV4cG9ydCBjb25zdCBQVUJMSUNfUEFUSCA9IFwicHVibGljXCI7XG5leHBvcnQgY29uc3QgU0VSVkVSX0RJU1RfUEFUSCA9IFwiLm5leHQvc2VydmVyXCI7XG5leHBvcnQgY29uc3QgRlVMTF9ST1VURV9DQUNIRV9QQVRIID0gYCR7U0VSVkVSX0RJU1RfUEFUSH0vYXBwYDtcbmV4cG9ydCBjb25zdCBTVEFUSUNfUEFUSCA9IFwiLm5leHQvc3RhdGljXCI7XG5cbmV4cG9ydCBjb25zdCBDREtfTkVYVEpTX1NFUlZFUl9ESVNUX0RJUl9FTlZfVkFSX05BTUUgPVxuICBcIkNES19ORVhUSlNfU0VSVkVSX0RJU1RfRElSXCI7XG5cbmV4cG9ydCBjb25zdCBJTkpFQ1RfQ0RLX05FWFRKU19CVUlMRF9FTlZfVkFSUyA9XG4gIFwie3tJTkpFQ1RfQ0RLX05FWFRKU19CVUlMRF9FTlZfVkFSU319XCI7XG4iXX0=
|
|
@@ -28,7 +28,7 @@ export interface OptionalNextjsDistributionProps {
|
|
|
28
28
|
*/
|
|
29
29
|
readonly basePath?: string;
|
|
30
30
|
/**
|
|
31
|
-
*
|
|
31
|
+
* Entries (files/directories) within Next.js app's public directory. Used to add static behaviors to distribution.
|
|
32
32
|
* @stability stable
|
|
33
33
|
*/
|
|
34
34
|
readonly publicDirEntries?: Array<PublicDirEntry>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJwbnBtIGRseCBwcm9qZW5cIi5cbmltcG9ydCB0eXBlIHsgYXdzX2NlcnRpZmljYXRlbWFuYWdlciwgYXdzX2Nsb3VkZnJvbnQsIGF3c19lbGFzdGljbG9hZGJhbGFuY2luZ3YyLCBhd3NfbGFtYmRhLCBhd3NfczMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7IE5leHRqc1R5cGUsIFB1YmxpY0RpckVudHJ5IH0gZnJvbSAnLi4vJztcblxuLyoqXG4gKiBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBSZXF1aXJlZCBpZiBgTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSU2Agb3IgYE5leHRqc1R5cGUuUkVHSU9OQUxfQ09OVEFJTkVSU2AuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXI/OiBhd3NfZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi5BcHBsaWNhdGlvbkxvYWRCYWxhbmNlcjtcbiAgLyoqXG4gICAqIFJlcXVpcmVkIGlmIGBOZXh0anNUeXBlLkdMT0JBTF9GVU5DVElPTlNgLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25Vcmw/OiBhd3NfbGFtYmRhLklGdW5jdGlvblVybDtcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb24/
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB+fiBHZW5lcmF0ZWQgYnkgcHJvamVuLiBUbyBtb2RpZnksIGVkaXQgLnByb2plbnJjLnRzIGFuZCBydW4gXCJwbnBtIGRseCBwcm9qZW5cIi5cbmltcG9ydCB0eXBlIHsgYXdzX2NlcnRpZmljYXRlbWFuYWdlciwgYXdzX2Nsb3VkZnJvbnQsIGF3c19lbGFzdGljbG9hZGJhbGFuY2luZ3YyLCBhd3NfbGFtYmRhLCBhd3NfczMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgdHlwZSB7IE5leHRqc1R5cGUsIFB1YmxpY0RpckVudHJ5IH0gZnJvbSAnLi4vJztcblxuLyoqXG4gKiBPcHRpb25hbE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBSZXF1aXJlZCBpZiBgTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSU2Agb3IgYE5leHRqc1R5cGUuUkVHSU9OQUxfQ09OVEFJTkVSU2AuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXI/OiBhd3NfZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi5BcHBsaWNhdGlvbkxvYWRCYWxhbmNlcjtcbiAgLyoqXG4gICAqIFJlcXVpcmVkIGlmIGBOZXh0anNUeXBlLkdMT0JBTF9GVU5DVElPTlNgLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb25Vcmw/OiBhd3NfbGFtYmRhLklGdW5jdGlvblVybDtcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb24/OiBhd3NfY2xvdWRmcm9udC5EaXN0cmlidXRpb247XG4gIC8qKlxuICAgKiBPcHRpb25hbCBidXQgb25seSBhcHBsaWNhYmxlIGZvciBgTmV4dGpzVHlwZS5HTE9CQUxfQ09OVEFJTkVSU2AuXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZT86IGF3c19jZXJ0aWZpY2F0ZW1hbmFnZXIuSUNlcnRpZmljYXRlO1xuICAvKipcbiAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IGJhc2VQYXRoPzogc3RyaW5nO1xuICAvKipcbiAgICogRW50cmllcyAoZmlsZXMvZGlyZWN0b3JpZXMpIHdpdGhpbiBOZXh0LmpzIGFwcCdzIHB1YmxpYyBkaXJlY3RvcnkuIFVzZWQgdG8gYWRkIHN0YXRpYyBiZWhhdmlvcnMgdG8gZGlzdHJpYnV0aW9uLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVibGljRGlyRW50cmllcz86IEFycmF5PFB1YmxpY0RpckVudHJ5PjtcbiAgLyoqXG4gICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAqL1xuICByZWFkb25seSBuZXh0anNUeXBlPzogTmV4dGpzVHlwZTtcbiAgLyoqXG4gICAqIEJ1Y2tldCBjb250YWluaW5nIHN0YXRpYyBhc3NldHMuXG4gICAqIE11c3QgYmUgcHJvdmlkZWQgaWYgeW91IHdhbnQgdG8gc2VydmUgc3RhdGljIGZpbGVzLlxuICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgYXNzZXRzQnVja2V0PzogYXdzX3MzLklCdWNrZXQ7XG59XG4iXX0=
|
package/lib/index.d.ts
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
export { NextjsType } from "./constants";
|
|
2
|
+
export { NextjsApi, NextjsApiProps, NextjsApiOverrides } from "./nextjs-api";
|
|
2
3
|
export { StaticAssetsCustomResourceProperties, NextjsAssetsDeployment, NextjsAssetDeploymentOverrides, NextjsAssetsDeploymentProps, } from "./nextjs-assets-deployment";
|
|
4
|
+
export { NextjsBaseConstructOverrides, NextjsBaseOverrides, NextjsBaseConstruct, NextjsBaseProps, NextjsBaseConstructProps, } from "./root-constructs/nextjs-base-construct";
|
|
3
5
|
export { NextjsBuild, NextjsBuildProps, NextjsBuildOverrides, BuilderImageProps, PublicDirEntry, } from "./nextjs-build/nextjs-build";
|
|
4
6
|
export { NextjsComputeBaseProps } from "./nextjs-compute/nextjs-compute-base-props";
|
|
5
7
|
export { NextjsContainers, NextjsContainersOverrides, NextjsContainersProps, } from "./nextjs-compute/nextjs-containers";
|
|
6
8
|
export { NextjsDistribution, NextjsDistributionOverrides, NextjsDistributionProps, } from "./nextjs-distribution";
|
|
7
9
|
export { NextjsFunctions, NextjsFunctionsOverrides, NextjsFunctionsProps, } from "./nextjs-compute/nextjs-functions";
|
|
8
10
|
export { NextjsFileSystem, NextjsFileSystemOverrides, NextjsFileSystemProps, AllowComputeProps, } from "./nextjs-file-system";
|
|
9
|
-
export { BaseNextjsConstructOverrides, BaseNextjsOverrides, } from "./root-constructs/nextjs-base-overrides";
|
|
10
|
-
export { NextjsBaseProps } from "./root-constructs/nextjs-base-props";
|
|
11
11
|
export { NextjsGlobalContainers, NextjsGlobalContainersConstructOverrides, NextjsGlobalContainersOverrides, NextjsGlobalContainersProps, } from "./root-constructs/nextjs-global-containers";
|
|
12
12
|
export { NextjsGlobalFunctions, NextjsGlobalFunctionsConstructOverrides, NextjsGlobalFunctionsOverrides, NextjsGlobalFunctionsProps, } from "./root-constructs/nextjs-global-functions";
|
|
13
13
|
export { NextjsRegionalContainers, NextjsRegionalContainersConstructOverrides, NextjsRegionalContainersOverrides, NextjsRegionalContainersProps, } from "./root-constructs/nextjs-regional-containers";
|
|
14
|
+
export { NextjsRegionalFunctions, NextjsRegionalFunctionsConstructOverrides, NextjsRegionalFunctionsOverrides, NextjsRegionalFunctionsProps, } from "./root-constructs/nextjs-regional-functions";
|
|
14
15
|
export { NextjsPostDeploy, NextjsPostDeployOverrides, NextjsPostDeployProps, PostDeployCustomResourceProperties, } from "./nextjs-post-deploy";
|
|
15
16
|
export { NextjsStaticAssets, NextjsStaticAssetsOverrides, NextjsStaticAssetsProps, } from "./nextjs-static-assets";
|
|
16
17
|
export { NextjsVpc, NextjsVpcOverrides, NextjsVpcProps } from "./nextjs-vpc";
|
package/lib/index.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.NextjsVpc = exports.NextjsStaticAssets = exports.NextjsPostDeploy = exports.NextjsRegionalContainers = exports.NextjsGlobalFunctions = exports.NextjsGlobalContainers = exports.NextjsFileSystem = exports.NextjsFunctions = exports.NextjsDistribution = exports.NextjsContainers = exports.NextjsBuild = exports.NextjsAssetsDeployment = exports.NextjsType = void 0;
|
|
3
|
+
exports.NextjsVpc = exports.NextjsStaticAssets = exports.NextjsPostDeploy = exports.NextjsRegionalFunctions = exports.NextjsRegionalContainers = exports.NextjsGlobalFunctions = exports.NextjsGlobalContainers = exports.NextjsFileSystem = exports.NextjsFunctions = exports.NextjsDistribution = exports.NextjsContainers = exports.NextjsBuild = exports.NextjsBaseConstruct = exports.NextjsAssetsDeployment = exports.NextjsApi = exports.NextjsType = void 0;
|
|
4
4
|
var constants_1 = require("./constants");
|
|
5
5
|
Object.defineProperty(exports, "NextjsType", { enumerable: true, get: function () { return constants_1.NextjsType; } });
|
|
6
|
+
var nextjs_api_1 = require("./nextjs-api");
|
|
7
|
+
Object.defineProperty(exports, "NextjsApi", { enumerable: true, get: function () { return nextjs_api_1.NextjsApi; } });
|
|
6
8
|
var nextjs_assets_deployment_1 = require("./nextjs-assets-deployment");
|
|
7
9
|
Object.defineProperty(exports, "NextjsAssetsDeployment", { enumerable: true, get: function () { return nextjs_assets_deployment_1.NextjsAssetsDeployment; } });
|
|
10
|
+
var nextjs_base_construct_1 = require("./root-constructs/nextjs-base-construct");
|
|
11
|
+
Object.defineProperty(exports, "NextjsBaseConstruct", { enumerable: true, get: function () { return nextjs_base_construct_1.NextjsBaseConstruct; } });
|
|
8
12
|
var nextjs_build_1 = require("./nextjs-build/nextjs-build");
|
|
9
13
|
Object.defineProperty(exports, "NextjsBuild", { enumerable: true, get: function () { return nextjs_build_1.NextjsBuild; } });
|
|
10
14
|
var nextjs_containers_1 = require("./nextjs-compute/nextjs-containers");
|
|
@@ -21,10 +25,12 @@ var nextjs_global_functions_1 = require("./root-constructs/nextjs-global-functio
|
|
|
21
25
|
Object.defineProperty(exports, "NextjsGlobalFunctions", { enumerable: true, get: function () { return nextjs_global_functions_1.NextjsGlobalFunctions; } });
|
|
22
26
|
var nextjs_regional_containers_1 = require("./root-constructs/nextjs-regional-containers");
|
|
23
27
|
Object.defineProperty(exports, "NextjsRegionalContainers", { enumerable: true, get: function () { return nextjs_regional_containers_1.NextjsRegionalContainers; } });
|
|
28
|
+
var nextjs_regional_functions_1 = require("./root-constructs/nextjs-regional-functions");
|
|
29
|
+
Object.defineProperty(exports, "NextjsRegionalFunctions", { enumerable: true, get: function () { return nextjs_regional_functions_1.NextjsRegionalFunctions; } });
|
|
24
30
|
var nextjs_post_deploy_1 = require("./nextjs-post-deploy");
|
|
25
31
|
Object.defineProperty(exports, "NextjsPostDeploy", { enumerable: true, get: function () { return nextjs_post_deploy_1.NextjsPostDeploy; } });
|
|
26
32
|
var nextjs_static_assets_1 = require("./nextjs-static-assets");
|
|
27
33
|
Object.defineProperty(exports, "NextjsStaticAssets", { enumerable: true, get: function () { return nextjs_static_assets_1.NextjsStaticAssets; } });
|
|
28
34
|
var nextjs_vpc_1 = require("./nextjs-vpc");
|
|
29
35
|
Object.defineProperty(exports, "NextjsVpc", { enumerable: true, get: function () { return nextjs_vpc_1.NextjsVpc; } });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXlDO0FBQWhDLHVHQUFBLFVBQVUsT0FBQTtBQUNuQiwyQ0FBNkU7QUFBcEUsdUdBQUEsU0FBUyxPQUFBO0FBQ2xCLHVFQUtvQztBQUhsQyxrSUFBQSxzQkFBc0IsT0FBQTtBQUl4QixpRkFNaUQ7QUFIL0MsNEhBQUEsbUJBQW1CLE9BQUE7QUFJckIsNERBTXFDO0FBTG5DLDJHQUFBLFdBQVcsT0FBQTtBQU9iLHdFQUk0QztBQUgxQyxxSEFBQSxnQkFBZ0IsT0FBQTtBQUlsQiw2REFJK0I7QUFIN0IseUhBQUEsa0JBQWtCLE9BQUE7QUFJcEIsc0VBSTJDO0FBSHpDLG1IQUFBLGVBQWUsT0FBQTtBQUlqQiwyREFLOEI7QUFKNUIsc0hBQUEsZ0JBQWdCLE9BQUE7QUFLbEIsdUZBS29EO0FBSmxELGtJQUFBLHNCQUFzQixPQUFBO0FBS3hCLHFGQUttRDtBQUpqRCxnSUFBQSxxQkFBcUIsT0FBQTtBQUt2QiwyRkFLc0Q7QUFKcEQsc0lBQUEsd0JBQXdCLE9BQUE7QUFLMUIseUZBS3FEO0FBSm5ELG9JQUFBLHVCQUF1QixPQUFBO0FBS3pCLDJEQUs4QjtBQUo1QixzSEFBQSxnQkFBZ0IsT0FBQTtBQUtsQiwrREFJZ0M7QUFIOUIsMEhBQUEsa0JBQWtCLE9BQUE7QUFJcEIsMkNBQTZFO0FBQXBFLHVHQUFBLFNBQVMsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IE5leHRqc1R5cGUgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmV4cG9ydCB7IE5leHRqc0FwaSwgTmV4dGpzQXBpUHJvcHMsIE5leHRqc0FwaU92ZXJyaWRlcyB9IGZyb20gXCIuL25leHRqcy1hcGlcIjtcbmV4cG9ydCB7XG4gIFN0YXRpY0Fzc2V0c0N1c3RvbVJlc291cmNlUHJvcGVydGllcyxcbiAgTmV4dGpzQXNzZXRzRGVwbG95bWVudCxcbiAgTmV4dGpzQXNzZXREZXBsb3ltZW50T3ZlcnJpZGVzLFxuICBOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1hc3NldHMtZGVwbG95bWVudFwiO1xuZXhwb3J0IHtcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZU92ZXJyaWRlcyxcbiAgTmV4dGpzQmFzZUNvbnN0cnVjdCxcbiAgTmV4dGpzQmFzZVByb3BzLFxuICBOZXh0anNCYXNlQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuL3Jvb3QtY29uc3RydWN0cy9uZXh0anMtYmFzZS1jb25zdHJ1Y3RcIjtcbmV4cG9ydCB7XG4gIE5leHRqc0J1aWxkLFxuICBOZXh0anNCdWlsZFByb3BzLFxuICBOZXh0anNCdWlsZE92ZXJyaWRlcyxcbiAgQnVpbGRlckltYWdlUHJvcHMsXG4gIFB1YmxpY0RpckVudHJ5LFxufSBmcm9tIFwiLi9uZXh0anMtYnVpbGQvbmV4dGpzLWJ1aWxkXCI7XG5leHBvcnQgeyBOZXh0anNDb21wdXRlQmFzZVByb3BzIH0gZnJvbSBcIi4vbmV4dGpzLWNvbXB1dGUvbmV4dGpzLWNvbXB1dGUtYmFzZS1wcm9wc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzQ29udGFpbmVycyxcbiAgTmV4dGpzQ29udGFpbmVyc092ZXJyaWRlcyxcbiAgTmV4dGpzQ29udGFpbmVyc1Byb3BzLFxufSBmcm9tIFwiLi9uZXh0anMtY29tcHV0ZS9uZXh0anMtY29udGFpbmVyc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzRGlzdHJpYnV0aW9uLFxuICBOZXh0anNEaXN0cmlidXRpb25PdmVycmlkZXMsXG4gIE5leHRqc0Rpc3RyaWJ1dGlvblByb3BzLFxufSBmcm9tIFwiLi9uZXh0anMtZGlzdHJpYnV0aW9uXCI7XG5leHBvcnQge1xuICBOZXh0anNGdW5jdGlvbnMsXG4gIE5leHRqc0Z1bmN0aW9uc092ZXJyaWRlcyxcbiAgTmV4dGpzRnVuY3Rpb25zUHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1jb21wdXRlL25leHRqcy1mdW5jdGlvbnNcIjtcbmV4cG9ydCB7XG4gIE5leHRqc0ZpbGVTeXN0ZW0sXG4gIE5leHRqc0ZpbGVTeXN0ZW1PdmVycmlkZXMsXG4gIE5leHRqc0ZpbGVTeXN0ZW1Qcm9wcyxcbiAgQWxsb3dDb21wdXRlUHJvcHMsXG59IGZyb20gXCIuL25leHRqcy1maWxlLXN5c3RlbVwiO1xuZXhwb3J0IHtcbiAgTmV4dGpzR2xvYmFsQ29udGFpbmVycyxcbiAgTmV4dGpzR2xvYmFsQ29udGFpbmVyc0NvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzR2xvYmFsQ29udGFpbmVyc092ZXJyaWRlcyxcbiAgTmV4dGpzR2xvYmFsQ29udGFpbmVyc1Byb3BzLFxufSBmcm9tIFwiLi9yb290LWNvbnN0cnVjdHMvbmV4dGpzLWdsb2JhbC1jb250YWluZXJzXCI7XG5leHBvcnQge1xuICBOZXh0anNHbG9iYWxGdW5jdGlvbnMsXG4gIE5leHRqc0dsb2JhbEZ1bmN0aW9uc0NvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzR2xvYmFsRnVuY3Rpb25zT3ZlcnJpZGVzLFxuICBOZXh0anNHbG9iYWxGdW5jdGlvbnNQcm9wcyxcbn0gZnJvbSBcIi4vcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1nbG9iYWwtZnVuY3Rpb25zXCI7XG5leHBvcnQge1xuICBOZXh0anNSZWdpb25hbENvbnRhaW5lcnMsXG4gIE5leHRqc1JlZ2lvbmFsQ29udGFpbmVyc0NvbnN0cnVjdE92ZXJyaWRlcyxcbiAgTmV4dGpzUmVnaW9uYWxDb250YWluZXJzT3ZlcnJpZGVzLFxuICBOZXh0anNSZWdpb25hbENvbnRhaW5lcnNQcm9wcyxcbn0gZnJvbSBcIi4vcm9vdC1jb25zdHJ1Y3RzL25leHRqcy1yZWdpb25hbC1jb250YWluZXJzXCI7XG5leHBvcnQge1xuICBOZXh0anNSZWdpb25hbEZ1bmN0aW9ucyxcbiAgTmV4dGpzUmVnaW9uYWxGdW5jdGlvbnNDb25zdHJ1Y3RPdmVycmlkZXMsXG4gIE5leHRqc1JlZ2lvbmFsRnVuY3Rpb25zT3ZlcnJpZGVzLFxuICBOZXh0anNSZWdpb25hbEZ1bmN0aW9uc1Byb3BzLFxufSBmcm9tIFwiLi9yb290LWNvbnN0cnVjdHMvbmV4dGpzLXJlZ2lvbmFsLWZ1bmN0aW9uc1wiO1xuZXhwb3J0IHtcbiAgTmV4dGpzUG9zdERlcGxveSxcbiAgTmV4dGpzUG9zdERlcGxveU92ZXJyaWRlcyxcbiAgTmV4dGpzUG9zdERlcGxveVByb3BzLFxuICBQb3N0RGVwbG95Q3VzdG9tUmVzb3VyY2VQcm9wZXJ0aWVzLFxufSBmcm9tIFwiLi9uZXh0anMtcG9zdC1kZXBsb3lcIjtcbmV4cG9ydCB7XG4gIE5leHRqc1N0YXRpY0Fzc2V0cyxcbiAgTmV4dGpzU3RhdGljQXNzZXRzT3ZlcnJpZGVzLFxuICBOZXh0anNTdGF0aWNBc3NldHNQcm9wcyxcbn0gZnJvbSBcIi4vbmV4dGpzLXN0YXRpYy1hc3NldHNcIjtcbmV4cG9ydCB7IE5leHRqc1ZwYywgTmV4dGpzVnBjT3ZlcnJpZGVzLCBOZXh0anNWcGNQcm9wcyB9IGZyb20gXCIuL25leHRqcy12cGNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzQXNzZXRzRGVwbG95bWVudFByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNBc3NldHNEZXBsb3ltZW50UHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzQnVpbGRQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzQnVpbGRQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxOZXh0anNDb250YWluZXJzUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc0NvbnRhaW5lcnNQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxOZXh0anNEaXN0cmlidXRpb25Qcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsTmV4dGpzRGlzdHJpYnV0aW9uUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzRmlsZVN5c3RlbVByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxOZXh0anNGaWxlU3lzdGVtUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsTmV4dGpzVnBjUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc1ZwY1Byb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VkVGFza0ltYWdlT3B0aW9ucyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsQXBwbGljYXRpb25Mb2FkQmFsYW5jZWRUYXNrSW1hZ2VPcHRpb25zXCI7XG5leHBvcnQgeyBPcHRpb25hbENsb3VkRnJvbnRGdW5jdGlvblByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxDbG91ZEZyb250RnVuY3Rpb25Qcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxDbHVzdGVyUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbENsdXN0ZXJQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxEaXN0cmlidXRpb25Qcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsRGlzdHJpYnV0aW9uUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsRG9ja2VySW1hZ2VBc3NldFByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxEb2NrZXJJbWFnZUFzc2V0UHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsRG9ja2VySW1hZ2VGdW5jdGlvblByb3BzIH0gZnJvbSBcIi4vZ2VuZXJhdGVkLXN0cnVjdHMvT3B0aW9uYWxEb2NrZXJJbWFnZUZ1bmN0aW9uUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsRWRnZUZ1bmN0aW9uUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbEVkZ2VGdW5jdGlvblByb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbEZ1bmN0aW9uUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbEZ1bmN0aW9uUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsRnVuY3Rpb25VcmxQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsRnVuY3Rpb25VcmxQcm9wc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxTM09yaWdpbkJ1Y2tldFdpdGhPQUNQcm9wcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsUzNPcmlnaW5CdWNrZXRXaXRoT0FDUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsVnBjUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbFZwY1Byb3BzXCI7XG5leHBvcnQgeyBPcHRpb25hbEN1c3RvbVJlc291cmNlUHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbEN1c3RvbVJlc291cmNlUHJvcHNcIjtcbmV4cG9ydCB7IE9wdGlvbmFsUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllcyB9IGZyb20gXCIuL2dlbmVyYXRlZC1zdHJ1Y3RzL09wdGlvbmFsUG9zdERlcGxveUN1c3RvbVJlc291cmNlUHJvcGVydGllc1wiO1xuZXhwb3J0IHsgT3B0aW9uYWxOZXh0anNQb3N0RGVwbG95UHJvcHMgfSBmcm9tIFwiLi9nZW5lcmF0ZWQtc3RydWN0cy9PcHRpb25hbE5leHRqc1Bvc3REZXBsb3lQcm9wc1wiO1xuIl19
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { RestApi, MethodOptions, RestApiProps, AwsIntegrationProps, LambdaIntegrationOptions } from "aws-cdk-lib/aws-apigateway";
|
|
2
|
+
import { IVpc } from "aws-cdk-lib/aws-ec2";
|
|
3
|
+
import { IFunction } from "aws-cdk-lib/aws-lambda";
|
|
4
|
+
import { IBucket } from "aws-cdk-lib/aws-s3";
|
|
5
|
+
import { Construct } from "constructs";
|
|
6
|
+
import { PublicDirEntry } from "./nextjs-build/nextjs-build";
|
|
7
|
+
export interface NextjsApiOverrides {
|
|
8
|
+
readonly restApiProps?: RestApiProps;
|
|
9
|
+
readonly staticIntegrationProps?: AwsIntegrationProps;
|
|
10
|
+
readonly s3MethodOptions?: MethodOptions;
|
|
11
|
+
readonly dynamicIntegrationProps?: LambdaIntegrationOptions;
|
|
12
|
+
}
|
|
13
|
+
export interface NextjsApiProps {
|
|
14
|
+
/**
|
|
15
|
+
* Optional base path for the application
|
|
16
|
+
*/
|
|
17
|
+
readonly basePath?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Override props for every construct.
|
|
20
|
+
*/
|
|
21
|
+
readonly overrides?: NextjsApiOverrides;
|
|
22
|
+
/**
|
|
23
|
+
* Path to directory of Next.js app's public directory. Used to add resources
|
|
24
|
+
* to API Gateway REST API for public directory to go directly to S3.
|
|
25
|
+
*/
|
|
26
|
+
readonly publicDirEntries: PublicDirEntry[];
|
|
27
|
+
/**
|
|
28
|
+
* Required if `NextjsRegionalFunctions`. The Lambda function for server-side rendering
|
|
29
|
+
*/
|
|
30
|
+
readonly serverFunction?: IFunction;
|
|
31
|
+
/**
|
|
32
|
+
* The S3 bucket containing static assets
|
|
33
|
+
*/
|
|
34
|
+
readonly staticAssetsBucket: IBucket;
|
|
35
|
+
/**
|
|
36
|
+
* [Future] Required if `NextjsRegionalContainers`. VPC to create VPC Link and ECS Service Discovery
|
|
37
|
+
*/
|
|
38
|
+
readonly vpc?: IVpc;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Creates an API Gateway REST API for Next.js applications
|
|
42
|
+
*/
|
|
43
|
+
export declare class NextjsApi extends Construct {
|
|
44
|
+
/**
|
|
45
|
+
* The API Gateway REST API
|
|
46
|
+
*/
|
|
47
|
+
readonly api: RestApi;
|
|
48
|
+
private readonly baseResource;
|
|
49
|
+
private readonly props;
|
|
50
|
+
private staticIntegrationRole;
|
|
51
|
+
constructor(scope: Construct, id: string, props: NextjsApiProps);
|
|
52
|
+
private validateProps;
|
|
53
|
+
private createRestApi;
|
|
54
|
+
/**
|
|
55
|
+
* Create base resource path if needed. Important if `basePath` is set.
|
|
56
|
+
*/
|
|
57
|
+
private createBaseResource;
|
|
58
|
+
private createStaticIntegrationRole;
|
|
59
|
+
private createStaticIntegrations;
|
|
60
|
+
/**
|
|
61
|
+
* Maps API request to S3 request.
|
|
62
|
+
* @see https://docs.aws.amazon.com/apigateway/latest/developerguide/rest-api-parameter-mapping-sources.html
|
|
63
|
+
* @see https://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-s3.html#api-items-in-folder-as-s3-objects-in-bucket
|
|
64
|
+
*/
|
|
65
|
+
private createS3Integration;
|
|
66
|
+
private getStaticMethodOptions;
|
|
67
|
+
/**
|
|
68
|
+
* Create Lambda Proxy integration for all other routes
|
|
69
|
+
*/
|
|
70
|
+
private createDynamicIntegration;
|
|
71
|
+
}
|