cdk-simplewebsite-deploy 2.0.99 → 2.1.0
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 +159 -59
- package/API.md +96 -30
- package/README.md +182 -9
- package/lib/cdk-simplewebsite-deploy.d.ts +38 -21
- package/lib/cdk-simplewebsite-deploy.js +77 -28
- package/package.json +6 -6
package/.jsii
CHANGED
|
@@ -3925,7 +3925,7 @@
|
|
|
3925
3925
|
"stability": "stable"
|
|
3926
3926
|
},
|
|
3927
3927
|
"homepage": "https://github.com/SnapPetal/cdk-simplewebsite-deploy",
|
|
3928
|
-
"jsiiVersion": "5.
|
|
3928
|
+
"jsiiVersion": "5.8.18 (build f5c30fc)",
|
|
3929
3929
|
"keywords": [
|
|
3930
3930
|
"cdk"
|
|
3931
3931
|
],
|
|
@@ -3940,7 +3940,7 @@
|
|
|
3940
3940
|
},
|
|
3941
3941
|
"name": "cdk-simplewebsite-deploy",
|
|
3942
3942
|
"readme": {
|
|
3943
|
-
"markdown": "[](https://opensource.org/licenses/Apache-2.0)\n\n\n\n# cdk-simplewebsite-deploy\nThis is an AWS CDK Construct to simplify deploying a single-page website using either S3 buckets or CloudFront distributions.\n\n## Installation and Usage\n\n### [CreateBasicSite](https://github.com/snappetal/cdk-simplewebsite-deploy/blob/main/API.md#cdk-cloudfront-deploy-createbasicsite)\n#### Creates a simple website using S3 buckets with a domain hosted in Route 53.\n##### Typescript\n```console\nnpm install cdk-simplewebsite-deploy\n```\n```typescript\nimport * as cdk from '@aws-cdk/core';\nimport { CreateBasicSite } from 'cdk-simplewebsite-deploy';\n\nexport class PipelineStack extends cdk.Stack {\n constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n super(scope, id, props);\n\n new CreateBasicSite(stack, 'test-website', {\n websiteFolder: './src/build',\n indexDoc: 'index.html',\n hostedZone: 'example.com',\n });\n }\n}\n```\n##### C#\n```console\ndotnet add package ThonBecker.CDK.SimpleWebsiteDeploy\n```\n```cs\nusing Amazon.CDK;\nusing ThonBecker.CDK.SimpleWebsiteDeploy;\n\nnamespace SimpleWebsiteDeploy\n{\n public class PipelineStack : Stack\n {\n internal PipelineStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props)\n {\n new CreateBasicSite(scope, \"test-website\", new BasicSiteConfiguration()\n {\n WebsiteFolder = \"./src/build\",\n IndexDoc = \"index.html\",\n HostedZone = \"example.com\",\n });\n }\n }\n}\n```\n##### Java\n```xml\n<dependency>\n\t<groupId>com.thonbecker.simplewebsitedeploy</groupId>\n\t<artifactId>cdk-simplewebsite-deploy</artifactId>\n\t<version>0.4.2</version>\n</dependency>\n```\n```java\npackage com.myorg;\n\nimport software.amazon.awscdk.core.Construct;\nimport software.amazon.awscdk.core.Stack;\nimport software.amazon.awscdk.core.StackProps;\nimport com.thonbecker.simplewebsitedeploy.CreateBasicSite;\n\npublic class MyProjectStack extends Stack {\n public MyProjectStack(final Construct scope, final String id) {\n this(scope, id, null);\n }\n\n public MyProjectStack(final Construct scope, final String id, final StackProps props) {\n super(scope, id, props);\n\n CreateBasicSite.Builder.create(this, \"test-website\")\n \t\t.websiteFolder(\"./src/build\")\n \t\t.indexDoc(\"index.html\")\n \t\t.hostedZone(\"example.com\");\n }\n}\n```\n##### Python\n```console\npip install cdk-simplewebsite-deploy\n```\n```python\nfrom aws_cdk import Stack\nfrom cdk_simplewebsite_deploy import CreateBasicSite\nfrom constructs import Construct\n\nclass MyProjectStack(Stack):\n\n def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:\n super().__init__(scope, construct_id, **kwargs)\n\n CreateBasicSite(self, 'test-website', website_folder='./src/build',\n index_doc='index.html',\n hosted_zone='example.com')\n```\n### [CreateCloudfrontSite](https://github.com/snappetal/cdk-simplewebsite-deploy/blob/main/API.md#cdk-cloudfront-deploy-createcloudfrontsite)\n#### Creates a simple website using a CloudFront distribution with a domain hosted in Route 53.\n##### Typescript\n```console\nnpm install cdk-simplewebsite-deploy\n```\n```typescript\nimport * as cdk from '@aws-cdk/core';\nimport { CreateCloudfrontSite } from 'cdk-simplewebsite-deploy';\n\nexport class PipelineStack extends cdk.Stack {\n constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {\n super(scope, id, props);\n\n new CreateCloudfrontSite(stack, 'test-website', {\n websiteFolder: './src/dist',\n indexDoc: 'index.html',\n hostedZone: 'example.com',\n subDomain: 'www.example.com',\n });\n }\n}\n```\n##### C#\n```console\ndotnet add package ThonBecker.CDK.SimpleWebsiteDeploy\n```\n```cs\nusing Amazon.CDK;\nusing ThonBecker.CDK.SimpleWebsiteDeploy;\n\nnamespace SimpleWebsiteDeploy\n{\n public class PipelineStack : Stack\n {\n internal PipelineStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props)\n {\n new CreateCloudfrontSite(scope, \"test-website\", new CloudfrontSiteConfiguration()\n {\n WebsiteFolder = \"./src/build\",\n IndexDoc = \"index.html\",\n HostedZone = \"example.com\",\n SubDomain = \"www.example.com\",\n });\n }\n }\n}\n```\n##### Java\n```xml\n<dependency>\n\t<groupId>com.thonbecker.simplewebsitedeploy</groupId>\n\t<artifactId>cdk-simplewebsite-deploy</artifactId>\n\t<version>0.4.2</version>\n</dependency>\n```\n```java\npackage com.myorg;\n\nimport software.amazon.awscdk.core.Construct;\nimport software.amazon.awscdk.core.Stack;\nimport software.amazon.awscdk.core.StackProps;\nimport com.thonbecker.simplewebsitedeploy.CreateCloudfrontSite;\n\npublic class MyProjectStack extends Stack {\n public MyProjectStack(final Construct scope, final String id) {\n this(scope, id, null);\n }\n\n public MyProjectStack(final Construct scope, final String id, final StackProps props) {\n super(scope, id, props);\n\n CreateCloudfrontSite.Builder.create(this, \"test-website\")\n \t\t.websiteFolder(\"./src/build\")\n \t\t.indexDoc(\"index.html\")\n \t\t.hostedZone(\"example.com\")\n \t\t.subDomain(\"www.example.com\");\n }\n}\n```\n##### Python\n```console\npip install cdk-simplewebsite-deploy\n```\n```python\nfrom aws_cdk import core\nfrom cdk_simplewebsite_deploy import CreateCloudfrontSite\n\n\nclass MyProjectStack(core.Stack):\n\n def __init__(self, scope: core.Construct, construct_id: str, **kwargs) -> None:\n super().__init__(scope, construct_id, **kwargs)\n\n CreateCloudfrontSite(self, 'test-website', website_folder='./src/build',\n index_doc='index.html',\n hosted_zone='example.com',\n sub_domain='www.example.com')\n```\n\n## License\n\nDistributed under the [Apache-2.0](./LICENSE) license.\n"
|
|
3943
|
+
"markdown": "[](https://opensource.org/licenses/Apache-2.0)\n\n\n\n# cdk-simplewebsite-deploy\nThis is an AWS CDK Construct to simplify deploying a single-page website using either S3 buckets or CloudFront distributions with enhanced security, performance, and monitoring capabilities.\n\n## Installation and Usage\n\n### [CreateBasicSite](https://github.com/snappetal/cdk-simplewebsite-deploy/blob/main/API.md#cdk-cloudfront-deploy-createbasicsite)\n#### Creates a simple website using S3 buckets with a domain hosted in Route 53.\n##### Typescript\n```console\nyarn add cdk-simplewebsite-deploy\n```\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport { CreateBasicSite } from 'cdk-simplewebsite-deploy';\nimport { Construct } from 'constructs';\n\nexport class PipelineStack extends cdk.Stack {\n constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n super(scope, id, props);\n\n new CreateBasicSite(this, 'test-website', {\n websiteFolder: './src/build',\n indexDoc: 'index.html',\n hostedZone: 'example.com',\n });\n }\n}\n```\n##### C#\n```console\ndotnet add package ThonBecker.CDK.SimpleWebsiteDeploy\n```\n```cs\nusing Amazon.CDK;\nusing ThonBecker.CDK.SimpleWebsiteDeploy;\n\nnamespace SimpleWebsiteDeploy\n{\n public class PipelineStack : Stack\n {\n internal PipelineStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props)\n {\n new CreateBasicSite(scope, \"test-website\", new BasicSiteConfiguration()\n {\n WebsiteFolder = \"./src/build\",\n IndexDoc = \"index.html\",\n HostedZone = \"example.com\",\n });\n }\n }\n}\n```\n##### Java\n```xml\n<dependency>\n\t<groupId>com.thonbecker.simplewebsitedeploy</groupId>\n\t<artifactId>cdk-simplewebsite-deploy</artifactId>\n\t<version>0.4.2</version>\n</dependency>\n```\n```java\npackage com.myorg;\n\nimport software.amazon.awscdk.core.Construct;\nimport software.amazon.awscdk.core.Stack;\nimport software.amazon.awscdk.core.StackProps;\nimport com.thonbecker.simplewebsitedeploy.CreateBasicSite;\n\npublic class MyProjectStack extends Stack {\n public MyProjectStack(final Construct scope, final String id) {\n this(scope, id, null);\n }\n\n public MyProjectStack(final Construct scope, final String id, final StackProps props) {\n super(scope, id, props);\n\n CreateBasicSite.Builder.create(this, \"test-website\")\n \t\t.websiteFolder(\"./src/build\")\n \t\t.indexDoc(\"index.html\")\n \t\t.hostedZone(\"example.com\");\n }\n}\n```\n##### Python\n```console\npip install cdk-simplewebsite-deploy\n```\n```python\nfrom aws_cdk import Stack\nfrom cdk_simplewebsite_deploy import CreateBasicSite\nfrom constructs import Construct\n\nclass MyProjectStack(Stack):\n\n def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:\n super().__init__(scope, construct_id, **kwargs)\n\n CreateBasicSite(self, 'test-website', website_folder='./src/build',\n index_doc='index.html',\n hosted_zone='example.com')\n```\n### [CreateCloudfrontSite](https://github.com/snappetal/cdk-simplewebsite-deploy/blob/main/API.md#cdk-cloudfront-deploy-createcloudfrontsite)\n#### Creates a simple website using a CloudFront distribution with a domain hosted in Route 53.\n##### Typescript\n```console\nyarn add cdk-simplewebsite-deploy\n```\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport { CreateCloudfrontSite } from 'cdk-simplewebsite-deploy';\nimport { Construct } from 'constructs';\n\nexport class PipelineStack extends cdk.Stack {\n constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n super(scope, id, props);\n\n new CreateCloudfrontSite(this, 'test-website', {\n websiteFolder: './src/dist',\n indexDoc: 'index.html',\n hostedZone: 'example.com',\n subDomain: 'www.example.com',\n });\n }\n}\n```\n##### C#\n```console\ndotnet add package ThonBecker.CDK.SimpleWebsiteDeploy\n```\n```cs\nusing Amazon.CDK;\nusing ThonBecker.CDK.SimpleWebsiteDeploy;\n\nnamespace SimpleWebsiteDeploy\n{\n public class PipelineStack : Stack\n {\n internal PipelineStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props)\n {\n new CreateCloudfrontSite(scope, \"test-website\", new CloudfrontSiteConfiguration()\n {\n WebsiteFolder = \"./src/build\",\n IndexDoc = \"index.html\",\n HostedZone = \"example.com\",\n SubDomain = \"www.example.com\",\n });\n }\n }\n}\n```\n##### Java\n```xml\n<dependency>\n\t<groupId>com.thonbecker.simplewebsitedeploy</groupId>\n\t<artifactId>cdk-simplewebsite-deploy</artifactId>\n\t<version>0.4.2</version>\n</dependency>\n```\n```java\npackage com.myorg;\n\nimport software.amazon.awscdk.core.Construct;\nimport software.amazon.awscdk.core.Stack;\nimport software.amazon.awscdk.core.StackProps;\nimport com.thonbecker.simplewebsitedeploy.CreateCloudfrontSite;\n\npublic class MyProjectStack extends Stack {\n public MyProjectStack(final Construct scope, final String id) {\n this(scope, id, null);\n }\n\n public MyProjectStack(final Construct scope, final String id, final StackProps props) {\n super(scope, id, props);\n\n CreateCloudfrontSite.Builder.create(this, \"test-website\")\n \t\t.websiteFolder(\"./src/build\")\n \t\t.indexDoc(\"index.html\")\n \t\t.hostedZone(\"example.com\")\n \t\t.subDomain(\"www.example.com\");\n }\n}\n```\n##### Python\n```console\npip install cdk-simplewebsite-deploy\n```\n```python\nfrom aws_cdk import core\nfrom cdk_simplewebsite_deploy import CreateCloudfrontSite\n\n\nclass MyProjectStack(core.Stack):\n\n def __init__(self, scope: core.Construct, construct_id: str, **kwargs) -> None:\n super().__init__(scope, construct_id, **kwargs)\n\n CreateCloudfrontSite(self, 'test-website', website_folder='./src/build',\n index_doc='index.html',\n hosted_zone='example.com',\n sub_domain='www.example.com')\n```\n\n## 🚀 Enhanced Features\n\nThe `CreateCloudfrontSite` construct now includes several optional advanced features for improved security, performance, and monitoring:\n\n### Security Headers\nEnable comprehensive security headers including HSTS, X-Frame-Options, Content-Type-Options, and XSS protection:\n\n```typescript\nnew CreateCloudfrontSite(this, 'secure-website', {\n websiteFolder: './src/dist',\n indexDoc: 'index.html',\n hostedZone: 'example.com',\n enableSecurityHeaders: true, // 🔒 Adds security headers\n});\n```\n\n### IPv6 Support\nEnable IPv6 connectivity with AAAA records:\n\n```typescript\nnew CreateCloudfrontSite(this, 'ipv6-website', {\n websiteFolder: './src/dist',\n indexDoc: 'index.html',\n hostedZone: 'example.com',\n enableIpv6: true, // 🌐 Adds AAAA records for IPv6\n});\n```\n\n### Access Logging\nEnable CloudFront access logging for analytics and monitoring:\n\n```typescript\nnew CreateCloudfrontSite(this, 'logged-website', {\n websiteFolder: './src/dist',\n indexDoc: 'index.html',\n hostedZone: 'example.com',\n enableLogging: true, // 📊 Enables access logging\n // logsBucket: myCustomBucket, // Optional: use existing bucket\n});\n```\n\n### WAF Integration\nIntegrate with AWS WAF for enhanced security:\n\n```typescript\nnew CreateCloudfrontSite(this, 'waf-protected-website', {\n websiteFolder: './src/dist',\n indexDoc: 'index.html',\n hostedZone: 'example.com',\n webAclId: 'arn:aws:wafv2:us-east-1:123456789012:global/webacl/my-web-acl/12345678-1234-1234-1234-123456789012', // 🛡️ WAF protection\n});\n```\n\n### Custom Cache Behaviors\nAdd custom cache behaviors for different content types:\n\n```typescript\nimport * as cloudfront from 'aws-cdk-lib/aws-cloudfront';\n\nnew CreateCloudfrontSite(this, 'optimized-website', {\n websiteFolder: './src/dist',\n indexDoc: 'index.html',\n hostedZone: 'example.com',\n additionalBehaviors: {\n '/api/*': {\n origin: myApiOrigin,\n allowedMethods: cloudfront.AllowedMethods.ALLOW_ALL,\n cachePolicy: cloudfront.CachePolicy.CACHING_DISABLED,\n },\n '/static/*': {\n cachePolicy: cloudfront.CachePolicy.CACHING_OPTIMIZED_FOR_UNCOMPRESSED_OBJECTS,\n },\n }, // ⚡ Custom caching strategies\n});\n```\n\n### Custom Error Responses\nDefine custom error handling:\n\n```typescript\nnew CreateCloudfrontSite(this, 'custom-errors-website', {\n websiteFolder: './src/dist',\n indexDoc: 'index.html',\n hostedZone: 'example.com',\n customErrorResponses: [\n {\n httpStatus: 404,\n responseHttpStatus: 200,\n responsePagePath: '/index.html', // SPA routing\n },\n {\n httpStatus: 403,\n responseHttpStatus: 200,\n responsePagePath: '/index.html',\n },\n ], // 🎯 Custom error handling\n});\n```\n\n### Complete Example with All Features\n```typescript\nimport * as cdk from 'aws-cdk-lib';\nimport * as cloudfront from 'aws-cdk-lib/aws-cloudfront';\nimport { CreateCloudfrontSite } from 'cdk-simplewebsite-deploy';\nimport { Construct } from 'constructs';\n\nexport class AdvancedWebsiteStack extends cdk.Stack {\n constructor(scope: Construct, id: string, props?: cdk.StackProps) {\n super(scope, id, props);\n\n new CreateCloudfrontSite(this, 'advanced-website', {\n websiteFolder: './dist',\n indexDoc: 'index.html',\n errorDoc: 'error.html',\n hostedZone: 'example.com',\n subDomain: 'www.example.com',\n\n // Performance & Security\n priceClass: cloudfront.PriceClass.PRICE_CLASS_ALL,\n enableSecurityHeaders: true,\n enableIpv6: true,\n\n // Monitoring & Protection\n enableLogging: true,\n webAclId: 'arn:aws:wafv2:us-east-1:123456789012:global/webacl/my-web-acl/12345678-1234-1234-1234-123456789012',\n\n // Custom Behaviors\n additionalBehaviors: {\n '/api/*': {\n allowedMethods: cloudfront.AllowedMethods.ALLOW_ALL,\n cachePolicy: cloudfront.CachePolicy.CACHING_DISABLED,\n },\n },\n\n // SPA Error Handling\n customErrorResponses: [\n {\n httpStatus: 404,\n responseHttpStatus: 200,\n responsePagePath: '/index.html',\n },\n ],\n });\n }\n}\n```\n\n## 🎯 Key Benefits\n\n### 🔒 **Enhanced Security**\n- **Security Headers**: Automatic HSTS, X-Frame-Options, Content-Type-Options, and XSS protection\n- **WAF Integration**: Support for AWS WAF Web ACLs for advanced threat protection\n- **Origin Access Control**: Modern S3 bucket protection (replaces deprecated OAI)\n\n### ⚡ **Optimized Performance**\n- **Smart Caching**: Optimized cache policies for better performance\n- **HTTP/2 & HTTP/3**: Latest protocol support for faster loading\n- **Global Edge Locations**: Configurable price classes for worldwide distribution\n- **IPv6 Support**: Dual-stack networking for better connectivity\n\n### 📊 **Comprehensive Monitoring**\n- **Access Logging**: CloudFront access logs for analytics\n- **Custom Error Handling**: Flexible error response configuration\n- **SPA Support**: Built-in single-page application routing support\n\n### 🚀 **Developer Experience**\n- **Backward Compatible**: All existing configurations continue to work\n- **Type Safe**: Full TypeScript support with comprehensive interfaces\n- **CDK v2 Ready**: Built for the latest AWS CDK version\n- **Multi-Language**: Support for TypeScript, Python, Java, and C#\n\n## License\n\nDistributed under the [Apache-2.0](./LICENSE) license.\n"
|
|
3944
3944
|
},
|
|
3945
3945
|
"repository": {
|
|
3946
3946
|
"type": "git",
|
|
@@ -3978,7 +3978,7 @@
|
|
|
3978
3978
|
"kind": "interface",
|
|
3979
3979
|
"locationInModule": {
|
|
3980
3980
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
3981
|
-
"line":
|
|
3981
|
+
"line": 11
|
|
3982
3982
|
},
|
|
3983
3983
|
"name": "BasicSiteConfiguration",
|
|
3984
3984
|
"properties": [
|
|
@@ -3991,7 +3991,7 @@
|
|
|
3991
3991
|
"immutable": true,
|
|
3992
3992
|
"locationInModule": {
|
|
3993
3993
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
3994
|
-
"line":
|
|
3994
|
+
"line": 28
|
|
3995
3995
|
},
|
|
3996
3996
|
"name": "hostedZone",
|
|
3997
3997
|
"type": {
|
|
@@ -4007,7 +4007,7 @@
|
|
|
4007
4007
|
"immutable": true,
|
|
4008
4008
|
"locationInModule": {
|
|
4009
4009
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4010
|
-
"line":
|
|
4010
|
+
"line": 19
|
|
4011
4011
|
},
|
|
4012
4012
|
"name": "indexDoc",
|
|
4013
4013
|
"type": {
|
|
@@ -4023,7 +4023,7 @@
|
|
|
4023
4023
|
"immutable": true,
|
|
4024
4024
|
"locationInModule": {
|
|
4025
4025
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4026
|
-
"line":
|
|
4026
|
+
"line": 15
|
|
4027
4027
|
},
|
|
4028
4028
|
"name": "websiteFolder",
|
|
4029
4029
|
"type": {
|
|
@@ -4040,7 +4040,7 @@
|
|
|
4040
4040
|
"immutable": true,
|
|
4041
4041
|
"locationInModule": {
|
|
4042
4042
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4043
|
-
"line":
|
|
4043
|
+
"line": 24
|
|
4044
4044
|
},
|
|
4045
4045
|
"name": "errorDoc",
|
|
4046
4046
|
"optional": true,
|
|
@@ -4061,7 +4061,7 @@
|
|
|
4061
4061
|
"kind": "interface",
|
|
4062
4062
|
"locationInModule": {
|
|
4063
4063
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4064
|
-
"line":
|
|
4064
|
+
"line": 31
|
|
4065
4065
|
},
|
|
4066
4066
|
"name": "CloudfrontSiteConfiguration",
|
|
4067
4067
|
"properties": [
|
|
@@ -4074,7 +4074,7 @@
|
|
|
4074
4074
|
"immutable": true,
|
|
4075
4075
|
"locationInModule": {
|
|
4076
4076
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4077
|
-
"line":
|
|
4077
|
+
"line": 48
|
|
4078
4078
|
},
|
|
4079
4079
|
"name": "hostedZone",
|
|
4080
4080
|
"type": {
|
|
@@ -4090,7 +4090,7 @@
|
|
|
4090
4090
|
"immutable": true,
|
|
4091
4091
|
"locationInModule": {
|
|
4092
4092
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4093
|
-
"line":
|
|
4093
|
+
"line": 39
|
|
4094
4094
|
},
|
|
4095
4095
|
"name": "indexDoc",
|
|
4096
4096
|
"type": {
|
|
@@ -4106,13 +4106,59 @@
|
|
|
4106
4106
|
"immutable": true,
|
|
4107
4107
|
"locationInModule": {
|
|
4108
4108
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4109
|
-
"line":
|
|
4109
|
+
"line": 35
|
|
4110
4110
|
},
|
|
4111
4111
|
"name": "websiteFolder",
|
|
4112
4112
|
"type": {
|
|
4113
4113
|
"primitive": "string"
|
|
4114
4114
|
}
|
|
4115
4115
|
},
|
|
4116
|
+
{
|
|
4117
|
+
"abstract": true,
|
|
4118
|
+
"docs": {
|
|
4119
|
+
"default": "- No additional cache behaviors.",
|
|
4120
|
+
"stability": "stable",
|
|
4121
|
+
"summary": "Optional cache behaviors for different path patterns."
|
|
4122
|
+
},
|
|
4123
|
+
"immutable": true,
|
|
4124
|
+
"locationInModule": {
|
|
4125
|
+
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4126
|
+
"line": 75
|
|
4127
|
+
},
|
|
4128
|
+
"name": "additionalBehaviors",
|
|
4129
|
+
"optional": true,
|
|
4130
|
+
"type": {
|
|
4131
|
+
"collection": {
|
|
4132
|
+
"elementtype": {
|
|
4133
|
+
"fqn": "aws-cdk-lib.aws_cloudfront.BehaviorOptions"
|
|
4134
|
+
},
|
|
4135
|
+
"kind": "map"
|
|
4136
|
+
}
|
|
4137
|
+
}
|
|
4138
|
+
},
|
|
4139
|
+
{
|
|
4140
|
+
"abstract": true,
|
|
4141
|
+
"docs": {
|
|
4142
|
+
"default": "- Default error responses based on errorDoc setting.",
|
|
4143
|
+
"stability": "stable",
|
|
4144
|
+
"summary": "Custom error responses for different HTTP status codes."
|
|
4145
|
+
},
|
|
4146
|
+
"immutable": true,
|
|
4147
|
+
"locationInModule": {
|
|
4148
|
+
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4149
|
+
"line": 90
|
|
4150
|
+
},
|
|
4151
|
+
"name": "customErrorResponses",
|
|
4152
|
+
"optional": true,
|
|
4153
|
+
"type": {
|
|
4154
|
+
"collection": {
|
|
4155
|
+
"elementtype": {
|
|
4156
|
+
"fqn": "aws-cdk-lib.aws_cloudfront.ErrorResponse"
|
|
4157
|
+
},
|
|
4158
|
+
"kind": "array"
|
|
4159
|
+
}
|
|
4160
|
+
}
|
|
4161
|
+
},
|
|
4116
4162
|
{
|
|
4117
4163
|
"abstract": true,
|
|
4118
4164
|
"docs": {
|
|
@@ -4124,7 +4170,7 @@
|
|
|
4124
4170
|
"immutable": true,
|
|
4125
4171
|
"locationInModule": {
|
|
4126
4172
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4127
|
-
"line":
|
|
4173
|
+
"line": 56
|
|
4128
4174
|
},
|
|
4129
4175
|
"name": "domain",
|
|
4130
4176
|
"optional": true,
|
|
@@ -4132,6 +4178,60 @@
|
|
|
4132
4178
|
"primitive": "string"
|
|
4133
4179
|
}
|
|
4134
4180
|
},
|
|
4181
|
+
{
|
|
4182
|
+
"abstract": true,
|
|
4183
|
+
"docs": {
|
|
4184
|
+
"default": "false - No IPv6 support.",
|
|
4185
|
+
"stability": "stable",
|
|
4186
|
+
"summary": "Enable IPv6 support with AAAA records."
|
|
4187
|
+
},
|
|
4188
|
+
"immutable": true,
|
|
4189
|
+
"locationInModule": {
|
|
4190
|
+
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4191
|
+
"line": 85
|
|
4192
|
+
},
|
|
4193
|
+
"name": "enableIpv6",
|
|
4194
|
+
"optional": true,
|
|
4195
|
+
"type": {
|
|
4196
|
+
"primitive": "boolean"
|
|
4197
|
+
}
|
|
4198
|
+
},
|
|
4199
|
+
{
|
|
4200
|
+
"abstract": true,
|
|
4201
|
+
"docs": {
|
|
4202
|
+
"default": "false - No access logging.",
|
|
4203
|
+
"stability": "stable",
|
|
4204
|
+
"summary": "Enable CloudFront access logging."
|
|
4205
|
+
},
|
|
4206
|
+
"immutable": true,
|
|
4207
|
+
"locationInModule": {
|
|
4208
|
+
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4209
|
+
"line": 95
|
|
4210
|
+
},
|
|
4211
|
+
"name": "enableLogging",
|
|
4212
|
+
"optional": true,
|
|
4213
|
+
"type": {
|
|
4214
|
+
"primitive": "boolean"
|
|
4215
|
+
}
|
|
4216
|
+
},
|
|
4217
|
+
{
|
|
4218
|
+
"abstract": true,
|
|
4219
|
+
"docs": {
|
|
4220
|
+
"default": "false - No security headers policy applied.",
|
|
4221
|
+
"stability": "stable",
|
|
4222
|
+
"summary": "Enable response headers policy for security headers."
|
|
4223
|
+
},
|
|
4224
|
+
"immutable": true,
|
|
4225
|
+
"locationInModule": {
|
|
4226
|
+
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4227
|
+
"line": 80
|
|
4228
|
+
},
|
|
4229
|
+
"name": "enableSecurityHeaders",
|
|
4230
|
+
"optional": true,
|
|
4231
|
+
"type": {
|
|
4232
|
+
"primitive": "boolean"
|
|
4233
|
+
}
|
|
4234
|
+
},
|
|
4135
4235
|
{
|
|
4136
4236
|
"abstract": true,
|
|
4137
4237
|
"docs": {
|
|
@@ -4142,7 +4242,7 @@
|
|
|
4142
4242
|
"immutable": true,
|
|
4143
4243
|
"locationInModule": {
|
|
4144
4244
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4145
|
-
"line":
|
|
4245
|
+
"line": 44
|
|
4146
4246
|
},
|
|
4147
4247
|
"name": "errorDoc",
|
|
4148
4248
|
"optional": true,
|
|
@@ -4150,6 +4250,25 @@
|
|
|
4150
4250
|
"primitive": "string"
|
|
4151
4251
|
}
|
|
4152
4252
|
},
|
|
4253
|
+
{
|
|
4254
|
+
"abstract": true,
|
|
4255
|
+
"docs": {
|
|
4256
|
+
"default": "- New bucket created if logging is enabled.",
|
|
4257
|
+
"remarks": "If not provided and logging is enabled, a new bucket will be created.",
|
|
4258
|
+
"stability": "stable",
|
|
4259
|
+
"summary": "S3 bucket for CloudFront access logs."
|
|
4260
|
+
},
|
|
4261
|
+
"immutable": true,
|
|
4262
|
+
"locationInModule": {
|
|
4263
|
+
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4264
|
+
"line": 100
|
|
4265
|
+
},
|
|
4266
|
+
"name": "logsBucket",
|
|
4267
|
+
"optional": true,
|
|
4268
|
+
"type": {
|
|
4269
|
+
"fqn": "aws-cdk-lib.aws_s3.IBucket"
|
|
4270
|
+
}
|
|
4271
|
+
},
|
|
4153
4272
|
{
|
|
4154
4273
|
"abstract": true,
|
|
4155
4274
|
"docs": {
|
|
@@ -4161,12 +4280,12 @@
|
|
|
4161
4280
|
"immutable": true,
|
|
4162
4281
|
"locationInModule": {
|
|
4163
4282
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4164
|
-
"line":
|
|
4283
|
+
"line": 70
|
|
4165
4284
|
},
|
|
4166
4285
|
"name": "priceClass",
|
|
4167
4286
|
"optional": true,
|
|
4168
4287
|
"type": {
|
|
4169
|
-
"fqn": "cdk-
|
|
4288
|
+
"fqn": "aws-cdk-lib.aws_cloudfront.PriceClass"
|
|
4170
4289
|
}
|
|
4171
4290
|
},
|
|
4172
4291
|
{
|
|
@@ -4180,13 +4299,31 @@
|
|
|
4180
4299
|
"immutable": true,
|
|
4181
4300
|
"locationInModule": {
|
|
4182
4301
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4183
|
-
"line":
|
|
4302
|
+
"line": 64
|
|
4184
4303
|
},
|
|
4185
4304
|
"name": "subDomain",
|
|
4186
4305
|
"optional": true,
|
|
4187
4306
|
"type": {
|
|
4188
4307
|
"primitive": "string"
|
|
4189
4308
|
}
|
|
4309
|
+
},
|
|
4310
|
+
{
|
|
4311
|
+
"abstract": true,
|
|
4312
|
+
"docs": {
|
|
4313
|
+
"default": "- No WAF integration.",
|
|
4314
|
+
"stability": "stable",
|
|
4315
|
+
"summary": "Optional WAF Web ACL ARN for enhanced security."
|
|
4316
|
+
},
|
|
4317
|
+
"immutable": true,
|
|
4318
|
+
"locationInModule": {
|
|
4319
|
+
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4320
|
+
"line": 105
|
|
4321
|
+
},
|
|
4322
|
+
"name": "webAclId",
|
|
4323
|
+
"optional": true,
|
|
4324
|
+
"type": {
|
|
4325
|
+
"primitive": "string"
|
|
4326
|
+
}
|
|
4190
4327
|
}
|
|
4191
4328
|
],
|
|
4192
4329
|
"symbolId": "src/cdk-simplewebsite-deploy:CloudfrontSiteConfiguration"
|
|
@@ -4204,7 +4341,7 @@
|
|
|
4204
4341
|
},
|
|
4205
4342
|
"locationInModule": {
|
|
4206
4343
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4207
|
-
"line":
|
|
4344
|
+
"line": 109
|
|
4208
4345
|
},
|
|
4209
4346
|
"parameters": [
|
|
4210
4347
|
{
|
|
@@ -4230,7 +4367,7 @@
|
|
|
4230
4367
|
"kind": "class",
|
|
4231
4368
|
"locationInModule": {
|
|
4232
4369
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4233
|
-
"line":
|
|
4370
|
+
"line": 108
|
|
4234
4371
|
},
|
|
4235
4372
|
"name": "CreateBasicSite",
|
|
4236
4373
|
"symbolId": "src/cdk-simplewebsite-deploy:CreateBasicSite"
|
|
@@ -4248,7 +4385,7 @@
|
|
|
4248
4385
|
},
|
|
4249
4386
|
"locationInModule": {
|
|
4250
4387
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4251
|
-
"line":
|
|
4388
|
+
"line": 174
|
|
4252
4389
|
},
|
|
4253
4390
|
"parameters": [
|
|
4254
4391
|
{
|
|
@@ -4274,49 +4411,12 @@
|
|
|
4274
4411
|
"kind": "class",
|
|
4275
4412
|
"locationInModule": {
|
|
4276
4413
|
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4277
|
-
"line":
|
|
4414
|
+
"line": 173
|
|
4278
4415
|
},
|
|
4279
4416
|
"name": "CreateCloudfrontSite",
|
|
4280
4417
|
"symbolId": "src/cdk-simplewebsite-deploy:CreateCloudfrontSite"
|
|
4281
|
-
},
|
|
4282
|
-
"cdk-simplewebsite-deploy.PriceClass": {
|
|
4283
|
-
"assembly": "cdk-simplewebsite-deploy",
|
|
4284
|
-
"docs": {
|
|
4285
|
-
"stability": "stable"
|
|
4286
|
-
},
|
|
4287
|
-
"fqn": "cdk-simplewebsite-deploy.PriceClass",
|
|
4288
|
-
"kind": "enum",
|
|
4289
|
-
"locationInModule": {
|
|
4290
|
-
"filename": "src/cdk-simplewebsite-deploy.ts",
|
|
4291
|
-
"line": 13
|
|
4292
|
-
},
|
|
4293
|
-
"members": [
|
|
4294
|
-
{
|
|
4295
|
-
"docs": {
|
|
4296
|
-
"stability": "stable",
|
|
4297
|
-
"summary": "USA, Canada, Europe, & Israel."
|
|
4298
|
-
},
|
|
4299
|
-
"name": "PRICE_CLASS_100"
|
|
4300
|
-
},
|
|
4301
|
-
{
|
|
4302
|
-
"docs": {
|
|
4303
|
-
"stability": "stable",
|
|
4304
|
-
"summary": "PRICE_CLASS_100 + South Africa, Kenya, Middle East, Japan, Singapore, South Korea, Taiwan, Hong Kong, & Philippines."
|
|
4305
|
-
},
|
|
4306
|
-
"name": "PRICE_CLASS_200"
|
|
4307
|
-
},
|
|
4308
|
-
{
|
|
4309
|
-
"docs": {
|
|
4310
|
-
"stability": "stable",
|
|
4311
|
-
"summary": "All locations."
|
|
4312
|
-
},
|
|
4313
|
-
"name": "PRICE_CLASS_ALL"
|
|
4314
|
-
}
|
|
4315
|
-
],
|
|
4316
|
-
"name": "PriceClass",
|
|
4317
|
-
"symbolId": "src/cdk-simplewebsite-deploy:PriceClass"
|
|
4318
4418
|
}
|
|
4319
4419
|
},
|
|
4320
|
-
"version": "2.0
|
|
4321
|
-
"fingerprint": "
|
|
4420
|
+
"version": "2.1.0",
|
|
4421
|
+
"fingerprint": "X8YFDSr3LphBuNynBi0VoZMy3MKor9DzbIVlqs7i2vc="
|
|
4322
4422
|
}
|
package/API.md
CHANGED
|
@@ -289,10 +289,17 @@ const cloudfrontSiteConfiguration: CloudfrontSiteConfiguration = { ... }
|
|
|
289
289
|
| <code><a href="#cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.hostedZone">hostedZone</a></code> | <code>string</code> | Hosted Zone used to create the DNS record for the website. |
|
|
290
290
|
| <code><a href="#cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.indexDoc">indexDoc</a></code> | <code>string</code> | The index document of the website. |
|
|
291
291
|
| <code><a href="#cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.websiteFolder">websiteFolder</a></code> | <code>string</code> | Local path to the website folder you want to deploy on S3. |
|
|
292
|
+
| <code><a href="#cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.additionalBehaviors">additionalBehaviors</a></code> | <code>{[ key: string ]: aws-cdk-lib.aws_cloudfront.BehaviorOptions}</code> | Optional cache behaviors for different path patterns. |
|
|
293
|
+
| <code><a href="#cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.customErrorResponses">customErrorResponses</a></code> | <code>aws-cdk-lib.aws_cloudfront.ErrorResponse[]</code> | Custom error responses for different HTTP status codes. |
|
|
292
294
|
| <code><a href="#cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.domain">domain</a></code> | <code>string</code> | Used to deploy a Cloudfront site with a single domain. |
|
|
295
|
+
| <code><a href="#cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.enableIpv6">enableIpv6</a></code> | <code>boolean</code> | Enable IPv6 support with AAAA records. |
|
|
296
|
+
| <code><a href="#cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.enableLogging">enableLogging</a></code> | <code>boolean</code> | Enable CloudFront access logging. |
|
|
297
|
+
| <code><a href="#cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.enableSecurityHeaders">enableSecurityHeaders</a></code> | <code>boolean</code> | Enable response headers policy for security headers. |
|
|
293
298
|
| <code><a href="#cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.errorDoc">errorDoc</a></code> | <code>string</code> | The error document of the website. |
|
|
294
|
-
| <code><a href="#cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.
|
|
299
|
+
| <code><a href="#cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.logsBucket">logsBucket</a></code> | <code>aws-cdk-lib.aws_s3.IBucket</code> | S3 bucket for CloudFront access logs. |
|
|
300
|
+
| <code><a href="#cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.priceClass">priceClass</a></code> | <code>aws-cdk-lib.aws_cloudfront.PriceClass</code> | The price class determines how many edge locations CloudFront will use for your distribution. |
|
|
295
301
|
| <code><a href="#cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.subDomain">subDomain</a></code> | <code>string</code> | The subdomain name you want to deploy. |
|
|
302
|
+
| <code><a href="#cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.webAclId">webAclId</a></code> | <code>string</code> | Optional WAF Web ACL ARN for enhanced security. |
|
|
296
303
|
|
|
297
304
|
---
|
|
298
305
|
|
|
@@ -332,6 +339,32 @@ Local path to the website folder you want to deploy on S3.
|
|
|
332
339
|
|
|
333
340
|
---
|
|
334
341
|
|
|
342
|
+
##### `additionalBehaviors`<sup>Optional</sup> <a name="additionalBehaviors" id="cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.additionalBehaviors"></a>
|
|
343
|
+
|
|
344
|
+
```typescript
|
|
345
|
+
public readonly additionalBehaviors: {[ key: string ]: BehaviorOptions};
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
- *Type:* {[ key: string ]: aws-cdk-lib.aws_cloudfront.BehaviorOptions}
|
|
349
|
+
- *Default:* No additional cache behaviors.
|
|
350
|
+
|
|
351
|
+
Optional cache behaviors for different path patterns.
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
##### `customErrorResponses`<sup>Optional</sup> <a name="customErrorResponses" id="cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.customErrorResponses"></a>
|
|
356
|
+
|
|
357
|
+
```typescript
|
|
358
|
+
public readonly customErrorResponses: ErrorResponse[];
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
- *Type:* aws-cdk-lib.aws_cloudfront.ErrorResponse[]
|
|
362
|
+
- *Default:* Default error responses based on errorDoc setting.
|
|
363
|
+
|
|
364
|
+
Custom error responses for different HTTP status codes.
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
335
368
|
##### `domain`<sup>Optional</sup> <a name="domain" id="cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.domain"></a>
|
|
336
369
|
|
|
337
370
|
```typescript
|
|
@@ -349,6 +382,45 @@ an error will be thrown.
|
|
|
349
382
|
|
|
350
383
|
---
|
|
351
384
|
|
|
385
|
+
##### `enableIpv6`<sup>Optional</sup> <a name="enableIpv6" id="cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.enableIpv6"></a>
|
|
386
|
+
|
|
387
|
+
```typescript
|
|
388
|
+
public readonly enableIpv6: boolean;
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
- *Type:* boolean
|
|
392
|
+
- *Default:* false - No IPv6 support.
|
|
393
|
+
|
|
394
|
+
Enable IPv6 support with AAAA records.
|
|
395
|
+
|
|
396
|
+
---
|
|
397
|
+
|
|
398
|
+
##### `enableLogging`<sup>Optional</sup> <a name="enableLogging" id="cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.enableLogging"></a>
|
|
399
|
+
|
|
400
|
+
```typescript
|
|
401
|
+
public readonly enableLogging: boolean;
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
- *Type:* boolean
|
|
405
|
+
- *Default:* false - No access logging.
|
|
406
|
+
|
|
407
|
+
Enable CloudFront access logging.
|
|
408
|
+
|
|
409
|
+
---
|
|
410
|
+
|
|
411
|
+
##### `enableSecurityHeaders`<sup>Optional</sup> <a name="enableSecurityHeaders" id="cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.enableSecurityHeaders"></a>
|
|
412
|
+
|
|
413
|
+
```typescript
|
|
414
|
+
public readonly enableSecurityHeaders: boolean;
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
- *Type:* boolean
|
|
418
|
+
- *Default:* false - No security headers policy applied.
|
|
419
|
+
|
|
420
|
+
Enable response headers policy for security headers.
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
352
424
|
##### `errorDoc`<sup>Optional</sup> <a name="errorDoc" id="cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.errorDoc"></a>
|
|
353
425
|
|
|
354
426
|
```typescript
|
|
@@ -362,13 +434,28 @@ The error document of the website.
|
|
|
362
434
|
|
|
363
435
|
---
|
|
364
436
|
|
|
437
|
+
##### `logsBucket`<sup>Optional</sup> <a name="logsBucket" id="cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.logsBucket"></a>
|
|
438
|
+
|
|
439
|
+
```typescript
|
|
440
|
+
public readonly logsBucket: IBucket;
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
- *Type:* aws-cdk-lib.aws_s3.IBucket
|
|
444
|
+
- *Default:* New bucket created if logging is enabled.
|
|
445
|
+
|
|
446
|
+
S3 bucket for CloudFront access logs.
|
|
447
|
+
|
|
448
|
+
If not provided and logging is enabled, a new bucket will be created.
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
365
452
|
##### `priceClass`<sup>Optional</sup> <a name="priceClass" id="cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.priceClass"></a>
|
|
366
453
|
|
|
367
454
|
```typescript
|
|
368
455
|
public readonly priceClass: PriceClass;
|
|
369
456
|
```
|
|
370
457
|
|
|
371
|
-
- *Type:*
|
|
458
|
+
- *Type:* aws-cdk-lib.aws_cloudfront.PriceClass
|
|
372
459
|
- *Default:* PriceClass.PRICE_CLASS_100.
|
|
373
460
|
|
|
374
461
|
The price class determines how many edge locations CloudFront will use for your distribution.
|
|
@@ -394,39 +481,18 @@ an error will be thrown.
|
|
|
394
481
|
|
|
395
482
|
---
|
|
396
483
|
|
|
484
|
+
##### `webAclId`<sup>Optional</sup> <a name="webAclId" id="cdk-simplewebsite-deploy.CloudfrontSiteConfiguration.property.webAclId"></a>
|
|
397
485
|
|
|
486
|
+
```typescript
|
|
487
|
+
public readonly webAclId: string;
|
|
488
|
+
```
|
|
398
489
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
### PriceClass <a name="PriceClass" id="cdk-simplewebsite-deploy.PriceClass"></a>
|
|
402
|
-
|
|
403
|
-
#### Members <a name="Members" id="Members"></a>
|
|
404
|
-
|
|
405
|
-
| **Name** | **Description** |
|
|
406
|
-
| --- | --- |
|
|
407
|
-
| <code><a href="#cdk-simplewebsite-deploy.PriceClass.PRICE_CLASS_100">PRICE_CLASS_100</a></code> | USA, Canada, Europe, & Israel. |
|
|
408
|
-
| <code><a href="#cdk-simplewebsite-deploy.PriceClass.PRICE_CLASS_200">PRICE_CLASS_200</a></code> | PRICE_CLASS_100 + South Africa, Kenya, Middle East, Japan, Singapore, South Korea, Taiwan, Hong Kong, & Philippines. |
|
|
409
|
-
| <code><a href="#cdk-simplewebsite-deploy.PriceClass.PRICE_CLASS_ALL">PRICE_CLASS_ALL</a></code> | All locations. |
|
|
410
|
-
|
|
411
|
-
---
|
|
412
|
-
|
|
413
|
-
##### `PRICE_CLASS_100` <a name="PRICE_CLASS_100" id="cdk-simplewebsite-deploy.PriceClass.PRICE_CLASS_100"></a>
|
|
414
|
-
|
|
415
|
-
USA, Canada, Europe, & Israel.
|
|
416
|
-
|
|
417
|
-
---
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
##### `PRICE_CLASS_200` <a name="PRICE_CLASS_200" id="cdk-simplewebsite-deploy.PriceClass.PRICE_CLASS_200"></a>
|
|
490
|
+
- *Type:* string
|
|
491
|
+
- *Default:* No WAF integration.
|
|
421
492
|
|
|
422
|
-
|
|
493
|
+
Optional WAF Web ACL ARN for enhanced security.
|
|
423
494
|
|
|
424
495
|
---
|
|
425
496
|
|
|
426
497
|
|
|
427
|
-
##### `PRICE_CLASS_ALL` <a name="PRICE_CLASS_ALL" id="cdk-simplewebsite-deploy.PriceClass.PRICE_CLASS_ALL"></a>
|
|
428
|
-
|
|
429
|
-
All locations.
|
|
430
|
-
|
|
431
|
-
---
|
|
432
498
|
|
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|

|
|
4
4
|
|
|
5
5
|
# cdk-simplewebsite-deploy
|
|
6
|
-
This is an AWS CDK Construct to simplify deploying a single-page website using either S3 buckets or CloudFront distributions.
|
|
6
|
+
This is an AWS CDK Construct to simplify deploying a single-page website using either S3 buckets or CloudFront distributions with enhanced security, performance, and monitoring capabilities.
|
|
7
7
|
|
|
8
8
|
## Installation and Usage
|
|
9
9
|
|
|
@@ -11,17 +11,18 @@ This is an AWS CDK Construct to simplify deploying a single-page website using e
|
|
|
11
11
|
#### Creates a simple website using S3 buckets with a domain hosted in Route 53.
|
|
12
12
|
##### Typescript
|
|
13
13
|
```console
|
|
14
|
-
|
|
14
|
+
yarn add cdk-simplewebsite-deploy
|
|
15
15
|
```
|
|
16
16
|
```typescript
|
|
17
|
-
import * as cdk from '
|
|
17
|
+
import * as cdk from 'aws-cdk-lib';
|
|
18
18
|
import { CreateBasicSite } from 'cdk-simplewebsite-deploy';
|
|
19
|
+
import { Construct } from 'constructs';
|
|
19
20
|
|
|
20
21
|
export class PipelineStack extends cdk.Stack {
|
|
21
|
-
constructor(scope:
|
|
22
|
+
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
|
|
22
23
|
super(scope, id, props);
|
|
23
24
|
|
|
24
|
-
new CreateBasicSite(
|
|
25
|
+
new CreateBasicSite(this, 'test-website', {
|
|
25
26
|
websiteFolder: './src/build',
|
|
26
27
|
indexDoc: 'index.html',
|
|
27
28
|
hostedZone: 'example.com',
|
|
@@ -106,17 +107,18 @@ class MyProjectStack(Stack):
|
|
|
106
107
|
#### Creates a simple website using a CloudFront distribution with a domain hosted in Route 53.
|
|
107
108
|
##### Typescript
|
|
108
109
|
```console
|
|
109
|
-
|
|
110
|
+
yarn add cdk-simplewebsite-deploy
|
|
110
111
|
```
|
|
111
112
|
```typescript
|
|
112
|
-
import * as cdk from '
|
|
113
|
+
import * as cdk from 'aws-cdk-lib';
|
|
113
114
|
import { CreateCloudfrontSite } from 'cdk-simplewebsite-deploy';
|
|
115
|
+
import { Construct } from 'constructs';
|
|
114
116
|
|
|
115
117
|
export class PipelineStack extends cdk.Stack {
|
|
116
|
-
constructor(scope:
|
|
118
|
+
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
|
|
117
119
|
super(scope, id, props);
|
|
118
120
|
|
|
119
|
-
new CreateCloudfrontSite(
|
|
121
|
+
new CreateCloudfrontSite(this, 'test-website', {
|
|
120
122
|
websiteFolder: './src/dist',
|
|
121
123
|
indexDoc: 'index.html',
|
|
122
124
|
hostedZone: 'example.com',
|
|
@@ -202,6 +204,177 @@ class MyProjectStack(core.Stack):
|
|
|
202
204
|
sub_domain='www.example.com')
|
|
203
205
|
```
|
|
204
206
|
|
|
207
|
+
## 🚀 Enhanced Features
|
|
208
|
+
|
|
209
|
+
The `CreateCloudfrontSite` construct now includes several optional advanced features for improved security, performance, and monitoring:
|
|
210
|
+
|
|
211
|
+
### Security Headers
|
|
212
|
+
Enable comprehensive security headers including HSTS, X-Frame-Options, Content-Type-Options, and XSS protection:
|
|
213
|
+
|
|
214
|
+
```typescript
|
|
215
|
+
new CreateCloudfrontSite(this, 'secure-website', {
|
|
216
|
+
websiteFolder: './src/dist',
|
|
217
|
+
indexDoc: 'index.html',
|
|
218
|
+
hostedZone: 'example.com',
|
|
219
|
+
enableSecurityHeaders: true, // 🔒 Adds security headers
|
|
220
|
+
});
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### IPv6 Support
|
|
224
|
+
Enable IPv6 connectivity with AAAA records:
|
|
225
|
+
|
|
226
|
+
```typescript
|
|
227
|
+
new CreateCloudfrontSite(this, 'ipv6-website', {
|
|
228
|
+
websiteFolder: './src/dist',
|
|
229
|
+
indexDoc: 'index.html',
|
|
230
|
+
hostedZone: 'example.com',
|
|
231
|
+
enableIpv6: true, // 🌐 Adds AAAA records for IPv6
|
|
232
|
+
});
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Access Logging
|
|
236
|
+
Enable CloudFront access logging for analytics and monitoring:
|
|
237
|
+
|
|
238
|
+
```typescript
|
|
239
|
+
new CreateCloudfrontSite(this, 'logged-website', {
|
|
240
|
+
websiteFolder: './src/dist',
|
|
241
|
+
indexDoc: 'index.html',
|
|
242
|
+
hostedZone: 'example.com',
|
|
243
|
+
enableLogging: true, // 📊 Enables access logging
|
|
244
|
+
// logsBucket: myCustomBucket, // Optional: use existing bucket
|
|
245
|
+
});
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### WAF Integration
|
|
249
|
+
Integrate with AWS WAF for enhanced security:
|
|
250
|
+
|
|
251
|
+
```typescript
|
|
252
|
+
new CreateCloudfrontSite(this, 'waf-protected-website', {
|
|
253
|
+
websiteFolder: './src/dist',
|
|
254
|
+
indexDoc: 'index.html',
|
|
255
|
+
hostedZone: 'example.com',
|
|
256
|
+
webAclId: 'arn:aws:wafv2:us-east-1:123456789012:global/webacl/my-web-acl/12345678-1234-1234-1234-123456789012', // 🛡️ WAF protection
|
|
257
|
+
});
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### Custom Cache Behaviors
|
|
261
|
+
Add custom cache behaviors for different content types:
|
|
262
|
+
|
|
263
|
+
```typescript
|
|
264
|
+
import * as cloudfront from 'aws-cdk-lib/aws-cloudfront';
|
|
265
|
+
|
|
266
|
+
new CreateCloudfrontSite(this, 'optimized-website', {
|
|
267
|
+
websiteFolder: './src/dist',
|
|
268
|
+
indexDoc: 'index.html',
|
|
269
|
+
hostedZone: 'example.com',
|
|
270
|
+
additionalBehaviors: {
|
|
271
|
+
'/api/*': {
|
|
272
|
+
origin: myApiOrigin,
|
|
273
|
+
allowedMethods: cloudfront.AllowedMethods.ALLOW_ALL,
|
|
274
|
+
cachePolicy: cloudfront.CachePolicy.CACHING_DISABLED,
|
|
275
|
+
},
|
|
276
|
+
'/static/*': {
|
|
277
|
+
cachePolicy: cloudfront.CachePolicy.CACHING_OPTIMIZED_FOR_UNCOMPRESSED_OBJECTS,
|
|
278
|
+
},
|
|
279
|
+
}, // ⚡ Custom caching strategies
|
|
280
|
+
});
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### Custom Error Responses
|
|
284
|
+
Define custom error handling:
|
|
285
|
+
|
|
286
|
+
```typescript
|
|
287
|
+
new CreateCloudfrontSite(this, 'custom-errors-website', {
|
|
288
|
+
websiteFolder: './src/dist',
|
|
289
|
+
indexDoc: 'index.html',
|
|
290
|
+
hostedZone: 'example.com',
|
|
291
|
+
customErrorResponses: [
|
|
292
|
+
{
|
|
293
|
+
httpStatus: 404,
|
|
294
|
+
responseHttpStatus: 200,
|
|
295
|
+
responsePagePath: '/index.html', // SPA routing
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
httpStatus: 403,
|
|
299
|
+
responseHttpStatus: 200,
|
|
300
|
+
responsePagePath: '/index.html',
|
|
301
|
+
},
|
|
302
|
+
], // 🎯 Custom error handling
|
|
303
|
+
});
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
### Complete Example with All Features
|
|
307
|
+
```typescript
|
|
308
|
+
import * as cdk from 'aws-cdk-lib';
|
|
309
|
+
import * as cloudfront from 'aws-cdk-lib/aws-cloudfront';
|
|
310
|
+
import { CreateCloudfrontSite } from 'cdk-simplewebsite-deploy';
|
|
311
|
+
import { Construct } from 'constructs';
|
|
312
|
+
|
|
313
|
+
export class AdvancedWebsiteStack extends cdk.Stack {
|
|
314
|
+
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
|
|
315
|
+
super(scope, id, props);
|
|
316
|
+
|
|
317
|
+
new CreateCloudfrontSite(this, 'advanced-website', {
|
|
318
|
+
websiteFolder: './dist',
|
|
319
|
+
indexDoc: 'index.html',
|
|
320
|
+
errorDoc: 'error.html',
|
|
321
|
+
hostedZone: 'example.com',
|
|
322
|
+
subDomain: 'www.example.com',
|
|
323
|
+
|
|
324
|
+
// Performance & Security
|
|
325
|
+
priceClass: cloudfront.PriceClass.PRICE_CLASS_ALL,
|
|
326
|
+
enableSecurityHeaders: true,
|
|
327
|
+
enableIpv6: true,
|
|
328
|
+
|
|
329
|
+
// Monitoring & Protection
|
|
330
|
+
enableLogging: true,
|
|
331
|
+
webAclId: 'arn:aws:wafv2:us-east-1:123456789012:global/webacl/my-web-acl/12345678-1234-1234-1234-123456789012',
|
|
332
|
+
|
|
333
|
+
// Custom Behaviors
|
|
334
|
+
additionalBehaviors: {
|
|
335
|
+
'/api/*': {
|
|
336
|
+
allowedMethods: cloudfront.AllowedMethods.ALLOW_ALL,
|
|
337
|
+
cachePolicy: cloudfront.CachePolicy.CACHING_DISABLED,
|
|
338
|
+
},
|
|
339
|
+
},
|
|
340
|
+
|
|
341
|
+
// SPA Error Handling
|
|
342
|
+
customErrorResponses: [
|
|
343
|
+
{
|
|
344
|
+
httpStatus: 404,
|
|
345
|
+
responseHttpStatus: 200,
|
|
346
|
+
responsePagePath: '/index.html',
|
|
347
|
+
},
|
|
348
|
+
],
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
## 🎯 Key Benefits
|
|
355
|
+
|
|
356
|
+
### 🔒 **Enhanced Security**
|
|
357
|
+
- **Security Headers**: Automatic HSTS, X-Frame-Options, Content-Type-Options, and XSS protection
|
|
358
|
+
- **WAF Integration**: Support for AWS WAF Web ACLs for advanced threat protection
|
|
359
|
+
- **Origin Access Control**: Modern S3 bucket protection (replaces deprecated OAI)
|
|
360
|
+
|
|
361
|
+
### ⚡ **Optimized Performance**
|
|
362
|
+
- **Smart Caching**: Optimized cache policies for better performance
|
|
363
|
+
- **HTTP/2 & HTTP/3**: Latest protocol support for faster loading
|
|
364
|
+
- **Global Edge Locations**: Configurable price classes for worldwide distribution
|
|
365
|
+
- **IPv6 Support**: Dual-stack networking for better connectivity
|
|
366
|
+
|
|
367
|
+
### 📊 **Comprehensive Monitoring**
|
|
368
|
+
- **Access Logging**: CloudFront access logs for analytics
|
|
369
|
+
- **Custom Error Handling**: Flexible error response configuration
|
|
370
|
+
- **SPA Support**: Built-in single-page application routing support
|
|
371
|
+
|
|
372
|
+
### 🚀 **Developer Experience**
|
|
373
|
+
- **Backward Compatible**: All existing configurations continue to work
|
|
374
|
+
- **Type Safe**: Full TypeScript support with comprehensive interfaces
|
|
375
|
+
- **CDK v2 Ready**: Built for the latest AWS CDK version
|
|
376
|
+
- **Multi-Language**: Support for TypeScript, Python, Java, and C#
|
|
377
|
+
|
|
205
378
|
## License
|
|
206
379
|
|
|
207
380
|
Distributed under the [Apache-2.0](./LICENSE) license.
|
|
@@ -1,24 +1,6 @@
|
|
|
1
|
+
import * as cloudfront from 'aws-cdk-lib/aws-cloudfront';
|
|
2
|
+
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
1
3
|
import { Construct } from 'constructs';
|
|
2
|
-
export declare enum PriceClass {
|
|
3
|
-
/**
|
|
4
|
-
* USA, Canada, Europe, & Israel.
|
|
5
|
-
*
|
|
6
|
-
* @stability stable
|
|
7
|
-
*/
|
|
8
|
-
PRICE_CLASS_100 = "PriceClass_100",
|
|
9
|
-
/**
|
|
10
|
-
* PRICE_CLASS_100 + South Africa, Kenya, Middle East, Japan, Singapore, South Korea, Taiwan, Hong Kong, & Philippines.
|
|
11
|
-
*
|
|
12
|
-
* @stability stable
|
|
13
|
-
*/
|
|
14
|
-
PRICE_CLASS_200 = "PriceClass_200",
|
|
15
|
-
/**
|
|
16
|
-
* All locations.
|
|
17
|
-
*
|
|
18
|
-
* @stability stable
|
|
19
|
-
*/
|
|
20
|
-
PRICE_CLASS_ALL = "PriceClass_All"
|
|
21
|
-
}
|
|
22
4
|
export interface BasicSiteConfiguration {
|
|
23
5
|
/**
|
|
24
6
|
* Local path to the website folder you want to deploy on S3.
|
|
@@ -77,7 +59,42 @@ export interface CloudfrontSiteConfiguration {
|
|
|
77
59
|
* @default PriceClass.PRICE_CLASS_100.
|
|
78
60
|
* @see https://aws.amazon.com/cloudfront/pricing/.
|
|
79
61
|
*/
|
|
80
|
-
readonly priceClass?: PriceClass;
|
|
62
|
+
readonly priceClass?: cloudfront.PriceClass;
|
|
63
|
+
/**
|
|
64
|
+
* Optional cache behaviors for different path patterns.
|
|
65
|
+
* @default - No additional cache behaviors.
|
|
66
|
+
*/
|
|
67
|
+
readonly additionalBehaviors?: Record<string, cloudfront.BehaviorOptions>;
|
|
68
|
+
/**
|
|
69
|
+
* Enable response headers policy for security headers.
|
|
70
|
+
* @default false - No security headers policy applied.
|
|
71
|
+
*/
|
|
72
|
+
readonly enableSecurityHeaders?: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Enable IPv6 support with AAAA records.
|
|
75
|
+
* @default false - No IPv6 support.
|
|
76
|
+
*/
|
|
77
|
+
readonly enableIpv6?: boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Custom error responses for different HTTP status codes.
|
|
80
|
+
* @default - Default error responses based on errorDoc setting.
|
|
81
|
+
*/
|
|
82
|
+
readonly customErrorResponses?: cloudfront.ErrorResponse[];
|
|
83
|
+
/**
|
|
84
|
+
* Enable CloudFront access logging.
|
|
85
|
+
* @default false - No access logging.
|
|
86
|
+
*/
|
|
87
|
+
readonly enableLogging?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* S3 bucket for CloudFront access logs. If not provided and logging is enabled, a new bucket will be created.
|
|
90
|
+
* @default - New bucket created if logging is enabled.
|
|
91
|
+
*/
|
|
92
|
+
readonly logsBucket?: s3.IBucket;
|
|
93
|
+
/**
|
|
94
|
+
* Optional WAF Web ACL ARN for enhanced security.
|
|
95
|
+
* @default - No WAF integration.
|
|
96
|
+
*/
|
|
97
|
+
readonly webAclId?: string;
|
|
81
98
|
}
|
|
82
99
|
export declare class CreateBasicSite extends Construct {
|
|
83
100
|
constructor(scope: Construct, id: string, props: BasicSiteConfiguration);
|
|
@@ -60,7 +60,7 @@ class CreateBasicSite extends constructs_1.Construct {
|
|
|
60
60
|
}
|
|
61
61
|
exports.CreateBasicSite = CreateBasicSite;
|
|
62
62
|
_a = JSII_RTTI_SYMBOL_1;
|
|
63
|
-
CreateBasicSite[_a] = { fqn: "cdk-simplewebsite-deploy.CreateBasicSite", version: "2.0
|
|
63
|
+
CreateBasicSite[_a] = { fqn: "cdk-simplewebsite-deploy.CreateBasicSite", version: "2.1.0" };
|
|
64
64
|
class CreateCloudfrontSite extends constructs_1.Construct {
|
|
65
65
|
constructor(scope, id, props) {
|
|
66
66
|
super(scope, id);
|
|
@@ -70,28 +70,31 @@ class CreateCloudfrontSite extends constructs_1.Construct {
|
|
|
70
70
|
const hostedZoneLookup = route53.HostedZone.fromLookup(this, 'WebsiteHostedZone', {
|
|
71
71
|
domainName: props.hostedZone,
|
|
72
72
|
});
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
73
|
+
// Use custom error responses if provided, otherwise use default logic
|
|
74
|
+
const errorResponses = props.customErrorResponses || [];
|
|
75
|
+
if (!props.customErrorResponses) {
|
|
76
|
+
if (props.errorDoc) {
|
|
77
|
+
errorResponses.push({
|
|
78
|
+
httpStatus: 404,
|
|
79
|
+
responsePagePath: `/${props.errorDoc}`,
|
|
80
|
+
});
|
|
81
|
+
errorResponses.push({
|
|
82
|
+
httpStatus: 403,
|
|
83
|
+
responsePagePath: `/${props.errorDoc}`,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
errorResponses.push({
|
|
88
|
+
httpStatus: 404,
|
|
89
|
+
responseHttpStatus: 200,
|
|
90
|
+
responsePagePath: `/${props.indexDoc}`,
|
|
91
|
+
});
|
|
92
|
+
errorResponses.push({
|
|
93
|
+
httpStatus: 403,
|
|
94
|
+
responseHttpStatus: 200,
|
|
95
|
+
responsePagePath: `/${props.indexDoc}`,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
95
98
|
}
|
|
96
99
|
const subjectAlternativeNames = [];
|
|
97
100
|
if (props.domain)
|
|
@@ -117,21 +120,51 @@ class CreateCloudfrontSite extends constructs_1.Construct {
|
|
|
117
120
|
}
|
|
118
121
|
if (props.subDomain)
|
|
119
122
|
domainNames.push(props.subDomain);
|
|
123
|
+
// Create access logs bucket if logging is enabled but no bucket provided
|
|
124
|
+
const logsBucket = props.enableLogging
|
|
125
|
+
? (props.logsBucket || new s3.Bucket(this, 'AccessLogsBucket', {
|
|
126
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
127
|
+
autoDeleteObjects: true,
|
|
128
|
+
encryption: s3.BucketEncryption.S3_MANAGED,
|
|
129
|
+
}))
|
|
130
|
+
: undefined;
|
|
131
|
+
// Create security headers policy if enabled
|
|
132
|
+
const responseHeadersPolicy = props.enableSecurityHeaders
|
|
133
|
+
? new cloudfront.ResponseHeadersPolicy(this, 'SecurityHeadersPolicy', {
|
|
134
|
+
securityHeadersBehavior: {
|
|
135
|
+
contentTypeOptions: { override: true },
|
|
136
|
+
frameOptions: { frameOption: cloudfront.HeadersFrameOption.DENY, override: true },
|
|
137
|
+
referrerPolicy: { referrerPolicy: cloudfront.HeadersReferrerPolicy.STRICT_ORIGIN_WHEN_CROSS_ORIGIN, override: true },
|
|
138
|
+
strictTransportSecurity: {
|
|
139
|
+
accessControlMaxAge: aws_cdk_lib_1.Duration.seconds(31536000),
|
|
140
|
+
includeSubdomains: true,
|
|
141
|
+
preload: true,
|
|
142
|
+
override: true,
|
|
143
|
+
},
|
|
144
|
+
xssProtection: { protection: true, modeBlock: true, override: true },
|
|
145
|
+
},
|
|
146
|
+
})
|
|
147
|
+
: undefined;
|
|
120
148
|
const websiteDist = new cloudfront.Distribution(scope, 'WebsiteDist', {
|
|
121
149
|
defaultBehavior: {
|
|
122
150
|
origin: origins.S3BucketOrigin.withOriginAccessControl(websiteBucket),
|
|
123
151
|
allowedMethods: cloudfront.AllowedMethods.ALLOW_GET_HEAD_OPTIONS,
|
|
124
152
|
viewerProtocolPolicy: cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
|
|
153
|
+
cachePolicy: cloudfront.CachePolicy.CACHING_OPTIMIZED,
|
|
154
|
+
originRequestPolicy: cloudfront.OriginRequestPolicy.CORS_S3_ORIGIN,
|
|
155
|
+
responseHeadersPolicy,
|
|
125
156
|
},
|
|
157
|
+
additionalBehaviors: props.additionalBehaviors,
|
|
126
158
|
minimumProtocolVersion: cloudfront.SecurityPolicyProtocol.TLS_V1_2_2021,
|
|
127
159
|
httpVersion: cloudfront.HttpVersion.HTTP2_AND_3,
|
|
128
|
-
priceClass: props.priceClass
|
|
129
|
-
? props.priceClass
|
|
130
|
-
: cloudfront.PriceClass.PRICE_CLASS_100,
|
|
160
|
+
priceClass: props.priceClass ?? cloudfront.PriceClass.PRICE_CLASS_100,
|
|
131
161
|
errorResponses,
|
|
132
162
|
defaultRootObject: props.indexDoc,
|
|
133
163
|
domainNames,
|
|
134
164
|
certificate: websiteCert,
|
|
165
|
+
logBucket: logsBucket,
|
|
166
|
+
logIncludesCookies: false,
|
|
167
|
+
webAclId: props.webAclId,
|
|
135
168
|
});
|
|
136
169
|
new s3deploy.BucketDeployment(scope, 'WebsiteDeploy', {
|
|
137
170
|
sources: [s3deploy.Source.asset(props.websiteFolder)],
|
|
@@ -143,16 +176,32 @@ class CreateCloudfrontSite extends constructs_1.Construct {
|
|
|
143
176
|
recordName: props.domain ? props.domain : props.hostedZone,
|
|
144
177
|
target: route53.RecordTarget.fromAlias(new targets.CloudFrontTarget(websiteDist)),
|
|
145
178
|
});
|
|
179
|
+
// Add IPv6 support if enabled
|
|
180
|
+
if (props.enableIpv6) {
|
|
181
|
+
new route53.AaaaRecord(scope, 'WebsiteDomainAliasIpv6', {
|
|
182
|
+
zone: hostedZoneLookup,
|
|
183
|
+
recordName: props.domain ? props.domain : props.hostedZone,
|
|
184
|
+
target: route53.RecordTarget.fromAlias(new targets.CloudFrontTarget(websiteDist)),
|
|
185
|
+
});
|
|
186
|
+
}
|
|
146
187
|
if (props.subDomain) {
|
|
147
188
|
new route53.ARecord(scope, 'WebsiteSubDomainAlias', {
|
|
148
189
|
zone: hostedZoneLookup,
|
|
149
190
|
recordName: props.subDomain,
|
|
150
191
|
target: route53.RecordTarget.fromAlias(new targets.CloudFrontTarget(websiteDist)),
|
|
151
192
|
});
|
|
193
|
+
// Add IPv6 support for subdomain if enabled
|
|
194
|
+
if (props.enableIpv6) {
|
|
195
|
+
new route53.AaaaRecord(scope, 'WebsiteSubDomainAliasIpv6', {
|
|
196
|
+
zone: hostedZoneLookup,
|
|
197
|
+
recordName: props.subDomain,
|
|
198
|
+
target: route53.RecordTarget.fromAlias(new targets.CloudFrontTarget(websiteDist)),
|
|
199
|
+
});
|
|
200
|
+
}
|
|
152
201
|
}
|
|
153
202
|
}
|
|
154
203
|
}
|
|
155
204
|
exports.CreateCloudfrontSite = CreateCloudfrontSite;
|
|
156
205
|
_b = JSII_RTTI_SYMBOL_1;
|
|
157
|
-
CreateCloudfrontSite[_b] = { fqn: "cdk-simplewebsite-deploy.CreateCloudfrontSite", version: "2.0
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXNpbXBsZXdlYnNpdGUtZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Nkay1zaW1wbGV3ZWJzaXRlLWRlcGxveS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUE0QztBQUM1QywwREFBMEQ7QUFDMUQseURBQXlEO0FBQ3pELDhEQUE4RDtBQUM5RCxtREFBbUQ7QUFDbkQsMkRBQTJEO0FBQzNELHlDQUF5QztBQUN6QywwREFBMEQ7QUFDMUQsMkNBQXVDO0FBdUZ2QyxNQUFhLGVBQWdCLFNBQVEsc0JBQVM7SUFDNUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE2QjtRQUNyRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQ3BELElBQUksRUFDSixtQkFBbUIsRUFDbkI7WUFDRSxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7U0FDN0IsQ0FDRixDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQ3pDLEtBQUssRUFDTCx1QkFBdUIsRUFDdkI7WUFDRSxVQUFVLEVBQUUsT0FBTyxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ3JDLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87WUFDcEMsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixlQUFlLEVBQUU7Z0JBQ2YsUUFBUSxFQUFFLEtBQUssQ0FBQyxVQUFVO2dCQUMxQixRQUFRLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUk7YUFDbkM7U0FDRixDQUNGLENBQUM7UUFFRixNQUFNLGFBQWEsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRTtZQUMxRCxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztZQUNw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QyxDQUMxQztTQUNGLENBQUMsQ0FBQztRQUVILElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsdUJBQXVCLEVBQUU7Z0JBQ2xELElBQUksRUFBRSxnQkFBZ0I7Z0JBQ3RCLFVBQVUsRUFBRSxLQUFLLENBQUMsU0FBUztnQkFDM0IsTUFBTSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUNwQyxJQUFJLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUMsQ0FDMUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDO0lBQ0gsQ0FBQzs7QUE5R0gsb0RBK0dDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGFjbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyJztcbmltcG9ydCAqIGFzIGNsb3VkZnJvbnQgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQnO1xuaW1wb3J0ICogYXMgb3JpZ2lucyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC1vcmlnaW5zJztcbmltcG9ydCAqIGFzIHJvdXRlNTMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXJvdXRlNTMnO1xuaW1wb3J0ICogYXMgdGFyZ2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtcm91dGU1My10YXJnZXRzJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBzM2RlcGxveSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtZGVwbG95bWVudCc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuaW50ZXJmYWNlIEVycm9yUmVzcG9uc2UgeyBodHRwU3RhdHVzOiBudW1iZXI7IHJlc3BvbnNlSHR0cFN0YXR1cz86IG51bWJlcjsgcmVzcG9uc2VQYWdlUGF0aDogc3RyaW5nIH1cblxuZXhwb3J0IGRlY2xhcmUgZW51bSBQcmljZUNsYXNzIHtcbiAgLyoqXG4gICAgICogVVNBLCBDYW5hZGEsIEV1cm9wZSwgJiBJc3JhZWwuXG4gICAgICpcbiAgICAgKiBAc3RhYmlsaXR5IHN0YWJsZVxuICAgICAqL1xuICBQUklDRV9DTEFTU18xMDAgPSAnUHJpY2VDbGFzc18xMDAnLFxuICAvKipcbiAgICAgKiBQUklDRV9DTEFTU18xMDAgKyBTb3V0aCBBZnJpY2EsIEtlbnlhLCBNaWRkbGUgRWFzdCwgSmFwYW4sIFNpbmdhcG9yZSwgU291dGggS29yZWEsIFRhaXdhbiwgSG9uZyBLb25nLCAmIFBoaWxpcHBpbmVzLlxuICAgICAqXG4gICAgICogQHN0YWJpbGl0eSBzdGFibGVcbiAgICAgKi9cbiAgUFJJQ0VfQ0xBU1NfMjAwID0gJ1ByaWNlQ2xhc3NfMjAwJyxcbiAgLyoqXG4gICAgICogQWxsIGxvY2F0aW9ucy5cbiAgICAgKlxuICAgICAqIEBzdGFiaWxpdHkgc3RhYmxlXG4gICAgICovXG4gIFBSSUNFX0NMQVNTX0FMTCA9ICdQcmljZUNsYXNzX0FsbCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzaWNTaXRlQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBMb2NhbCBwYXRoIHRvIHRoZSB3ZWJzaXRlIGZvbGRlciB5b3Ugd2FudCB0byBkZXBsb3kgb24gUzMuXG4gICAqL1xuICByZWFkb25seSB3ZWJzaXRlRm9sZGVyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaW5kZXggZG9jdW1lbnQgb2YgdGhlIHdlYnNpdGUuXG4gICAqL1xuICByZWFkb25seSBpbmRleERvYzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVycm9yIGRvY3VtZW50IG9mIHRoZSB3ZWJzaXRlLlxuICAgKiBAZGVmYXVsdCAtIE5vIGVycm9yIGRvY3VtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZXJyb3JEb2M/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBIb3N0ZWQgWm9uZSB1c2VkIHRvIGNyZWF0ZSB0aGUgRE5TIHJlY29yZCBmb3IgdGhlIHdlYnNpdGUuXG4gICAqL1xuICByZWFkb25seSBob3N0ZWRab25lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2xvdWRmcm9udFNpdGVDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIExvY2FsIHBhdGggdG8gdGhlIHdlYnNpdGUgZm9sZGVyIHlvdSB3YW50IHRvIGRlcGxveSBvbiBTMy5cbiAgICovXG4gIHJlYWRvbmx5IHdlYnNpdGVGb2xkZXI6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBpbmRleCBkb2N1bWVudCBvZiB0aGUgd2Vic2l0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGluZGV4RG9jOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgZXJyb3IgZG9jdW1lbnQgb2YgdGhlIHdlYnNpdGUuXG4gICAqIEBkZWZhdWx0IC0gTm8gZXJyb3IgZG9jdW1lbnQuXG4gICAqL1xuICByZWFkb25seSBlcnJvckRvYz86IHN0cmluZztcbiAgLyoqXG4gICAqIEhvc3RlZCBab25lIHVzZWQgdG8gY3JlYXRlIHRoZSBETlMgcmVjb3JkIGZvciB0aGUgd2Vic2l0ZS5cbiAgICovXG4gIHJlYWRvbmx5IGhvc3RlZFpvbmU6IHN0cmluZztcbiAgLyoqXG4gICAqIFVzZWQgdG8gZGVwbG95IGEgQ2xvdWRmcm9udCBzaXRlIHdpdGggYSBzaW5nbGUgZG9tYWluLiBlLmcuIHNhbXBsZS5leGFtcGxlLmNvbVxuICAgKiBJZiB5b3UgaW5jbHVkZSBhIHZhbHVlIGZvciBib3RoIGRvbWFpbiBhbmQgc3ViRG9tYWluLFxuICAgKiBhbiBlcnJvciB3aWxsIGJlIHRocm93bi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyB2YWx1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHN1YmRvbWFpbiBuYW1lIHlvdSB3YW50IHRvIGRlcGxveS4gZS5nLiB3d3cuZXhhbXBsZS5jb21cbiAgICogSWYgeW91IGluY2x1ZGUgYSB2YWx1ZSBmb3IgYm90aCBkb21haW4gYW5kIHN1YkRvbWFpbixcbiAgICogYW4gZXJyb3Igd2lsbCBiZSB0aHJvd24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gdmFsdWVcbiAgICovXG4gIHJlYWRvbmx5IHN1YkRvbWFpbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBwcmljZSBjbGFzcyBkZXRlcm1pbmVzIGhvdyBtYW55IGVkZ2UgbG9jYXRpb25zIENsb3VkRnJvbnQgd2lsbCB1c2UgZm9yIHlvdXIgZGlzdHJpYnV0aW9uLlxuICAgKiBAZGVmYXVsdCBQcmljZUNsYXNzLlBSSUNFX0NMQVNTXzEwMC5cbiAgICogQHNlZSBodHRwczovL2F3cy5hbWF6b24uY29tL2Nsb3VkZnJvbnQvcHJpY2luZy8uXG4gICAqL1xuICByZWFkb25seSBwcmljZUNsYXNzPzogUHJpY2VDbGFzcztcbn1cblxuZXhwb3J0IGNsYXNzIENyZWF0ZUJhc2ljU2l0ZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBCYXNpY1NpdGVDb25maWd1cmF0aW9uKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGhvc3RlZFpvbmVMb29rdXAgPSByb3V0ZTUzLkhvc3RlZFpvbmUuZnJvbUxvb2t1cChcbiAgICAgIHRoaXMsXG4gICAgICAnV2Vic2l0ZUhvc3RlZFpvbmUnLFxuICAgICAge1xuICAgICAgICBkb21haW5OYW1lOiBwcm9wcy5ob3N0ZWRab25lLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgY29uc3Qgd2Vic2l0ZVJlZGlyZWN0QnVja2V0ID0gbmV3IHMzLkJ1Y2tldChcbiAgICAgIHNjb3BlLFxuICAgICAgJ1dlYnNpdGVSZWRpcmVjdEJ1Y2tldCcsXG4gICAgICB7XG4gICAgICAgIGJ1Y2tldE5hbWU6IGB3d3cuJHtwcm9wcy5ob3N0ZWRab25lfWAsXG4gICAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWUsXG4gICAgICAgIHdlYnNpdGVSZWRpcmVjdDoge1xuICAgICAgICAgIGhvc3ROYW1lOiBwcm9wcy5ob3N0ZWRab25lLFxuICAgICAgICAgIHByb3RvY29sOiBzMy5SZWRpcmVjdFByb3RvY29sLkhUVFAsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBjb25zdCB3ZWJzaXRlQnVja2V0ID0gbmV3IHMzLkJ1Y2tldChzY29wZSwgJ1dlYnNpdGVCdWNrZXQnLCB7XG4gICAgICBidWNrZXROYW1lOiBwcm9wcy5ob3N0ZWRab25lLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgYXV0b0RlbGV0ZU9iamVjdHM6IHRydWUsXG4gICAgICB3ZWJzaXRlSW5kZXhEb2N1bWVudDogcHJvcHMuaW5kZXhEb2MsXG4gICAgICB3ZWJzaXRlRXJyb3JEb2N1bWVudDogcHJvcHMuZXJyb3JEb2MsXG4gICAgICBwdWJsaWNSZWFkQWNjZXNzOiB0cnVlLFxuICAgICAgYmxvY2tQdWJsaWNBY2Nlc3M6IHtcbiAgICAgICAgYmxvY2tQdWJsaWNQb2xpY3k6IGZhbHNlLFxuICAgICAgICBibG9ja1B1YmxpY0FjbHM6IGZhbHNlLFxuICAgICAgICBpZ25vcmVQdWJsaWNBY2xzOiBmYWxzZSxcbiAgICAgICAgcmVzdHJpY3RQdWJsaWNCdWNrZXRzOiBmYWxzZSxcbiAgICAgIH0sXG4gICAgICBlbmNyeXB0aW9uOiBzMy5CdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQsXG4gICAgfSk7XG5cbiAgICBuZXcgczNkZXBsb3kuQnVja2V0RGVwbG95bWVudChzY29wZSwgJ1dlYnNpdGVEZXBsb3knLCB7XG4gICAgICBzb3VyY2VzOiBbczNkZXBsb3kuU291cmNlLmFzc2V0KHByb3BzLndlYnNpdGVGb2xkZXIpXSxcbiAgICAgIGRlc3RpbmF0aW9uQnVja2V0OiB3ZWJzaXRlQnVja2V0LFxuICAgIH0pO1xuXG4gICAgbmV3IHJvdXRlNTMuQVJlY29yZChzY29wZSwgJ1dlYnNpdGVBbGlhcycsIHtcbiAgICAgIHpvbmU6IGhvc3RlZFpvbmVMb29rdXAsXG4gICAgICByZWNvcmROYW1lOiBwcm9wcy5ob3N0ZWRab25lLFxuICAgICAgdGFyZ2V0OiByb3V0ZTUzLlJlY29yZFRhcmdldC5mcm9tQWxpYXMoXG4gICAgICAgIG5ldyB0YXJnZXRzLkJ1Y2tldFdlYnNpdGVUYXJnZXQod2Vic2l0ZUJ1Y2tldCksXG4gICAgICApLFxuICAgIH0pO1xuXG4gICAgbmV3IHJvdXRlNTMuQVJlY29yZChzY29wZSwgJ1dlYnNpdGVSZWRpcmVjdEFsaWFzJywge1xuICAgICAgem9uZTogaG9zdGVkWm9uZUxvb2t1cCxcbiAgICAgIHJlY29yZE5hbWU6IGB3d3cuJHtwcm9wcy5ob3N0ZWRab25lfWAsXG4gICAgICB0YXJnZXQ6IHJvdXRlNTMuUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhcbiAgICAgICAgbmV3IHRhcmdldHMuQnVja2V0V2Vic2l0ZVRhcmdldCh3ZWJzaXRlUmVkaXJlY3RCdWNrZXQpLFxuICAgICAgKSxcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ3JlYXRlQ2xvdWRmcm9udFNpdGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IENsb3VkZnJvbnRTaXRlQ29uZmlndXJhdGlvbixcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGlmIChwcm9wcy5kb21haW4gJiYgcHJvcHMuc3ViRG9tYWluKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdEb21haW4gYW5kIHN1YiBkb21haW4gcGFyYW1ldGVycyBjYW5ub3QgYm90aCBiZSBkZWZpbmVkJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaG9zdGVkWm9uZUxvb2t1cCA9IHJvdXRlNTMuSG9zdGVkWm9uZS5mcm9tTG9va3VwKFxuICAgICAgdGhpcyxcbiAgICAgICdXZWJzaXRlSG9zdGVkWm9uZScsXG4gICAgICB7XG4gICAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmhvc3RlZFpvbmUsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBjb25zdCBlcnJvclJlc3BvbnNlczogRXJyb3JSZXNwb25zZVtdID0gW107XG4gICAgaWYgKHByb3BzLmVycm9yRG9jKSB7XG4gICAgICBlcnJvclJlc3BvbnNlcy5wdXNoKHtcbiAgICAgICAgaHR0cFN0YXR1czogNDA0LFxuICAgICAgICByZXNwb25zZVBhZ2VQYXRoOiBgLyR7cHJvcHMuZXJyb3JEb2N9YCxcbiAgICAgIH0pO1xuICAgICAgZXJyb3JSZXNwb25zZXMucHVzaCh7XG4gICAgICAgIGh0dHBTdGF0dXM6IDQwMyxcbiAgICAgICAgcmVzcG9uc2VQYWdlUGF0aDogYC8ke3Byb3BzLmVycm9yRG9jfWAsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXJyb3JSZXNwb25zZXMucHVzaCh7XG4gICAgICAgIGh0dHBTdGF0dXM6IDQwNCxcbiAgICAgICAgcmVzcG9uc2VIdHRwU3RhdHVzOiAyMDAsXG4gICAgICAgIHJlc3BvbnNlUGFnZVBhdGg6IGAvJHtwcm9wcy5pbmRleERvY31gLFxuICAgICAgfSk7XG4gICAgICBlcnJvclJlc3BvbnNlcy5wdXNoKHtcbiAgICAgICAgaHR0cFN0YXR1czogNDAzLFxuICAgICAgICByZXNwb25zZUh0dHBTdGF0dXM6IDIwMCxcbiAgICAgICAgcmVzcG9uc2VQYWdlUGF0aDogYC8ke3Byb3BzLmluZGV4RG9jfWAsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCBzdWJqZWN0QWx0ZXJuYXRpdmVOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAocHJvcHMuZG9tYWluKSBzdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcy5wdXNoKHByb3BzLmRvbWFpbik7XG4gICAgaWYgKHByb3BzLnN1YkRvbWFpbikgc3ViamVjdEFsdGVybmF0aXZlTmFtZXMucHVzaChwcm9wcy5zdWJEb21haW4pO1xuXG4gICAgY29uc3Qgd2Vic2l0ZUNlcnQgPSBuZXcgYWNtLkNlcnRpZmljYXRlKHRoaXMsICdXZWJzaXRlQ2VydCcsIHtcbiAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmhvc3RlZFpvbmUsXG4gICAgICBzdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcyxcbiAgICAgIHZhbGlkYXRpb246IGFjbS5DZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURucyhob3N0ZWRab25lTG9va3VwKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHdlYnNpdGVCdWNrZXQgPSBuZXcgczMuQnVja2V0KHNjb3BlLCAnV2Vic2l0ZUJ1Y2tldCcsIHtcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlLFxuICAgICAgZW5jcnlwdGlvbjogczMuQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgIH0pO1xuXG4gICAgY29uc3QgZG9tYWluTmFtZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHByb3BzLmRvbWFpbikge1xuICAgICAgZG9tYWluTmFtZXMucHVzaChwcm9wcy5kb21haW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb21haW5OYW1lcy5wdXNoKHByb3BzLmhvc3RlZFpvbmUpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5zdWJEb21haW4pIGRvbWFpbk5hbWVzLnB1c2gocHJvcHMuc3ViRG9tYWluKTtcblxuICAgIGNvbnN0IHdlYnNpdGVEaXN0ID0gbmV3IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uKHNjb3BlLCAnV2Vic2l0ZURpc3QnLCB7XG4gICAgICBkZWZhdWx0QmVoYXZpb3I6IHtcbiAgICAgICAgb3JpZ2luOiBvcmlnaW5zLlMzQnVja2V0T3JpZ2luLndpdGhPcmlnaW5BY2Nlc3NDb250cm9sKHdlYnNpdGVCdWNrZXQpLFxuICAgICAgICBhbGxvd2VkTWV0aG9kczogY2xvdWRmcm9udC5BbGxvd2VkTWV0aG9kcy5BTExPV19HRVRfSEVBRF9PUFRJT05TLFxuICAgICAgICB2aWV3ZXJQcm90b2NvbFBvbGljeTogY2xvdWRmcm9udC5WaWV3ZXJQcm90b2NvbFBvbGljeS5SRURJUkVDVF9UT19IVFRQUyxcbiAgICAgIH0sXG4gICAgICBtaW5pbXVtUHJvdG9jb2xWZXJzaW9uOiBjbG91ZGZyb250LlNlY3VyaXR5UG9saWN5UHJvdG9jb2wuVExTX1YxXzJfMjAyMSxcbiAgICAgIGh0dHBWZXJzaW9uOiBjbG91ZGZyb250Lkh0dHBWZXJzaW9uLkhUVFAyX0FORF8zLFxuICAgICAgcHJpY2VDbGFzczogcHJvcHMucHJpY2VDbGFzc1xuICAgICAgICA/IHByb3BzLnByaWNlQ2xhc3NcbiAgICAgICAgOiBjbG91ZGZyb250LlByaWNlQ2xhc3MuUFJJQ0VfQ0xBU1NfMTAwLFxuICAgICAgZXJyb3JSZXNwb25zZXMsXG4gICAgICBkZWZhdWx0Um9vdE9iamVjdDogcHJvcHMuaW5kZXhEb2MsXG4gICAgICBkb21haW5OYW1lcyxcbiAgICAgIGNlcnRpZmljYXRlOiB3ZWJzaXRlQ2VydCxcbiAgICB9KTtcblxuICAgIG5ldyBzM2RlcGxveS5CdWNrZXREZXBsb3ltZW50KHNjb3BlLCAnV2Vic2l0ZURlcGxveScsIHtcbiAgICAgIHNvdXJjZXM6IFtzM2RlcGxveS5Tb3VyY2UuYXNzZXQocHJvcHMud2Vic2l0ZUZvbGRlcildLFxuICAgICAgZGVzdGluYXRpb25CdWNrZXQ6IHdlYnNpdGVCdWNrZXQsXG4gICAgICBkaXN0cmlidXRpb246IHdlYnNpdGVEaXN0LFxuICAgIH0pO1xuXG4gICAgbmV3IHJvdXRlNTMuQVJlY29yZChzY29wZSwgJ1dlYnNpdGVEb21haW5BbGlhcycsIHtcbiAgICAgIHpvbmU6IGhvc3RlZFpvbmVMb29rdXAsXG4gICAgICByZWNvcmROYW1lOiBwcm9wcy5kb21haW4gPyBwcm9wcy5kb21haW4gOiBwcm9wcy5ob3N0ZWRab25lLFxuICAgICAgdGFyZ2V0OiByb3V0ZTUzLlJlY29yZFRhcmdldC5mcm9tQWxpYXMoXG4gICAgICAgIG5ldyB0YXJnZXRzLkNsb3VkRnJvbnRUYXJnZXQod2Vic2l0ZURpc3QpLFxuICAgICAgKSxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5zdWJEb21haW4pIHtcbiAgICAgIG5ldyByb3V0ZTUzLkFSZWNvcmQoc2NvcGUsICdXZWJzaXRlU3ViRG9tYWluQWxpYXMnLCB7XG4gICAgICAgIHpvbmU6IGhvc3RlZFpvbmVMb29rdXAsXG4gICAgICAgIHJlY29yZE5hbWU6IHByb3BzLnN1YkRvbWFpbixcbiAgICAgICAgdGFyZ2V0OiByb3V0ZTUzLlJlY29yZFRhcmdldC5mcm9tQWxpYXMoXG4gICAgICAgICAgbmV3IHRhcmdldHMuQ2xvdWRGcm9udFRhcmdldCh3ZWJzaXRlRGlzdCksXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
206
|
+
CreateCloudfrontSite[_b] = { fqn: "cdk-simplewebsite-deploy.CreateCloudfrontSite", version: "2.1.0" };
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLXNpbXBsZXdlYnNpdGUtZGVwbG95LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Nkay1zaW1wbGV3ZWJzaXRlLWRlcGxveS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUFzRDtBQUN0RCwwREFBMEQ7QUFDMUQseURBQXlEO0FBQ3pELDhEQUE4RDtBQUM5RCxtREFBbUQ7QUFDbkQsMkRBQTJEO0FBQzNELHlDQUF5QztBQUN6QywwREFBMEQ7QUFDMUQsMkNBQXVDO0FBbUd2QyxNQUFhLGVBQWdCLFNBQVEsc0JBQVM7SUFDNUMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUE2QjtRQUNyRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLE1BQU0sZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQ3BELElBQUksRUFDSixtQkFBbUIsRUFDbkI7WUFDRSxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7U0FDN0IsQ0FDRixDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQ3pDLEtBQUssRUFDTCx1QkFBdUIsRUFDdkI7WUFDRSxVQUFVLEVBQUUsT0FBTyxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQ3JDLGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87WUFDcEMsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixlQUFlLEVBQUU7Z0JBQ2YsUUFBUSxFQUFFLEtBQUssQ0FBQyxVQUFVO2dCQUMxQixRQUFRLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUk7YUFDbkM7U0FDRixDQUNGLENBQUM7UUFFRixNQUFNLGFBQWEsR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGVBQWUsRUFBRTtZQUMxRCxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztZQUNw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QUFVLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSwyQkFBMkIsRUFBRTtvQkFDekQsSUFBSSxFQUFFLGdCQUFnQjtvQkFDdEIsVUFBVSxFQUFFLEtBQUssQ0FBQyxTQUFTO29CQUMzQixNQUFNLEVBQUUsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQ3BDLElBQUksT0FBTyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUMxQztpQkFDRixDQUFDLENBQUM7WUFDTCxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7O0FBdktILG9EQXdLQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbW92YWxQb2xpY3ksIER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgYWNtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXInO1xuaW1wb3J0ICogYXMgY2xvdWRmcm9udCBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udCc7XG5pbXBvcnQgKiBhcyBvcmlnaW5zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZGZyb250LW9yaWdpbnMnO1xuaW1wb3J0ICogYXMgcm91dGU1MyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtcm91dGU1Myc7XG5pbXBvcnQgKiBhcyB0YXJnZXRzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1yb3V0ZTUzLXRhcmdldHMnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHMzZGVwbG95IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMy1kZXBsb3ltZW50JztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2ljU2l0ZUNvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogTG9jYWwgcGF0aCB0byB0aGUgd2Vic2l0ZSBmb2xkZXIgeW91IHdhbnQgdG8gZGVwbG95IG9uIFMzLlxuICAgKi9cbiAgcmVhZG9ubHkgd2Vic2l0ZUZvbGRlcjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGluZGV4IGRvY3VtZW50IG9mIHRoZSB3ZWJzaXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5kZXhEb2M6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBlcnJvciBkb2N1bWVudCBvZiB0aGUgd2Vic2l0ZS5cbiAgICogQGRlZmF1bHQgLSBObyBlcnJvciBkb2N1bWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGVycm9yRG9jPzogc3RyaW5nO1xuICAvKipcbiAgICogSG9zdGVkIFpvbmUgdXNlZCB0byBjcmVhdGUgdGhlIEROUyByZWNvcmQgZm9yIHRoZSB3ZWJzaXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdGVkWm9uZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkZnJvbnRTaXRlQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBMb2NhbCBwYXRoIHRvIHRoZSB3ZWJzaXRlIGZvbGRlciB5b3Ugd2FudCB0byBkZXBsb3kgb24gUzMuXG4gICAqL1xuICByZWFkb25seSB3ZWJzaXRlRm9sZGVyOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaW5kZXggZG9jdW1lbnQgb2YgdGhlIHdlYnNpdGUuXG4gICAqL1xuICByZWFkb25seSBpbmRleERvYzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGVycm9yIGRvY3VtZW50IG9mIHRoZSB3ZWJzaXRlLlxuICAgKiBAZGVmYXVsdCAtIE5vIGVycm9yIGRvY3VtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgZXJyb3JEb2M/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBIb3N0ZWQgWm9uZSB1c2VkIHRvIGNyZWF0ZSB0aGUgRE5TIHJlY29yZCBmb3IgdGhlIHdlYnNpdGUuXG4gICAqL1xuICByZWFkb25seSBob3N0ZWRab25lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBVc2VkIHRvIGRlcGxveSBhIENsb3VkZnJvbnQgc2l0ZSB3aXRoIGEgc2luZ2xlIGRvbWFpbi4gZS5nLiBzYW1wbGUuZXhhbXBsZS5jb21cbiAgICogSWYgeW91IGluY2x1ZGUgYSB2YWx1ZSBmb3IgYm90aCBkb21haW4gYW5kIHN1YkRvbWFpbixcbiAgICogYW4gZXJyb3Igd2lsbCBiZSB0aHJvd24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gdmFsdWVcbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdWJkb21haW4gbmFtZSB5b3Ugd2FudCB0byBkZXBsb3kuIGUuZy4gd3d3LmV4YW1wbGUuY29tXG4gICAqIElmIHlvdSBpbmNsdWRlIGEgdmFsdWUgZm9yIGJvdGggZG9tYWluIGFuZCBzdWJEb21haW4sXG4gICAqIGFuIGVycm9yIHdpbGwgYmUgdGhyb3duLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHZhbHVlXG4gICAqL1xuICByZWFkb25seSBzdWJEb21haW4/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcHJpY2UgY2xhc3MgZGV0ZXJtaW5lcyBob3cgbWFueSBlZGdlIGxvY2F0aW9ucyBDbG91ZEZyb250IHdpbGwgdXNlIGZvciB5b3VyIGRpc3RyaWJ1dGlvbi5cbiAgICogQGRlZmF1bHQgUHJpY2VDbGFzcy5QUklDRV9DTEFTU18xMDAuXG4gICAqIEBzZWUgaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9jbG91ZGZyb250L3ByaWNpbmcvLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJpY2VDbGFzcz86IGNsb3VkZnJvbnQuUHJpY2VDbGFzcztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNhY2hlIGJlaGF2aW9ycyBmb3IgZGlmZmVyZW50IHBhdGggcGF0dGVybnMuXG4gICAqIEBkZWZhdWx0IC0gTm8gYWRkaXRpb25hbCBjYWNoZSBiZWhhdmlvcnMuXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsQmVoYXZpb3JzPzogUmVjb3JkPHN0cmluZywgY2xvdWRmcm9udC5CZWhhdmlvck9wdGlvbnM+O1xuICAvKipcbiAgICogRW5hYmxlIHJlc3BvbnNlIGhlYWRlcnMgcG9saWN5IGZvciBzZWN1cml0eSBoZWFkZXJzLlxuICAgKiBAZGVmYXVsdCBmYWxzZSAtIE5vIHNlY3VyaXR5IGhlYWRlcnMgcG9saWN5IGFwcGxpZWQuXG4gICAqL1xuICByZWFkb25seSBlbmFibGVTZWN1cml0eUhlYWRlcnM/OiBib29sZWFuO1xuICAvKipcbiAgICogRW5hYmxlIElQdjYgc3VwcG9ydCB3aXRoIEFBQUEgcmVjb3Jkcy5cbiAgICogQGRlZmF1bHQgZmFsc2UgLSBObyBJUHY2IHN1cHBvcnQuXG4gICAqL1xuICByZWFkb25seSBlbmFibGVJcHY2PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEN1c3RvbSBlcnJvciByZXNwb25zZXMgZm9yIGRpZmZlcmVudCBIVFRQIHN0YXR1cyBjb2Rlcy5cbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IGVycm9yIHJlc3BvbnNlcyBiYXNlZCBvbiBlcnJvckRvYyBzZXR0aW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tRXJyb3JSZXNwb25zZXM/OiBjbG91ZGZyb250LkVycm9yUmVzcG9uc2VbXTtcbiAgLyoqXG4gICAqIEVuYWJsZSBDbG91ZEZyb250IGFjY2VzcyBsb2dnaW5nLlxuICAgKiBAZGVmYXVsdCBmYWxzZSAtIE5vIGFjY2VzcyBsb2dnaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlTG9nZ2luZz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTMyBidWNrZXQgZm9yIENsb3VkRnJvbnQgYWNjZXNzIGxvZ3MuIElmIG5vdCBwcm92aWRlZCBhbmQgbG9nZ2luZyBpcyBlbmFibGVkLCBhIG5ldyBidWNrZXQgd2lsbCBiZSBjcmVhdGVkLlxuICAgKiBAZGVmYXVsdCAtIE5ldyBidWNrZXQgY3JlYXRlZCBpZiBsb2dnaW5nIGlzIGVuYWJsZWQuXG4gICAqL1xuICByZWFkb25seSBsb2dzQnVja2V0PzogczMuSUJ1Y2tldDtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIFdBRiBXZWIgQUNMIEFSTiBmb3IgZW5oYW5jZWQgc2VjdXJpdHkuXG4gICAqIEBkZWZhdWx0IC0gTm8gV0FGIGludGVncmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgd2ViQWNsSWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBDcmVhdGVCYXNpY1NpdGUgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQmFzaWNTaXRlQ29uZmlndXJhdGlvbikge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBob3N0ZWRab25lTG9va3VwID0gcm91dGU1My5Ib3N0ZWRab25lLmZyb21Mb29rdXAoXG4gICAgICB0aGlzLFxuICAgICAgJ1dlYnNpdGVIb3N0ZWRab25lJyxcbiAgICAgIHtcbiAgICAgICAgZG9tYWluTmFtZTogcHJvcHMuaG9zdGVkWm9uZSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNvbnN0IHdlYnNpdGVSZWRpcmVjdEJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQoXG4gICAgICBzY29wZSxcbiAgICAgICdXZWJzaXRlUmVkaXJlY3RCdWNrZXQnLFxuICAgICAge1xuICAgICAgICBidWNrZXROYW1lOiBgd3d3LiR7cHJvcHMuaG9zdGVkWm9uZX1gLFxuICAgICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlLFxuICAgICAgICB3ZWJzaXRlUmVkaXJlY3Q6IHtcbiAgICAgICAgICBob3N0TmFtZTogcHJvcHMuaG9zdGVkWm9uZSxcbiAgICAgICAgICBwcm90b2NvbDogczMuUmVkaXJlY3RQcm90b2NvbC5IVFRQLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgY29uc3Qgd2Vic2l0ZUJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQoc2NvcGUsICdXZWJzaXRlQnVja2V0Jywge1xuICAgICAgYnVja2V0TmFtZTogcHJvcHMuaG9zdGVkWm9uZSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlLFxuICAgICAgd2Vic2l0ZUluZGV4RG9jdW1lbnQ6IHByb3BzLmluZGV4RG9jLFxuICAgICAgd2Vic2l0ZUVycm9yRG9jdW1lbnQ6IHByb3BzLmVycm9yRG9jLFxuICAgICAgcHVibGljUmVhZEFjY2VzczogdHJ1ZSxcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiB7XG4gICAgICAgIGJsb2NrUHVibGljUG9saWN5OiBmYWxzZSxcbiAgICAgICAgYmxvY2tQdWJsaWNBY2xzOiBmYWxzZSxcbiAgICAgICAgaWdub3JlUHVibGljQWNsczogZmFsc2UsXG4gICAgICAgIHJlc3RyaWN0UHVibGljQnVja2V0czogZmFsc2UsXG4gICAgICB9LFxuICAgICAgZW5jcnlwdGlvbjogczMuQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgIH0pO1xuXG4gICAgbmV3IHMzZGVwbG95LkJ1Y2tldERlcGxveW1lbnQoc2NvcGUsICdXZWJzaXRlRGVwbG95Jywge1xuICAgICAgc291cmNlczogW3MzZGVwbG95LlNvdXJjZS5hc3NldChwcm9wcy53ZWJzaXRlRm9sZGVyKV0sXG4gICAgICBkZXN0aW5hdGlvbkJ1Y2tldDogd2Vic2l0ZUJ1Y2tldCxcbiAgICB9KTtcblxuICAgIG5ldyByb3V0ZTUzLkFSZWNvcmQoc2NvcGUsICdXZWJzaXRlQWxpYXMnLCB7XG4gICAgICB6b25lOiBob3N0ZWRab25lTG9va3VwLFxuICAgICAgcmVjb3JkTmFtZTogcHJvcHMuaG9zdGVkWm9uZSxcbiAgICAgIHRhcmdldDogcm91dGU1My5SZWNvcmRUYXJnZXQuZnJvbUFsaWFzKFxuICAgICAgICBuZXcgdGFyZ2V0cy5CdWNrZXRXZWJzaXRlVGFyZ2V0KHdlYnNpdGVCdWNrZXQpLFxuICAgICAgKSxcbiAgICB9KTtcblxuICAgIG5ldyByb3V0ZTUzLkFSZWNvcmQoc2NvcGUsICdXZWJzaXRlUmVkaXJlY3RBbGlhcycsIHtcbiAgICAgIHpvbmU6IGhvc3RlZFpvbmVMb29rdXAsXG4gICAgICByZWNvcmROYW1lOiBgd3d3LiR7cHJvcHMuaG9zdGVkWm9uZX1gLFxuICAgICAgdGFyZ2V0OiByb3V0ZTUzLlJlY29yZFRhcmdldC5mcm9tQWxpYXMoXG4gICAgICAgIG5ldyB0YXJnZXRzLkJ1Y2tldFdlYnNpdGVUYXJnZXQod2Vic2l0ZVJlZGlyZWN0QnVja2V0KSxcbiAgICAgICksXG4gICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIENyZWF0ZUNsb3VkZnJvbnRTaXRlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBDbG91ZGZyb250U2l0ZUNvbmZpZ3VyYXRpb24sXG4gICkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAocHJvcHMuZG9tYWluICYmIHByb3BzLnN1YkRvbWFpbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnRG9tYWluIGFuZCBzdWIgZG9tYWluIHBhcmFtZXRlcnMgY2Fubm90IGJvdGggYmUgZGVmaW5lZCcsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGhvc3RlZFpvbmVMb29rdXAgPSByb3V0ZTUzLkhvc3RlZFpvbmUuZnJvbUxvb2t1cChcbiAgICAgIHRoaXMsXG4gICAgICAnV2Vic2l0ZUhvc3RlZFpvbmUnLFxuICAgICAge1xuICAgICAgICBkb21haW5OYW1lOiBwcm9wcy5ob3N0ZWRab25lLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgLy8gVXNlIGN1c3RvbSBlcnJvciByZXNwb25zZXMgaWYgcHJvdmlkZWQsIG90aGVyd2lzZSB1c2UgZGVmYXVsdCBsb2dpY1xuICAgIGNvbnN0IGVycm9yUmVzcG9uc2VzOiBjbG91ZGZyb250LkVycm9yUmVzcG9uc2VbXSA9IHByb3BzLmN1c3RvbUVycm9yUmVzcG9uc2VzIHx8IFtdO1xuICAgIGlmICghcHJvcHMuY3VzdG9tRXJyb3JSZXNwb25zZXMpIHtcbiAgICAgIGlmIChwcm9wcy5lcnJvckRvYykge1xuICAgICAgICBlcnJvclJlc3BvbnNlcy5wdXNoKHtcbiAgICAgICAgICBodHRwU3RhdHVzOiA0MDQsXG4gICAgICAgICAgcmVzcG9uc2VQYWdlUGF0aDogYC8ke3Byb3BzLmVycm9yRG9jfWAsXG4gICAgICAgIH0pO1xuICAgICAgICBlcnJvclJlc3BvbnNlcy5wdXNoKHtcbiAgICAgICAgICBodHRwU3RhdHVzOiA0MDMsXG4gICAgICAgICAgcmVzcG9uc2VQYWdlUGF0aDogYC8ke3Byb3BzLmVycm9yRG9jfWAsXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXJyb3JSZXNwb25zZXMucHVzaCh7XG4gICAgICAgICAgaHR0cFN0YXR1czogNDA0LFxuICAgICAgICAgIHJlc3BvbnNlSHR0cFN0YXR1czogMjAwLFxuICAgICAgICAgIHJlc3BvbnNlUGFnZVBhdGg6IGAvJHtwcm9wcy5pbmRleERvY31gLFxuICAgICAgICB9KTtcbiAgICAgICAgZXJyb3JSZXNwb25zZXMucHVzaCh7XG4gICAgICAgICAgaHR0cFN0YXR1czogNDAzLFxuICAgICAgICAgIHJlc3BvbnNlSHR0cFN0YXR1czogMjAwLFxuICAgICAgICAgIHJlc3BvbnNlUGFnZVBhdGg6IGAvJHtwcm9wcy5pbmRleERvY31gLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzdWJqZWN0QWx0ZXJuYXRpdmVOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAocHJvcHMuZG9tYWluKSBzdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcy5wdXNoKHByb3BzLmRvbWFpbik7XG4gICAgaWYgKHByb3BzLnN1YkRvbWFpbikgc3ViamVjdEFsdGVybmF0aXZlTmFtZXMucHVzaChwcm9wcy5zdWJEb21haW4pO1xuXG4gICAgY29uc3Qgd2Vic2l0ZUNlcnQgPSBuZXcgYWNtLkNlcnRpZmljYXRlKHRoaXMsICdXZWJzaXRlQ2VydCcsIHtcbiAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmhvc3RlZFpvbmUsXG4gICAgICBzdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcyxcbiAgICAgIHZhbGlkYXRpb246IGFjbS5DZXJ0aWZpY2F0ZVZhbGlkYXRpb24uZnJvbURucyhob3N0ZWRab25lTG9va3VwKSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHdlYnNpdGVCdWNrZXQgPSBuZXcgczMuQnVja2V0KHNjb3BlLCAnV2Vic2l0ZUJ1Y2tldCcsIHtcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlLFxuICAgICAgZW5jcnlwdGlvbjogczMuQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgIH0pO1xuXG4gICAgY29uc3QgZG9tYWluTmFtZXM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKHByb3BzLmRvbWFpbikge1xuICAgICAgZG9tYWluTmFtZXMucHVzaChwcm9wcy5kb21haW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkb21haW5OYW1lcy5wdXNoKHByb3BzLmhvc3RlZFpvbmUpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5zdWJEb21haW4pIGRvbWFpbk5hbWVzLnB1c2gocHJvcHMuc3ViRG9tYWluKTtcblxuICAgIC8vIENyZWF0ZSBhY2Nlc3MgbG9ncyBidWNrZXQgaWYgbG9nZ2luZyBpcyBlbmFibGVkIGJ1dCBubyBidWNrZXQgcHJvdmlkZWRcbiAgICBjb25zdCBsb2dzQnVja2V0ID0gcHJvcHMuZW5hYmxlTG9nZ2luZ1xuICAgICAgPyAocHJvcHMubG9nc0J1Y2tldCB8fCBuZXcgczMuQnVja2V0KHRoaXMsICdBY2Nlc3NMb2dzQnVja2V0Jywge1xuICAgICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgICAgIGF1dG9EZWxldGVPYmplY3RzOiB0cnVlLFxuICAgICAgICBlbmNyeXB0aW9uOiBzMy5CdWNrZXRFbmNyeXB0aW9uLlMzX01BTkFHRUQsXG4gICAgICB9KSlcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgLy8gQ3JlYXRlIHNlY3VyaXR5IGhlYWRlcnMgcG9saWN5IGlmIGVuYWJsZWRcbiAgICBjb25zdCByZXNwb25zZUhlYWRlcnNQb2xpY3kgPSBwcm9wcy5lbmFibGVTZWN1cml0eUhlYWRlcnNcbiAgICAgID8gbmV3IGNsb3VkZnJvbnQuUmVzcG9uc2VIZWFkZXJzUG9saWN5KHRoaXMsICdTZWN1cml0eUhlYWRlcnNQb2xpY3knLCB7XG4gICAgICAgIHNlY3VyaXR5SGVhZGVyc0JlaGF2aW9yOiB7XG4gICAgICAgICAgY29udGVudFR5cGVPcHRpb25zOiB7IG92ZXJyaWRlOiB0cnVlIH0sXG4gICAgICAgICAgZnJhbWVPcHRpb25zOiB7IGZyYW1lT3B0aW9uOiBjbG91ZGZyb250LkhlYWRlcnNGcmFtZU9wdGlvbi5ERU5ZLCBvdmVycmlkZTogdHJ1ZSB9LFxuICAgICAgICAgIHJlZmVycmVyUG9saWN5OiB7IHJlZmVycmVyUG9saWN5OiBjbG91ZGZyb250LkhlYWRlcnNSZWZlcnJlclBvbGljeS5TVFJJQ1RfT1JJR0lOX1dIRU5fQ1JPU1NfT1JJR0lOLCBvdmVycmlkZTogdHJ1ZSB9LFxuICAgICAgICAgIHN0cmljdFRyYW5zcG9ydFNlY3VyaXR5OiB7XG4gICAgICAgICAgICBhY2Nlc3NDb250cm9sTWF4QWdlOiBEdXJhdGlvbi5zZWNvbmRzKDMxNTM2MDAwKSxcbiAgICAgICAgICAgIGluY2x1ZGVTdWJkb21haW5zOiB0cnVlLFxuICAgICAgICAgICAgcHJlbG9hZDogdHJ1ZSxcbiAgICAgICAgICAgIG92ZXJyaWRlOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeHNzUHJvdGVjdGlvbjogeyBwcm90ZWN0aW9uOiB0cnVlLCBtb2RlQmxvY2s6IHRydWUsIG92ZXJyaWRlOiB0cnVlIH0sXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCB3ZWJzaXRlRGlzdCA9IG5ldyBjbG91ZGZyb250LkRpc3RyaWJ1dGlvbihzY29wZSwgJ1dlYnNpdGVEaXN0Jywge1xuICAgICAgZGVmYXVsdEJlaGF2aW9yOiB7XG4gICAgICAgIG9yaWdpbjogb3JpZ2lucy5TM0J1Y2tldE9yaWdpbi53aXRoT3JpZ2luQWNjZXNzQ29udHJvbCh3ZWJzaXRlQnVja2V0KSxcbiAgICAgICAgYWxsb3dlZE1ldGhvZHM6IGNsb3VkZnJvbnQuQWxsb3dlZE1ldGhvZHMuQUxMT1dfR0VUX0hFQURfT1BUSU9OUyxcbiAgICAgICAgdmlld2VyUHJvdG9jb2xQb2xpY3k6IGNsb3VkZnJvbnQuVmlld2VyUHJvdG9jb2xQb2xpY3kuUkVESVJFQ1RfVE9fSFRUUFMsXG4gICAgICAgIGNhY2hlUG9saWN5OiBjbG91ZGZyb250LkNhY2hlUG9saWN5LkNBQ0hJTkdfT1BUSU1JWkVELFxuICAgICAgICBvcmlnaW5SZXF1ZXN0UG9saWN5OiBjbG91ZGZyb250Lk9yaWdpblJlcXVlc3RQb2xpY3kuQ09SU19TM19PUklHSU4sXG4gICAgICAgIHJlc3BvbnNlSGVhZGVyc1BvbGljeSxcbiAgICAgIH0sXG4gICAgICBhZGRpdGlvbmFsQmVoYXZpb3JzOiBwcm9wcy5hZGRpdGlvbmFsQmVoYXZpb3JzLFxuICAgICAgbWluaW11bVByb3RvY29sVmVyc2lvbjogY2xvdWRmcm9udC5TZWN1cml0eVBvbGljeVByb3RvY29sLlRMU19WMV8yXzIwMjEsXG4gICAgICBodHRwVmVyc2lvbjogY2xvdWRmcm9udC5IdHRwVmVyc2lvbi5IVFRQMl9BTkRfMyxcbiAgICAgIHByaWNlQ2xhc3M6IHByb3BzLnByaWNlQ2xhc3MgPz8gY2xvdWRmcm9udC5QcmljZUNsYXNzLlBSSUNFX0NMQVNTXzEwMCxcbiAgICAgIGVycm9yUmVzcG9uc2VzLFxuICAgICAgZGVmYXVsdFJvb3RPYmplY3Q6IHByb3BzLmluZGV4RG9jLFxuICAgICAgZG9tYWluTmFtZXMsXG4gICAgICBjZXJ0aWZpY2F0ZTogd2Vic2l0ZUNlcnQsXG4gICAgICBsb2dCdWNrZXQ6IGxvZ3NCdWNrZXQsXG4gICAgICBsb2dJbmNsdWRlc0Nvb2tpZXM6IGZhbHNlLFxuICAgICAgd2ViQWNsSWQ6IHByb3BzLndlYkFjbElkLFxuICAgIH0pO1xuXG4gICAgbmV3IHMzZGVwbG95LkJ1Y2tldERlcGxveW1lbnQoc2NvcGUsICdXZWJzaXRlRGVwbG95Jywge1xuICAgICAgc291cmNlczogW3MzZGVwbG95LlNvdXJjZS5hc3NldChwcm9wcy53ZWJzaXRlRm9sZGVyKV0sXG4gICAgICBkZXN0aW5hdGlvbkJ1Y2tldDogd2Vic2l0ZUJ1Y2tldCxcbiAgICAgIGRpc3RyaWJ1dGlvbjogd2Vic2l0ZURpc3QsXG4gICAgfSk7XG5cbiAgICBuZXcgcm91dGU1My5BUmVjb3JkKHNjb3BlLCAnV2Vic2l0ZURvbWFpbkFsaWFzJywge1xuICAgICAgem9uZTogaG9zdGVkWm9uZUxvb2t1cCxcbiAgICAgIHJlY29yZE5hbWU6IHByb3BzLmRvbWFpbiA/IHByb3BzLmRvbWFpbiA6IHByb3BzLmhvc3RlZFpvbmUsXG4gICAgICB0YXJnZXQ6IHJvdXRlNTMuUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhcbiAgICAgICAgbmV3IHRhcmdldHMuQ2xvdWRGcm9udFRhcmdldCh3ZWJzaXRlRGlzdCksXG4gICAgICApLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIElQdjYgc3VwcG9ydCBpZiBlbmFibGVkXG4gICAgaWYgKHByb3BzLmVuYWJsZUlwdjYpIHtcbiAgICAgIG5ldyByb3V0ZTUzLkFhYWFSZWNvcmQoc2NvcGUsICdXZWJzaXRlRG9tYWluQWxpYXNJcHY2Jywge1xuICAgICAgICB6b25lOiBob3N0ZWRab25lTG9va3VwLFxuICAgICAgICByZWNvcmROYW1lOiBwcm9wcy5kb21haW4gPyBwcm9wcy5kb21haW4gOiBwcm9wcy5ob3N0ZWRab25lLFxuICAgICAgICB0YXJnZXQ6IHJvdXRlNTMuUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhcbiAgICAgICAgICBuZXcgdGFyZ2V0cy5DbG91ZEZyb250VGFyZ2V0KHdlYnNpdGVEaXN0KSxcbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5zdWJEb21haW4pIHtcbiAgICAgIG5ldyByb3V0ZTUzLkFSZWNvcmQoc2NvcGUsICdXZWJzaXRlU3ViRG9tYWluQWxpYXMnLCB7XG4gICAgICAgIHpvbmU6IGhvc3RlZFpvbmVMb29rdXAsXG4gICAgICAgIHJlY29yZE5hbWU6IHByb3BzLnN1YkRvbWFpbixcbiAgICAgICAgdGFyZ2V0OiByb3V0ZTUzLlJlY29yZFRhcmdldC5mcm9tQWxpYXMoXG4gICAgICAgICAgbmV3IHRhcmdldHMuQ2xvdWRGcm9udFRhcmdldCh3ZWJzaXRlRGlzdCksXG4gICAgICAgICksXG4gICAgICB9KTtcblxuICAgICAgLy8gQWRkIElQdjYgc3VwcG9ydCBmb3Igc3ViZG9tYWluIGlmIGVuYWJsZWRcbiAgICAgIGlmIChwcm9wcy5lbmFibGVJcHY2KSB7XG4gICAgICAgIG5ldyByb3V0ZTUzLkFhYWFSZWNvcmQoc2NvcGUsICdXZWJzaXRlU3ViRG9tYWluQWxpYXNJcHY2Jywge1xuICAgICAgICAgIHpvbmU6IGhvc3RlZFpvbmVMb29rdXAsXG4gICAgICAgICAgcmVjb3JkTmFtZTogcHJvcHMuc3ViRG9tYWluLFxuICAgICAgICAgIHRhcmdldDogcm91dGU1My5SZWNvcmRUYXJnZXQuZnJvbUFsaWFzKFxuICAgICAgICAgICAgbmV3IHRhcmdldHMuQ2xvdWRGcm9udFRhcmdldCh3ZWJzaXRlRGlzdCksXG4gICAgICAgICAgKSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -51,12 +51,12 @@
|
|
|
51
51
|
"eslint-plugin-import": "^2.32.0",
|
|
52
52
|
"jest": "^27",
|
|
53
53
|
"jest-junit": "^16",
|
|
54
|
-
"jsii": "~5.
|
|
55
|
-
"jsii-diff": "^1.
|
|
54
|
+
"jsii": "~5.8.0",
|
|
55
|
+
"jsii-diff": "^1.114.1",
|
|
56
56
|
"jsii-docgen": "^10.5.0",
|
|
57
|
-
"jsii-pacmak": "^1.
|
|
58
|
-
"jsii-rosetta": "~5.
|
|
59
|
-
"projen": "^0.
|
|
57
|
+
"jsii-pacmak": "^1.114.1",
|
|
58
|
+
"jsii-rosetta": "~5.8.0",
|
|
59
|
+
"projen": "^0.96.2",
|
|
60
60
|
"ts-jest": "^27",
|
|
61
61
|
"typescript": "^4.9.5"
|
|
62
62
|
},
|
|
@@ -72,7 +72,7 @@
|
|
|
72
72
|
"publishConfig": {
|
|
73
73
|
"access": "public"
|
|
74
74
|
},
|
|
75
|
-
"version": "2.0
|
|
75
|
+
"version": "2.1.0",
|
|
76
76
|
"jest": {
|
|
77
77
|
"coverageProvider": "v8",
|
|
78
78
|
"testMatch": [
|