From ca960727ac7b09ed12360918d7d55368a52c3a23 Mon Sep 17 00:00:00 2001 From: Stefano Vozza Date: Thu, 22 Feb 2024 18:02:51 +0000 Subject: [PATCH] update to v2.1.6 --- CHANGELOG.md | 36 +- README.md | 2 +- solution-manifest.yaml | 2 +- source/backend/discovery/package-lock.json | 20 +- source/backend/discovery/package.json | 4 +- .../package-lock.json | 4 +- .../account-import-templates-api/package.json | 2 +- .../functions/cost-parser/package-lock.json | 4 +- .../functions/cost-parser/package.json | 2 +- .../functions/cur-setup/package-lock.json | 4 +- .../backend/functions/cur-setup/package.json | 2 +- source/backend/functions/drawio/main.py | 41 +- source/backend/functions/drawio/test_main.py | 710 +++++++++++++++++- .../functions/graph-api/package-lock.json | 4 +- .../backend/functions/graph-api/package.json | 2 +- .../functions/metrics/package-lock.json | 4 +- source/backend/functions/metrics/package.json | 2 +- .../opensearch-setup/package-lock.json | 4 +- .../functions/opensearch-setup/package.json | 2 +- .../functions/search-api/package-lock.json | 4 +- .../backend/functions/search-api/package.json | 2 +- .../functions/settings/package-lock.json | 4 +- .../backend/functions/settings/package.json | 2 +- source/cfn/templates/main.template | 6 +- source/frontend/.nsprc | 2 +- source/frontend/package-lock.json | 16 +- source/frontend/package.json | 5 +- source/sdk/js/package-lock.json | 16 +- source/sdk/js/package.json | 2 +- 29 files changed, 801 insertions(+), 109 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 24a620ac..0aa4fa2d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,14 @@ All notable changes to this project are documented in this file. Based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.1.6] - 2024-2-22 + +### Fixed + +- Null error when exporting to draw.io [458](https://github.com/aws-solutions/workload-discovery-on-aws/issues/458) +- Security [vulnerability](https://github.com/advisories/GHSA-78xj-cgh5-2h22) in `ip`. +- Security [vulnerability](https://github.com/advisories/GHSA-3787-6prv-h9w3) in `undici`. + ## [2.1.5] - 2024-1-25 ### Fixed @@ -32,31 +40,31 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Comma in Service Name Results causes GraphQL type error [491](https://github.com/aws-solutions/workload-discovery-on-aws/issues/491) ### Changed -- Frequency at which the scheduled discovery process ECS task runs is now configurable via a CloudFormation parameter. +- Frequency at which the scheduled discovery process ECS task runs is now configurable via a CloudFormation parameter. ## [2.1.2] - 2023-11-14 ### Fixed -- Throttle `ListAccounts` API to prevent rate limiting from stopping the Discovery process discover accounts - in large organisation. [478](https://github.com/aws-solutions/workload-discovery-on-aws/issues/478) +- Throttle `ListAccounts` API to prevent rate limiting from stopping the Discovery process discover accounts +in large organisation. [478](https://github.com/aws-solutions/workload-discovery-on-aws/issues/478) - Only attempt to discover accounts from provided OU and its children, rather than whole organization. - Throttle `SelectAggregateResourceConfig` API to prevent rate limiting from stopping discovery process from reading from the Config aggregator. - Remove Retain on organization-wide StackSet so IAM roles are no longer left in organization's accounts after solution is uninstalled. -- Handle error message difference between AppSync VTL resolvers and JS resolvers that prevented discovery process from retrying - requests to DB if payload was too large. +- Handle error message difference between AppSync VTL resolvers and JS resolvers that prevented discovery process from retrying +requests to DB if payload was too large. ### Changed -- Move GraphQL queries that queried whole Neptune database to use DynamoDB, significantly reducing load on Neptune and - improving rendering times on the frontend. +- Move GraphQL queries that queried whole Neptune database to use DynamoDB, significantly reducing load on Neptune and +improving rendering times on the frontend. - Retrieve the following resource types from AWS Config advanced query rather than `ListAggregateDiscoveredResources` - and `BatchGetAggregateResourceConfig`. - - `AWS::EC2::LaunchTemplate` - - `AWS::EC2::TransitGateway` - - `AWS::EC2::TransitGatewayAttachment` - - `AWS::EC2::TransitGatewayRouteTable` - - `AWS::Kinesis::Stream` - - `AWS::MSK::Cluster` +and `BatchGetAggregateResourceConfig`. + - `AWS::EC2::LaunchTemplate` + - `AWS::EC2::TransitGateway` + - `AWS::EC2::TransitGatewayAttachment` + - `AWS::EC2::TransitGatewayRouteTable` + - `AWS::Kinesis::Stream` + - `AWS::MSK::Cluster` - Ensure OAC name length does not exceed 64 characters. [462](https://github.com/aws-solutions/workload-discovery-on-aws/issues/462) - No longer ingest resources with status `ResourceNotRecorded`. - Improve performance of `getResourceChanges` function in Discovery process from O(n2) to O(n). diff --git a/README.md b/README.md index 7940027e..7405e62d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Workload Discovery on AWS (v2.1.5) +# Workload Discovery on AWS (v2.1.6) Workload Discovery on AWS is a tool that quickly visualizes AWS Cloud workloads as architecture diagrams. You can use the solution to build, customize, and share detailed workload visualizations based on live data from AWS. diff --git a/solution-manifest.yaml b/solution-manifest.yaml index 34ec08e3..4b10363e 100644 --- a/solution-manifest.yaml +++ b/solution-manifest.yaml @@ -1,7 +1,7 @@ --- id: SO0075 name: workload-discovery-on-aws -version: v2.1.5 +version: v2.1.6 regions: commercial: - us-east-1 diff --git a/source/backend/discovery/package-lock.json b/source/backend/discovery/package-lock.json index 2fef5e48..a9022e72 100644 --- a/source/backend/discovery/package-lock.json +++ b/source/backend/discovery/package-lock.json @@ -1,12 +1,12 @@ { "name": "wd-discovery", - "version": "2.1.5", + "version": "2.1.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "wd-discovery", - "version": "2.1.5", + "version": "2.1.6", "license": "Apache-2.0", "dependencies": { "@aws-sdk/client-api-gateway": "3.485.0", @@ -33,7 +33,7 @@ "iterare": "1.2.1", "p-throttle": "4.0.0", "ramda": "0.28.0", - "undici": "5.27.2", + "undici": "6.6.2", "winston": "3.3.3" }, "devDependencies": { @@ -11018,14 +11018,14 @@ } }, "node_modules/undici": { - "version": "5.27.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.27.2.tgz", - "integrity": "sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.6.2.tgz", + "integrity": "sha512-vSqvUE5skSxQJ5sztTZ/CdeJb1Wq0Hf44hlYMciqHghvz+K88U0l7D6u1VsndoFgskDcnU+nG3gYmMzJVzd9Qg==", "dependencies": { "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=14.0" + "node": ">=18.0" } }, "node_modules/uri-js": { @@ -20463,9 +20463,9 @@ } }, "undici": { - "version": "5.27.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.27.2.tgz", - "integrity": "sha512-iS857PdOEy/y3wlM3yRp+6SNQQ6xU0mmZcwRSriqk+et/cwWAtwmIGf6WkoDN2EK/AMdCO/dfXzIwi+rFMrjjQ==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.6.2.tgz", + "integrity": "sha512-vSqvUE5skSxQJ5sztTZ/CdeJb1Wq0Hf44hlYMciqHghvz+K88U0l7D6u1VsndoFgskDcnU+nG3gYmMzJVzd9Qg==", "requires": { "@fastify/busboy": "^2.0.0" } diff --git a/source/backend/discovery/package.json b/source/backend/discovery/package.json index 0831b55a..51fa9f4f 100644 --- a/source/backend/discovery/package.json +++ b/source/backend/discovery/package.json @@ -1,6 +1,6 @@ { "name": "wd-discovery", - "version": "2.1.5", + "version": "2.1.6", "description": "This contains the code that forms the discovery process for AWS Perspective.", "main": "index.js", "scripts": { @@ -44,7 +44,7 @@ "iterare": "1.2.1", "p-throttle": "4.0.0", "ramda": "0.28.0", - "undici": "5.27.2", + "undici": "6.6.2", "winston": "3.3.3" }, "devDependencies": { diff --git a/source/backend/functions/account-import-templates-api/package-lock.json b/source/backend/functions/account-import-templates-api/package-lock.json index ad2e7cf8..66b3c666 100644 --- a/source/backend/functions/account-import-templates-api/package-lock.json +++ b/source/backend/functions/account-import-templates-api/package-lock.json @@ -1,12 +1,12 @@ { "name": "wd-import-templates", - "version": "2.1.5", + "version": "2.1.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "wd-import-templates", - "version": "2.1.5", + "version": "2.1.6", "license": "Apache-2.0", "devDependencies": { "chai": "^4.3.10", diff --git a/source/backend/functions/account-import-templates-api/package.json b/source/backend/functions/account-import-templates-api/package.json index 92a3796c..70e744ee 100644 --- a/source/backend/functions/account-import-templates-api/package.json +++ b/source/backend/functions/account-import-templates-api/package.json @@ -1,6 +1,6 @@ { "name": "wd-import-templates", - "version": "2.1.5", + "version": "2.1.6", "description": "Lambda function that serves cfn templates for account and region importing", "main": "index.js", "scripts": { diff --git a/source/backend/functions/cost-parser/package-lock.json b/source/backend/functions/cost-parser/package-lock.json index 31c0df95..cb9b489f 100644 --- a/source/backend/functions/cost-parser/package-lock.json +++ b/source/backend/functions/cost-parser/package-lock.json @@ -1,12 +1,12 @@ { "name": "wd-cost", - "version": "2.1.5", + "version": "2.1.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "wd-cost", - "version": "2.1.5", + "version": "2.1.6", "license": "Apache-2.0", "dependencies": { "add": "2.0.6", diff --git a/source/backend/functions/cost-parser/package.json b/source/backend/functions/cost-parser/package.json index 3f55e85c..78b0aeed 100644 --- a/source/backend/functions/cost-parser/package.json +++ b/source/backend/functions/cost-parser/package.json @@ -1,6 +1,6 @@ { "name": "wd-cost", - "version": "2.1.5", + "version": "2.1.6", "description": "", "main": "index.js", "scripts": { diff --git a/source/backend/functions/cur-setup/package-lock.json b/source/backend/functions/cur-setup/package-lock.json index 7973d48a..7c113d9c 100644 --- a/source/backend/functions/cur-setup/package-lock.json +++ b/source/backend/functions/cur-setup/package-lock.json @@ -1,12 +1,12 @@ { "name": "perspective-cur-setup", - "version": "2.1.5", + "version": "2.1.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "perspective-cur-setup", - "version": "2.1.5", + "version": "2.1.6", "license": "Apache-2.0", "dependencies": { "ramda": "0.28.0" diff --git a/source/backend/functions/cur-setup/package.json b/source/backend/functions/cur-setup/package.json index b975874a..8a7d91dc 100644 --- a/source/backend/functions/cur-setup/package.json +++ b/source/backend/functions/cur-setup/package.json @@ -1,6 +1,6 @@ { "name": "perspective-cur-setup", - "version": "2.1.5", + "version": "2.1.6", "description": "", "main": "index.js", "scripts": { diff --git a/source/backend/functions/drawio/main.py b/source/backend/functions/drawio/main.py index 349a011a..c6520f26 100644 --- a/source/backend/functions/drawio/main.py +++ b/source/backend/functions/drawio/main.py @@ -22,12 +22,11 @@ class Node: - Edge = Connection info for nodes, produce arrows """ - def __init__(self, node_id, node_type, label, title, level, center_x, center_y, is_end_node): + def __init__(self, node_id, node_type, label, title, center_x, center_y, is_end_node): self.node_id = node_id self.node_type = node_type self.label = label self.title = title - self.level = level self.center_x = center_x self.center_y = center_y self.style = types[self.node_type]['style'] @@ -140,25 +139,6 @@ def get_xml_object(self): return obj -# this function mutates the items in the list passed in to it -def add_level_to_nodes(nodes): - node_dict = {node['id']: node for node in nodes} - - def get_level(node): - if 'parent' not in node: - return 0 - - parent = node_dict[node['parent']] - - if 'level' not in parent: - return get_level(parent) + 1 - else: - return parent['level'] + 1 - - for node in nodes: - node['level'] = get_level(node) - - def handler(event, _): """ Main Lambda Handler @@ -169,11 +149,9 @@ def handler(event, _): nodes = args.get('nodes', []) edges = args.get('edges', []) - add_level_to_nodes(nodes) - for node in nodes: - node_id, node_type, label, level, title, position = \ - itemgetter('id', 'type', 'label', 'level', 'title', 'position')(node) + node_id, node_type, label, title, position = \ + itemgetter('id', 'type', 'label', 'title', 'position')(node) if node_type == 'resource' and 'image' in node: node_type = node['image'].split('/')[-1].split('.')[0] @@ -181,17 +159,16 @@ def handler(event, _): x = position['x'] y = position['y'] is_end_node = node['type'] == 'resource' - parent = node.get('parent') - node = Node(node_id, node_type, label, title, level, x, y, is_end_node) + node = Node(node_id, node_type, label, title, x, y, is_end_node) node_dict[node_id] = node - if parent and parent in node_dict: - node_dict[parent].add_child(node) + for node in nodes: + node_id = node['id'] + parent = node.get('parent') + if parent: + node_dict[parent].add_child(node_dict[node_id]) elements = list(node_dict.values()) - # if the elements aren't sorted by level, it causes null errors when - # creating the XML - elements.sort(key=lambda x: x.level) for edge in edges: edge_id, source, target = itemgetter('id', 'source', 'target')(edge) diff --git a/source/backend/functions/drawio/test_main.py b/source/backend/functions/drawio/test_main.py index bc379f3c..1c085f8d 100644 --- a/source/backend/functions/drawio/test_main.py +++ b/source/backend/functions/drawio/test_main.py @@ -1,7 +1,7 @@ # Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 - -from main import handler +import urllib +from main import deflate_and_base64_encode, handler def test_diagram_with_nodes_and_edges(): @@ -88,7 +88,711 @@ def test_diagram_with_nodes_and_edges(): ] }} - expected = 'https://app.diagrams.net?title=AWS%20Architecture%20Diagram.xml#R7Vr7c9pIEv5XXL4fs070gMTEy1YBwlheRlhGgGHryiUkRUhIiEICPf76%2B3okYXByqST7vKpLFZlRz0zP9NeP6Zb8c5gNduZ2xSLbCX75eRdFyS8%2Fh1nPCYILz25fCpcX784I4uXF1tw5m6Qei5a%2BYyV8LDv5d3kRmEsneE00LSva0%2BIz8nGHOMkDp325jbxNErd%2F%2B034Sfj3T78Jb6Vm1anbD2VHrP%2FHjKpTtx%2FKjlhPF6v1Ys2Qd6r%2Fq%2BlCtV4oGf77JtongbdxetFmAyHbwo27M20P0veiINq1N9HGuVklYdAWb9KVlzjjrWk57RSI3nyKNsnYK5y2KJZ9LprA%2B7dm6AV52zBXUWjexCtz67TDzCVFvDXTuPHW3UX7LTZTrWjzhZFndJ%2BtINrbz2aQ3MTJLlo75ZH%2BJcnSrdy%2F%2BeQFwckhD84u8Swz6ASeu2kn0fbG5L3A%2BYT1OLW3cYfot%2BXyhOfMbDNeOTYOf3lBjJzszA5Err%2BBE4VOsssvMHglvr9%2BC%2FPIqSsSlpcXK8dzV5gtSTINpZ6drNqXsvyensy4felWDLhVvSsNAp3Svs7szA2ipRlcfdHcyrHLi53jesCufv6%2FhX2nhZX4nZuW2PjQ73b%2BINOqmH2%2FaclH07o%2Btyzx%2FallSR9%2BwLIeo8C5%2Bpp50YTLiyQHnGX%2FtWG9AucMv2bnfe%2F6fS2y%2BAXkvqbScyafK%2FmbARSOADZfASicAlg9fR%2BA6oas%2BSEKPCv%2FKpCnE2tAz2j%2Fc8A2%2FzxUzd3mI3zzo2eGHz%2BewvlxBxt8t3MS0wtsJ4ziJNo5V2Nnd%2FAsJ74Sr3q41x%2B8rUPAVmRu4%2BL1Yqhcdz4MVXnOjko5ZfT27dvLi85sfKXaENhL8itzY191LPCNr5i5MV0nxMCV2mHPxPI5IHGvlu45mx86z2vdl%2FHLC7HnUbdDOvJDFHsJxflllCRR%2BA2KP1etGW8p6n7yMse%2B4fw7JUUon9q2mZgfefddfHDfZGHw08OdJi3ybmM5y%2FZWIXjm3aNgKdFhKNuynTdlljcPVmgdmN9JWa9V2KHlqXf2dnH3GD2MVVkbq645mG4X0kqon%2B0wCGzh%2FuAogsd6nVRVLJH%2F%2FMavaq%2FjqkommE%2BP8cJodqciS8azx2C5edzad%2BtkPmuuh5Nbfy5NCysXNTyvFtI0WcyawnASdI1pa7yUsuBJyview9n95qHXqvgd%2BW%2FUQbB%2BGN8%2FLeX7nTlrblSvK1jh7d6SFpBHaKkbzZ%2FPsuBXpb%2FXxmvvwY1cvrZcn86fHiP1ThMczAGf0Jxl8cjT1pqvCizUPXWgt9S1IA%2F9tTBUWDb05%2Fm86CRDX20MFWonYtm6xdzoN9HGzFjvR700BT1m47QYjRuiNhawlonLnpAPe42MCf1Myxvg0Zf5mmo%2B5jaZlxas15BHM5Zibq6NU2ppn3joW%2BLMUw8%2FKEcD6wvIkeP8lRxMoPOzMc5E%2Bxj9PStuV8yY7zVlHR9bfr5%2BrHmlLCxvpJqU7tlY2DPFxnwX6%2FT42FbzIU8xNNS9Ztx2mWHtNb8fH9uaJ%2BmmYDHziR7EdIYRX%2FMIvpO95qWZNm5IHM8eP6M49PsS2gzrJchQvLT1HJzDB0%2BvketGXxj6OmFdtZ167xR4xKzoYL9bH7Q9sCesm1o5Dh4LU%2FWu3%2FS8zhHvh7vuyh64riU%2FNpeDSUsNF9vlIH2vSrrEfD1f9FR3AZ8wDOLfgd4Y6biA7sHPSljYB9YNCXqt27Q6k0iya77tA98C2EJPhGkHmPYT0HKORa%2BRjsYC7E0twBcY1C3ngdaCTuZcdrbmdiaOsFfV1nvBLtMCvEQtT3P085MxAfLTWD6aARMDGA0Y9LGGvXQkjothod%2FPh6XuqC8tiRfwm%2FqwW3%2BSl%2FKSnsn2Xb4G8hawoYx5GDMmCfDOuA2W9oe%2BJVMfZxU0mqNMV1iD%2BMTHihcZ1ZjTN3PotNPUCTeyO9C0F98Dj0ZjRLKELp1RoDPBJ8B3QmeRuR1hP%2FJX4An%2FmMjgXbXVXmSDhk66K%2F3B0F%2Fa0k5IN%2BKIy6niLCr5F%2FRet7W9EV%2ByN7ZnIaM1JDd0KlDcwG%2BCvYCpbwFj2D90hzkS4VK1tVwZ4kOqkf4QQ5i41TRlXspfPP4OeyU7xU8h%2FVmNeQ6sSj3LPC5AHxrJSjGKxvyA%2Bz3Z8aiKT6XvWdwmuG3PWAI7akAPsC%2BKo4QJsDXWpKt0NEgphkqlz9%2F7fA9jHmONQP0R7BgxRCjjZ1%2BEjnA2FTGrbmt7cPk6rn8Jtkr2RlgDX5xNGJW2hRgxL35H%2FJS5PxYrn2Ia4%2FoXBK5j2DXkE7ktky0qqy63L%2FKP%2FEVvkJXirzgnXy7thc8ZKRb5gkA2OjQQt8Yc67jGeqTo5M%2FyqLxHsmU5JhO%2B%2FG6Cv%2BFMcRkz1iLfd9AnvVAsq9vKv2mOW%2Fou%2FBr4SvCvgvtCGeMzbs%2Fk%2B4Thup%2FD3iT4SN3W8tR4%2FA6b03O6F8s7aSKZwHPOfbmU78XmSW4eP2Q2nZNOJQ1xdFjq%2BMVXOd40145I%2Fi%2BPkx5sCXhmowmfU9KL0zsJ%2Bi0mkI3uoYW5RLzl%2B4cu2scZ84MIetprt5E3LKp8pPxdW4Nbwex1C%2FsuQK4ieIswiJdK5C%2BUea4p92vkKJSzaMe7tZgA5xV8CXqnXxVTIGMOHygMZU13IOUEDSb1eZxkL7Fa5rFCmZ7q4HooWW96fnqw5MXmwW23v7XO%2BnAss6TzgqAhH6sB6v6jSoF33kkN9o5eBx6Lg9OdeXHw6MTPZwXCZ8XB84OzC704RoYePzeun4clAH%2B9DP%2FsgkJpoZhIUQRMc0sKDksfRQACOow7WIbaYTEI9gsUGtPp4wDJmPcAJ6mKENmcPQomnF8rJgisq8Cc2ZFdP98ttosnu7eU3Zbqd1wUFig2OlXBcbZXhr2%2Bq6ApnaNes20scUbza2uNdXM0bpXzcvXoXPYgEBDU3oxn2mHpiePFk3awn%2B79xbhlLGaaaIWB4IzF%2B8Vguqe56K%2BWoZ7oUiuxBtkWxQ7NpXWf9KltoOBZU%2BGD4qb534qiJ7EbWKG4tWRtu5SaxVOhN56Esjg6Or2M4mqAC6y63B4GlmvO6OIK%2FKXUSCbhtFjK03wuTQ4TaerjzLwY%2B7wwg1xP3dic3e75XKx7Em6fJvmZTN25pAWWzBKD5s3sYDnD2G1LXzzdJ%2BaTVpiz1t4Sr4VRTz0JkBQY7w%2BmRJdC87AMSecairbWbjEWj7bBoO8ycAreMmztF%2FVzT8zt8pIOYA%2F7pfS4%2FpGi7%2FSy4r%2FygqcLLh8p6yYCMJK1jqD2cenRpaMwoiFJ00Wt12W4%2FHFhdCihRgKHBMVQXb2gAmOSMQrqPoK7r8sqLzpUUatphY4iuY9LBLZ1SuszunRlXDzYR0WiYiHp6RBNQBJU0eaClnNaPqJik9N0kXldhktcrmg8AWA5nZEKmPKMkEFkxdo1zvZGUluwjMv4Wu7byDXKZKsxQrIGGSXNt7BepQszBa94RIWI0ieeAtE0SuqQLDPFapI8VFygeCGeIiU6Wq9DtByJc0VjMvO4PM2R4Z7Qugqjy7XQc164UNFQqC6nKa5U0XKMcxrz11lFSzUuIy7MoqSR3KPeGRaUPGewkHMskNCNjEnjHAvS4VwusSDdr0s98qTAkjA3Ay4y8ydNSuqQVKWaR3utiRclnVT8A6sJ7UVFhUC2oSkdyKE3%2BXrIVmLEeHJMNCQmwJVoOvDXwYd4dugs0iueVPg1Nb9MIrCGn4mSNMxtVkmVXJ6Jih43pfUUO5HY0nrCu7TXgmxhzfenZF7j%2B9MLj77EXsnE6CVAMXdnXlfDmj0ldKAL0GMGW4UfwFcocfZJVkrGmcsKF%2Bdzs2oe9N3nNIzLpzRDoXlcT0eaXtBLhXl6StN4SzrSC0rqVRS9Ix6vX85hnNAq3Sgn64hnpiovvNWTvYFDQYUDKyyaSzJBf26DkS%2F0OqSDvPTVms%2BJzJSo8f3PcUCxJJW2RLx02DRwJ9%2Fl88mGKIagePcnDfJZVZnU5y8ohozGHZHbq3G6x%2BQzufXihYZ5MuyV8ILfkY%2FpnAcbdxocE%2BJV8sheyVzNgy8WpHtX4PzGFf785Uip9%2BMeJ7QXHejZa1z04oXGX2oYa%2FdkD8h9js%2BJneTAz%2Fs8dvOXgN%2F1kvGz%2B1S8DyyphbtbC3Af475sfsK9vzHv9GROL0MHvIBpqZ7We%2FQ7sIO590AJNiX7Sv1CMj0sKM8p840335h0y80%2FLOc%2B%2Beb9J%2BerV39DTl%2FlwdWXRWdjd3a7KG0vg8ha3zjBEv069b2JE3OXlOP80wtm33oBrTv%2FCNNodt83bnbRfmPzL3r%2BPtyW31lcc3sT0ZfAJG9f06e%2BFw1exNF%2BZzl%2FwTcOSOE6f0v1ceHYyPxfm%2BvOCczEO%2FCBrxlk%2BTcZ787%2BUOM%2F' + expected = 'https://app.diagrams.net?title=AWS%20Architecture%20Diagram.xml#R7Vptc9pIEv4rLt%2FHrBO9QGLiZasAYSwvIywjwLC15RKSIiQkRCGBXn79PT2SMDi5VJLd272tulSRGVozPdNPP9PTLfxzmA125nbFItsJfvl5F0XJLz%2BHWc8JggvPbl8KlxfvzgTi5cXW3DmbpH4WLX3HSviz7OTf5UVgLp3gtdC0rGhPk8%2FExxXiJA%2Bc9uU28jZJ3P7tN%2BEn4feffhPeSs2qU7cfyo5Y%2F48RVaduP5QdsR4uVvPFWiHvVP9Xw4VqvlAq%2FP0m2ieBt3F60WYDI9vCjbszbQ%2FW96Ig2rU30ca5WSVh0BZv0pWXOOOtaTntFIjefIo2ydgrnLYoln1umsD7t2boBXnbMFdRaN7EK3PrtMPMJUe8NdO48dbdRfstFlOtaPOFJ8%2FoPltBtLefzSC5iZNdtHbKLf1LkqVbuX%2FzyQuCk00enF3iWWbQCTx3006i7Y3Je4HzCfOxa2%2FjDtFvy%2BUOz5XZZrxybGz%2B8oIUOdkZD0Tuv4EThU6yyy%2Fw8Ep8f%2F0W9MipKxKWlxcrx3NXGC1JMj1KPTtZtS9l%2BT19M%2BP2pVsp4Kx6VxICnZJfZzxzg2hpBldfpFv57PJi57gesKu%2F%2F59h38mwEr9zaomND%2F1u50%2BiVqXs%2B6klH6l1fc4s8f0ps6QPP8Csxyhwrr5GLxpweZHkgLPsvybWK3DO8Gt23veu39cmi19A7msuPVfyuZO%2FGUDhCGDzFYDCKYDVt%2B8D0NxtPoJFHz0z%2FPjxFMGPO6D1buckphfYThjFSbRzrsbO7uBZTnwlXvVwAz14W4dOQyXm3hCvF0PluvNhqMpzdvTDqaK3b99eXnRm4yvVhs1ekl%2BZG%2FuqY0FvfMXMjek6IR5cqR32TCqfAzL3aumeq%2Fmh%2Fbx2f3nSvBBrHt07pC0%2FRLGXUERaRkkShd%2Fg%2B3PvmvGW4sMnL3PsG66%2FU0qE8lvbNhPzI%2B%2B%2Biw%2FumywMfnq406RF3m0sZ9neKgTPvHsULCU6DGVbtvOmzPLmwQqtA%2FM7Keu1Cju0PPXO3i7uHqOHsSprY9U1B9PtQloJ9Xc7DAJbuD84iuCxXidVFUvkH7%2Fxq9rruKqSCebTY7wwmt2pyJLx7DFYbh639t06mc%2Ba6%2BHk1p9L08LKRQ3fVwtpmixmTWE4CbrGtDVeSlnwJGV8zeHsfvPQa1X6jvo36iBYP4zvn5by%2Fc6cNTeq1xWs8HZvSQvYI7TUjebPZ1nwq9Lfa%2BO19%2BBGLp9bzk%2FnT4%2BReqcJDsZAT2jOsnjkaWvNVwUW6p460FvqWpCH%2FloYKiwb%2BvN8XnSSoa82hgq1E7Fs3WJu9JtoY2as96NemkIes3FajMYNURsLmMvEZU%2FIh71GxoR%2BpuUN6OjLfE41HmObzEsL1mvIoxlLMTbXxim1tE489C1x5qmHH7SjgfkF7Mix%2F8oOJtD%2B2Rh7onWM%2Fp4VtytmzPeaso6PLd9fP9a80haWN1JNSvdsLOyZYmO8i3l6fGyr8bCnGBrqXjNuu8yw9prfj49trZN8U7CY%2BSQPYtrDiM95hN7JXvPSTBs3JI5nj%2B9RHPp9CW2G%2BRJsKF7aegz24UOn18h1oy8MfZ2wrtpOvXYKPGJWdLDerQ%2FZHtgT1k2tfA4dC1P1rt%2F0vM4R74e77soeuK4lPzaXg0lLDRfb5SB9r0q6xHw9X%2FRUd4EzYRikvwO%2FMfJxAd9Dn5WwsA%2BsGxL8WrdptSeRbNd82we%2BBbCFnwjTDjDtJ5DlHIteIx2NBfBNLaAXGNQt14HWgk%2Fm3Ha25jwTR1irauu1wMu0gC5Ry9Mc%2FfzkmQD76Vk%2BmgETAxgNGPyxBl86EsfFsNDv58PSd9SXlqQL%2BE198Naf5KW95GfivsvnwN4CHMqYh2fGJAHeGedgyT%2F0LZn62Kug0RhlusIcxCf%2BrHixUY25fDOHTztNnXAj3kGmvZw96Gg0RmRL6NIeBdoTzgT0TmgvMucR1qPzCjxxPiYydFdttRZx0NDJd%2BV5MPSXtuQJ%2BUYccTtV7EWl8wW%2F123NN9JLfGN7FjKaQ3bDpwLFDXwmWAuY%2BhYwBv%2FhO4yRCJeqre3KEB9SjfyHGMLEraYp89L%2B4vEP8JV4io9C%2FrMa8xxYlX6WeVyAPzSylWIUPfMDfu6Jx6MqPpVnz%2BKc4NyesQQ8asAP4BfFUcIE2Bpr8lU6GqQUQ6XyzN%2F7fA1jHmOOQP0ReIwYIpTxsy%2FCR9ibiphVtzUfXD6P%2B18CV4lvhDXwxd6EUcktxIh58Qfip8zPY7HyKaYx7n9B4D4Gr2GfyLlMXFRWXc4vOh%2F5i99gK8VfcU5nueQLHzNSLDoLAnF0aCBujTnWcY31SNHpPMuj8h7JluUzmfDldxPOG%2FYUlzFjLfJ1B33yC8Wyuq3ON41xy7OLcw18JZyvgp%2BFMsZnnM909gnDdT8H3ySckbqt7anx%2BAOc03O6F8s7aSKZwHPOz3Jp3wvnyW4eP2Q2nZNPJQ1xdFj6%2BOWscrxprB2R%2FV9%2BTn6wJeCZjSZ8TCkvTu8k%2BLeYwDa6hxbmEvGWrx%2B6aB9nzA8i%2BGmv3UbesKjykfJzbQ1uBbPXLey7ALmK4C3CIF4qkb9Q5rmm3K%2BRo1DOoh3v1mICnFc4S%2FA7faqYAhtznIHCUNZ0B1JO0GBSn8dJ9hKrZR4rlOmpD66HkvWm56cHS15sHtx2%2B1srgg%2FHgkA6Lwga8rEaoO73lQLqhlLnhyjwrPyrNdXpwLq2OpP942qs5j%2B2wHrnnQD%2Fjl4HHt10ujIvuR6d%2BPms7Pqs5Hp%2BcHahF8eoe%2BLnxvXzsIThr7fhf7tMU1oo0VKUVtPckoLD0kdphWsSISNYhtphMQj2C5Rv0%2BnjACmu94DQU5V2sjl7FEyEVK2Y4LpaBebMjuz6%2B91iu3iye0vZbal%2Bx0W5hhKuU5VxZ2tlWOu7ysQy5NRzto0l9mh%2Bba6xbo7GrXJcrh5Dlj0IBFwVb8Yz7bD0xPHiSTvYT%2Ff%2BYtwyFjNNtMJAcMbi%2FWIw3dNY9FfLUE90qZVYg2yLEpLG0rxP%2BtQ2UEauqZxEydj8T6Xmk9gNrFDcWrK2XUrN4qnQG09CWXIeQ6mMknWAtKBKGR4GlmvOKB0I%2FKXUSCbhtFjK03wuTQ4Taepjz7zE%2FbzchV1P3dic3e75WMx7Em6fJvmZTd25pAWWzBKDxs3sYDnDs9uWvni6T8wnrTBnrb0lXgujnnpy7dB1c38wJbpqm4dlSD7XUAq3douxeOQGg7%2FL60jwlmFrv6i%2F98TcLlOfAHzYL6XH9Y%2BU0qcpAP%2BUaROlDflIWTdxrSEF7ghqH6kEXeUKIxlSX13Uel2GlArXcIfKFKTFSPsM1dULKtsmGaOr0seV6euyyks5VdRqWaGLkOFqBrdOZX1GqYyM6xzrqEj%2FLKSSHZIJSC0r2VzQci7LR1TCc5kuMq%2FLkBrJlYynVSynPVJZWO4RNoisWLvG2dooFQqWcRtf230buUaZwjZGSIFho6T5FuarlIak0BWPqLxT%2BqRTIJlGqTJKEKZYTbKHSjaUhKRTpPRR63VIlqMcqWRMZh63pzky3BNZV2GUshR6zstBKsUK1eUyxZUqWY7nXMb8dVbJUo3biDSkKGVk96h3hgWVJBkYco4F0uSRMWmcY0E%2BnMslFuT7delHnmpZEsZmwEVm%2FqRJqTJS1VTzaK016aJUnl6pAKsJrUWlmkDc0JQO7NCbfD5sKzFivOQgGdI94EoyHfjr0EM6O7QX6ZVOKqebml%2BmZpjD90SpL8Y2q1RVLvdEpaSb0nyKnSgXaD7hXfK1IC6s%2BfpUIml8fXqN1JfYK5sYvVop5u7M62qYs6c0GXIBfszAVZwDnBUqR3yylUoc5rLCxf7crBoHf%2Fe5DM%2FlU5mh0Djup6NML%2BhVzTw9lWm8JR%2FpBZVKqmLtRzxev%2BzDOJFVvlFO5pHOTFVedKsnawOHgsoxVlg0lmyC%2F9wGo7PQ65AP8vKs1npObKb0l69%2FjgNKUKnkEunSwWngTmeXjycOUQyxgOekQWdWVSb1%2FguKIaNxR%2BR8NU7XmHxmt168yDBOBl8JL5w7OmM618HGnQbHhHSVOrJXNlfjcBYL8r0rcH3jCn%2F%2Byqn0%2B3GNE9mLD%2FTsNS568SLjr4qMtXuyBuw%2Bx%2BeEJznw8z6P3fzV6ne9uv3sPhXvA0tq4e7WAtzHuC%2Bbn3Dvb8w7PZnTK%2BYBLwtbqqf1Hv0OeDD3HqhsoRJKqV%2FzpocF5TllvvHmGxNvufmnVTInv3n%2Fl%2FPVq78hp6%2Fy4OqXRWdjd3a7KG0vg8ha3zjBEv069UV9Ze6S8jmvtzD6FhUY5p1XXo1m933jZhftNzb%2FRc%2Ffh9uyuHLN7U1EvwQmefuafup78eBFHO13lvMX%2FHIEK1znb6k%2BLhwbmf9ruu6cwEy8A3%2FwNUKWf5Px7uwPNf4N' + actual = handler(payload, {}) + + # print(actual) + + assert actual == expected + + +def test_none_type_error_gh_458(): + payload = { + 'arguments': { + "edges": [], + "nodes": [ + { + "id": "xxxxxxxxxxxx", + "image": "/icons/AWS-Cloud-alt_light-bg.svg", + "label": "xxxxxxxxxxxx", + "position": { + "x": -29.125, + "y": 15.125 + }, + "title": "xxxxxxxxxxxx", + "type": "account" + }, + { + "id": "xxxxxxxxxxxx-eu-west-2", + "image": "/icons/Region_light-bg.svg", + "label": "eu-west-2", + "parent": "xxxxxxxxxxxx", + "position": { + "x": -124.125, + "y": 15.125 + }, + "title": "eu-west-2", + "type": "region" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:vpc-endpoint/vpce-098bf4bcb70f8c0cc", + "image": "/icons/Amazon-EC2_VPC_Endpoints_light-bg-menu.svg", + "label": "vpce-098bf4b...", + "parent": "VPCEndpoint-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": -195.375, + "y": -6.375 + }, + "title": "vpce-098bf4bcb70f8c0cc", + "type": "resource" + }, + { + "id": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe-Multiple Availability Zones", + "image": "/icons/availabilityZone.svg", + "label": "Multiple Availability Zones", + "parent": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": 50.125, + "y": 36.625 + }, + "title": "Multiple Availability Zones", + "type": "availabilityZone" + }, + { + "id": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "image": "/icons/VPC-collapsed.svg", + "label": "S3F2CustomVPC VPC", + "parent": "xxxxxxxxxxxx-eu-west-2", + "position": { + "x": -170.375, + "y": 25.875 + }, + "title": "S3F2CustomVPC VPC", + "type": "vpc" + }, + { + "id": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe-eu-west-2a,eu-west-2b", + "image": "/icons/availabilityZone.svg", + "label": "eu-west-2a,eu-west-2b", + "parent": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": -454.375, + "y": 344.625 + }, + "title": "eu-west-2a,eu-west-2b", + "type": "availabilityZone" + }, + { + "id": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0f80611bd38f92f51-eu-west-2b", + "image": "/icons/availabilityZone.svg", + "label": "eu-west-2b", + "parent": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": -381.375, + "y": -197.125 + }, + "title": "eu-west-2b", + "type": "availabilityZone" + }, + { + "id": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0f80611bd38f92f51", + "image": "/icons/VPC-subnet-private_light-bg-collapsed.svg", + "label": "S3F2CustomVPC Private Subnet 2", + "parent": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0f80611bd38f92f51-eu-west-2b", + "position": { + "x": -381.375, + "y": -197.125 + }, + "title": "S3F2CustomVPC Private Subnet 2", + "type": "subnet" + }, + { + "id": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-02cd0f01396c68846-eu-west-2c", + "image": "/icons/availabilityZone.svg", + "label": "eu-west-2c", + "parent": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": -102.375, + "y": -197.125 + }, + "title": "eu-west-2c", + "type": "availabilityZone" + }, + { + "id": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-02cd0f01396c68846", + "image": "/icons/VPC-subnet-private_light-bg-collapsed.svg", + "label": "S3F2CustomVPC Private Subnet 3", + "parent": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-02cd0f01396c68846-eu-west-2c", + "position": { + "x": -102.375, + "y": -197.125 + }, + "title": "S3F2CustomVPC Private Subnet 3", + "type": "subnet" + }, + { + "id": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0610703526e920d2e-eu-west-2a", + "image": "/icons/availabilityZone.svg", + "label": "eu-west-2a", + "parent": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": -381.375, + "y": 110.875 + }, + "title": "eu-west-2a", + "type": "availabilityZone" + }, + { + "id": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0610703526e920d2e", + "image": "/icons/VPC-subnet-private_light-bg-collapsed.svg", + "label": "S3F2CustomVPC Private Subnet 1", + "parent": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0610703526e920d2e-eu-west-2a", + "position": { + "x": -381.375, + "y": 110.875 + }, + "title": "S3F2CustomVPC Private Subnet 1", + "type": "subnet" + }, + { + "id": "SecurityGroup-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "label": "SecurityGroup", + "parent": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": -313.375, + "y": 301.625 + }, + "title": "SecurityGroup", + "type": "type" + }, + { + "id": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0f80611bd38f92f51", + "label": "NetworkInterface", + "parent": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0f80611bd38f92f51", + "position": { + "x": -381.375, + "y": -197.125 + }, + "title": "NetworkInterface", + "type": "type" + }, + { + "id": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0610703526e920d2e", + "label": "NetworkInterface", + "parent": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0610703526e920d2e", + "position": { + "x": -381.375, + "y": 110.875 + }, + "title": "NetworkInterface", + "type": "type" + }, + { + "id": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-02cd0f01396c68846", + "label": "NetworkInterface", + "parent": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-02cd0f01396c68846", + "position": { + "x": -102.375, + "y": -197.125 + }, + "title": "NetworkInterface", + "type": "type" + }, + { + "id": "NetworkAcl-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe-Multiple Availability Zones", + "label": "NetworkAcl", + "parent": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe-Multiple Availability Zones", + "position": { + "x": 50.125, + "y": 36.625 + }, + "title": "NetworkAcl", + "type": "type" + }, + { + "id": "RouteTable-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "label": "RouteTable", + "parent": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": 110.125, + "y": -283.125 + }, + "title": "RouteTable", + "type": "type" + }, + { + "id": "arn:aws:ecs:eu-west-2:xxxxxxxxxxxx:service/S3F2-DelStack-9VN6BTF12OEA-DeleteService-RPWNN1AGWCB4", + "image": "/icons/Amazon-Elastic-Container-Service_Service_light-bg-menu.svg", + "label": "S3F2-DelStac...", + "parent": "Service-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe-eu-west-2a,eu-west-2b", + "position": { + "x": -454.375, + "y": 344.625 + }, + "title": "S3F2-DelStack-9VN6BTF12OEA-DeleteService-RPWNN1AGWCB4", + "type": "resource" + }, + { + "id": "Stack-xxxxxxxxxxxx-eu-west-2", + "label": "Stack", + "parent": "xxxxxxxxxxxx-eu-west-2", + "position": { + "x": 250.625, + "y": -357.375 + }, + "title": "Stack", + "type": "type" + }, + { + "id": "VPCEndpoint-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "label": "VPCEndpoint", + "parent": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": -142.375, + "y": 56.125 + }, + "title": "VPCEndpoint", + "type": "type" + }, + { + "id": "Service-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe-eu-west-2a,eu-west-2b", + "label": "Service", + "parent": "arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe-eu-west-2a,eu-west-2b", + "position": { + "x": -454.375, + "y": 344.625 + }, + "title": "Service", + "type": "type" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:security-group/sg-0be10b8bce825f7c1", + "image": "/icons/AWSSecurityGroup.svg", + "label": "S3F2CustomVP...", + "parent": "SecurityGroup-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": -340.375, + "y": 301.625 + }, + "title": "S3F2CustomVPC-SecurityGroup-N54DLMFZLUEI", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:security-group/sg-0cb3ee5954d159b6b", + "image": "/icons/AWSSecurityGroup.svg", + "label": "default", + "parent": "SecurityGroup-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": -286.375, + "y": 301.625 + }, + "title": "default", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-interface/eni-034b0ad02cd80d544", + "image": "/icons/Amazon-VPC_Elastic-Network-Interface_light-bg.svg", + "label": "eni-034b0ad0...", + "parent": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0f80611bd38f92f51", + "position": { + "x": -434.375, + "y": -228.375 + }, + "title": "eni-034b0ad02cd80d544", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-interface/eni-0373c5d1881284488", + "image": "/icons/Amazon-VPC_Elastic-Network-Interface_light-bg.svg", + "label": "eni-0373c5d1...", + "parent": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0610703526e920d2e", + "position": { + "x": -434.375, + "y": 79.625 + }, + "title": "eni-0373c5d1881284488", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-interface/eni-049cf15d294c02363", + "image": "/icons/Amazon-VPC_Elastic-Network-Interface_light-bg.svg", + "label": "eni-049cf15d...", + "parent": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-02cd0f01396c68846", + "position": { + "x": -155.375, + "y": -228.375 + }, + "title": "eni-049cf15d294c02363", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-interface/eni-04e7fe850d5ae1000", + "image": "/icons/Amazon-VPC_Elastic-Network-Interface_light-bg.svg", + "label": "eni-04e7fe85...", + "parent": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0f80611bd38f92f51", + "position": { + "x": -381.375, + "y": -228.375 + }, + "title": "eni-04e7fe850d5ae1000", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-interface/eni-07a8eb68e4714b558", + "image": "/icons/Amazon-VPC_Elastic-Network-Interface_light-bg.svg", + "label": "eni-07a8eb68...", + "parent": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-02cd0f01396c68846", + "position": { + "x": -102.375, + "y": -228.375 + }, + "title": "eni-07a8eb68e4714b558", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-interface/eni-07f888861ae7684e2", + "image": "/icons/Amazon-VPC_Elastic-Network-Interface_light-bg.svg", + "label": "eni-07f88886...", + "parent": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0f80611bd38f92f51", + "position": { + "x": -434.375, + "y": -165.875 + }, + "title": "eni-07f888861ae7684e2", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-interface/eni-007c609c6f9dd10cc", + "image": "/icons/Amazon-VPC_Elastic-Network-Interface_light-bg.svg", + "label": "eni-007c609c...", + "parent": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0f80611bd38f92f51", + "position": { + "x": -381.375, + "y": -165.875 + }, + "title": "eni-007c609c6f9dd10cc", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-interface/eni-0239e9af2eb593ff6", + "image": "/icons/Amazon-VPC_Elastic-Network-Interface_light-bg.svg", + "label": "eni-0239e9af...", + "parent": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0610703526e920d2e", + "position": { + "x": -381.375, + "y": 79.625 + }, + "title": "eni-0239e9af2eb593ff6", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-interface/eni-0d277bd2ede7469a7", + "image": "/icons/Amazon-VPC_Elastic-Network-Interface_light-bg.svg", + "label": "eni-0d277bd2...", + "parent": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0610703526e920d2e", + "position": { + "x": -434.375, + "y": 142.125 + }, + "title": "eni-0d277bd2ede7469a7", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-interface/eni-0d821d089dc830f02", + "image": "/icons/Amazon-VPC_Elastic-Network-Interface_light-bg.svg", + "label": "eni-0d821d08...", + "parent": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0f80611bd38f92f51", + "position": { + "x": -328.375, + "y": -228.375 + }, + "title": "eni-0d821d089dc830f02", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-interface/eni-0e0fad6b1591a161d", + "image": "/icons/Amazon-VPC_Elastic-Network-Interface_light-bg.svg", + "label": "eni-0e0fad6b...", + "parent": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0610703526e920d2e", + "position": { + "x": -381.375, + "y": 142.125 + }, + "title": "eni-0e0fad6b1591a161d", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-interface/eni-0ea3c4ac62a45481c", + "image": "/icons/Amazon-VPC_Elastic-Network-Interface_light-bg.svg", + "label": "eni-0ea3c4ac...", + "parent": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-02cd0f01396c68846", + "position": { + "x": -155.375, + "y": -165.875 + }, + "title": "eni-0ea3c4ac62a45481c", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-interface/eni-08f4c7e0cf8d0eb25", + "image": "/icons/Amazon-VPC_Elastic-Network-Interface_light-bg.svg", + "label": "eni-08f4c7e0...", + "parent": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-02cd0f01396c68846", + "position": { + "x": -102.375, + "y": -165.875 + }, + "title": "eni-08f4c7e0cf8d0eb25", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-interface/eni-0adbe78e966d21857", + "image": "/icons/Amazon-VPC_Elastic-Network-Interface_light-bg.svg", + "label": "eni-0adbe78e...", + "parent": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-02cd0f01396c68846", + "position": { + "x": -49.375, + "y": -228.375 + }, + "title": "eni-0adbe78e966d21857", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-interface/eni-0c03624e885725a9a", + "image": "/icons/Amazon-VPC_Elastic-Network-Interface_light-bg.svg", + "label": "eni-0c03624e...", + "parent": "NetworkInterface-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-subnet/subnet-0610703526e920d2e", + "position": { + "x": -328.375, + "y": 79.625 + }, + "title": "eni-0c03624e885725a9a", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-acl/acl-058521bd38cb481b2", + "image": "/icons/Amazon-VPC_Network-Access-Control-List_light-bg.svg", + "label": "acl-058521bd...", + "parent": "NetworkAcl-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe-Multiple Availability Zones", + "position": { + "x": 23.625, + "y": 36.625 + }, + "title": "acl-058521bd38cb481b2", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:network-acl/acl-02201206399d095f8", + "image": "/icons/Amazon-VPC_Network-Access-Control-List_light-bg.svg", + "label": "acl-02201206...", + "parent": "NetworkAcl-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe-Multiple Availability Zones", + "position": { + "x": 76.625, + "y": 36.625 + }, + "title": "acl-02201206399d095f8", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:route-table/rtb-099b639569edf4123", + "image": "/icons/Amazon-VPC_Router_light-bg.svg", + "label": "rtb-099b6395...", + "parent": "RouteTable-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": 83.625, + "y": -314.375 + }, + "title": "rtb-099b639569edf4123", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:route-table/rtb-0cff14b18c25c6fe5", + "image": "/icons/Amazon-VPC_Router_light-bg.svg", + "label": "rtb-0cff14b1...", + "parent": "RouteTable-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": 136.625, + "y": -314.375 + }, + "title": "rtb-0cff14b18c25c6fe5", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:route-table/rtb-0204587d290944b3a", + "image": "/icons/Amazon-VPC_Router_light-bg.svg", + "label": "rtb-0204587d...", + "parent": "RouteTable-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": 83.625, + "y": -251.875 + }, + "title": "rtb-0204587d290944b3a", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:route-table/rtb-05f7724952e8964c5", + "image": "/icons/Amazon-VPC_Router_light-bg.svg", + "label": "rtb-05f77249...", + "parent": "RouteTable-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": 136.625, + "y": -251.875 + }, + "title": "rtb-05f7724952e8964c5", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:vpc-endpoint/vpce-01ab583657bc3c78e", + "image": "/icons/Amazon-EC2_VPC_Endpoints_light-bg-menu.svg", + "label": "vpce-01ab583...", + "parent": "VPCEndpoint-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": -142.375, + "y": -6.375 + }, + "title": "vpce-01ab583657bc3c78e", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:vpc-endpoint/vpce-01a04251e6fd9a18f", + "image": "/icons/Amazon-EC2_VPC_Endpoints_light-bg-menu.svg", + "label": "vpce-01a0425...", + "parent": "VPCEndpoint-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": -195.375, + "y": 56.125 + }, + "title": "vpce-01a04251e6fd9a18f", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:vpc-endpoint/vpce-0596f798ddaa2083c", + "image": "/icons/Amazon-EC2_VPC_Endpoints_light-bg-menu.svg", + "label": "vpce-0596f79...", + "parent": "VPCEndpoint-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": -142.375, + "y": 56.125 + }, + "title": "vpce-0596f798ddaa2083c", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:vpc-endpoint/vpce-04a572c1fdd189258", + "image": "/icons/Amazon-EC2_VPC_Endpoints_light-bg-menu.svg", + "label": "vpce-04a572c...", + "parent": "VPCEndpoint-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": -89.375, + "y": -6.375 + }, + "title": "vpce-04a572c1fdd189258", + "type": "resource" + }, + { + "id": "arn:aws:cloudformation:eu-west-2:xxxxxxxxxxxx:stack/S3F2CustomVPC/202e1b30-e60c-11ea-9a13-0283d9cf08b8", + "image": "/icons/AWS-CloudFormation.svg", + "label": "S3F2CustomVP...", + "parent": "Stack-xxxxxxxxxxxx-eu-west-2", + "position": { + "x": 250.625, + "y": -357.375 + }, + "title": "S3F2CustomVPC", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:vpc-endpoint/vpce-01b03ccc3d4534dfa", + "image": "/icons/Amazon-EC2_VPC_Endpoints_light-bg-menu.svg", + "label": "vpce-01b03cc...", + "parent": "VPCEndpoint-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": -89.375, + "y": 56.125 + }, + "title": "vpce-01b03ccc3d4534dfa", + "type": "resource" + }, + { + "id": "arn:aws:ec2:eu-west-2:xxxxxxxxxxxx:vpc-endpoint/vpce-01fffefa0b344fe08", + "image": "/icons/Amazon-EC2_VPC_Endpoints_light-bg-menu.svg", + "label": "vpce-01fffef...", + "parent": "VPCEndpoint-arn-aws-ec2-eu-west-2-xxxxxxxxxxxx-vpc/vpc-02dd8e355a967d1fe", + "position": { + "x": -195.375, + "y": 118.625 + }, + "title": "vpce-01fffefa0b344fe08", + "type": "resource" + }, + { + "id": "xxxxxxxxxxxx-global", + "image": "/icons/Region_light-bg.svg", + "label": "global", + "parent": "xxxxxxxxxxxx", + "position": { + "x": 412.625, + "y": -326.125 + }, + "title": "global", + "type": "region" + }, + { + "id": "Tag-xxxxxxxxxxxx-global", + "label": "Tag", + "parent": "xxxxxxxxxxxx-global", + "position": { + "x": 412.625, + "y": -326.125 + }, + "title": "Tag", + "type": "type" + }, + { + "id": "arn:aws:tags::xxxxxxxxxxxx:tag/aws:cloudformation:stack-name=S3F2CustomVPC", + "image": "/icons/AWS-Tags-bg.svg", + "label": "aws:cloudfor...", + "parent": "Tag-xxxxxxxxxxxx-global", + "position": { + "x": 440.625, + "y": -357.375 + }, + "title": "aws:cloudformation:stack-name=S3F2CustomVPC", + "type": "resource" + }, + { + "id": "arn:aws:tags::xxxxxxxxxxxx:tag/aws:cloudformation:stack-id=arn:aws:cloudformation:eu-west-2:xxxxxxxxxxxx:stack/S3F2CustomVPC/202e1b30-e60c-11ea-9a13-0283d9cf08b8", + "image": "/icons/AWS-Tags-bg.svg", + "label": "aws:cloudfor...", + "parent": "Tag-xxxxxxxxxxxx-global", + "position": { + "x": 384.625, + "y": -294.875 + }, + "title": "aws:cloudformation:stack-id=arn:aws:cloudformation:eu-west-2:xxxxxxxxxxxx:stack/S3F2CustomVPC/202e1b30-e60c-11ea-9a13-0283d9cf08b8", + "type": "resource" + }, + { + "id": "arn:aws:tags::xxxxxxxxxxxx:tag/aws:cloudformation:logical-id=VPC", + "image": "/icons/AWS-Tags-bg.svg", + "label": "aws:cloudfor...", + "parent": "Tag-xxxxxxxxxxxx-global", + "position": { + "x": 437.625, + "y": -294.875 + }, + "title": "aws:cloudformation:logical-id=VPC", + "type": "resource" + }, + { + "id": "arn:aws:tags::xxxxxxxxxxxx:tag/Name=S3F2CustomVPC VPC", + "image": "/icons/AWS-Tags-bg.svg", + "label": "Name=S3F2Cus...", + "parent": "Tag-xxxxxxxxxxxx-global", + "position": { + "x": 386.125, + "y": -357.375 + }, + "title": "Name=S3F2CustomVPC VPC", + "type": "resource" + } + ] + } + } + + expected_xml = b'' + + expected = 'https://app.diagrams.net?title=AWS%20Architecture%20Diagram.xml#R' + urllib.parse.quote(deflate_and_base64_encode(expected_xml), safe='') actual = handler(payload, {}) diff --git a/source/backend/functions/graph-api/package-lock.json b/source/backend/functions/graph-api/package-lock.json index 32749590..6d73cecc 100644 --- a/source/backend/functions/graph-api/package-lock.json +++ b/source/backend/functions/graph-api/package-lock.json @@ -1,12 +1,12 @@ { "name": "wd-graph-api", - "version": "2.1.5", + "version": "2.1.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "wd-graph-api", - "version": "2.1.5", + "version": "2.1.6", "license": "Apache-2.0", "dependencies": { "gremlin": "3.5.2", diff --git a/source/backend/functions/graph-api/package.json b/source/backend/functions/graph-api/package.json index eb0d176c..0b9694ac 100644 --- a/source/backend/functions/graph-api/package.json +++ b/source/backend/functions/graph-api/package.json @@ -1,6 +1,6 @@ { "name": "wd-graph-api", - "version": "2.1.5", + "version": "2.1.6", "description": "The lambda function that queries the Neptune database", "main": "src/index.js", "scripts": { diff --git a/source/backend/functions/metrics/package-lock.json b/source/backend/functions/metrics/package-lock.json index 4b15088f..c62ed50d 100644 --- a/source/backend/functions/metrics/package-lock.json +++ b/source/backend/functions/metrics/package-lock.json @@ -1,12 +1,12 @@ { "name": "metrics", - "version": "2.1.5", + "version": "2.1.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "metrics", - "version": "2.1.5", + "version": "2.1.6", "license": "Apache-2.0", "dependencies": { "@aws-sdk/client-s3": "3.359.0", diff --git a/source/backend/functions/metrics/package.json b/source/backend/functions/metrics/package.json index 6304417d..a9a7ff42 100644 --- a/source/backend/functions/metrics/package.json +++ b/source/backend/functions/metrics/package.json @@ -1,6 +1,6 @@ { "name": "metrics", - "version": "2.1.5", + "version": "2.1.6", "description": "", "main": "index.js", "scripts": { diff --git a/source/backend/functions/opensearch-setup/package-lock.json b/source/backend/functions/opensearch-setup/package-lock.json index c4e9da55..9e5867e9 100644 --- a/source/backend/functions/opensearch-setup/package-lock.json +++ b/source/backend/functions/opensearch-setup/package-lock.json @@ -1,12 +1,12 @@ { "name": "opensearch-setup", - "version": "2.1.5", + "version": "2.1.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "opensearch-setup", - "version": "2.1.5", + "version": "2.1.6", "license": "Apache-2.0", "dependencies": { "@opensearch-project/opensearch": "2.3.1", diff --git a/source/backend/functions/opensearch-setup/package.json b/source/backend/functions/opensearch-setup/package.json index 2d86c357..394eab95 100644 --- a/source/backend/functions/opensearch-setup/package.json +++ b/source/backend/functions/opensearch-setup/package.json @@ -1,6 +1,6 @@ { "name": "opensearch-setup", - "version": "2.1.5", + "version": "2.1.6", "description": "Custom resource that creates index in OpenSearch.", "main": "src/index.js", "scripts": { diff --git a/source/backend/functions/search-api/package-lock.json b/source/backend/functions/search-api/package-lock.json index d4496681..e8f94685 100644 --- a/source/backend/functions/search-api/package-lock.json +++ b/source/backend/functions/search-api/package-lock.json @@ -1,12 +1,12 @@ { "name": "wd-search-api", - "version": "2.1.5", + "version": "2.1.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "wd-search-api", - "version": "2.1.5", + "version": "2.1.6", "license": "Apache-2.0", "dependencies": { "@opensearch-project/opensearch": "2.3.1", diff --git a/source/backend/functions/search-api/package.json b/source/backend/functions/search-api/package.json index d5748f78..a671da14 100644 --- a/source/backend/functions/search-api/package.json +++ b/source/backend/functions/search-api/package.json @@ -1,6 +1,6 @@ { "name": "wd-search-api", - "version": "2.1.5", + "version": "2.1.6", "description": "The lambda function that queries the OpenSearch database", "main": "src/index.js", "scripts": { diff --git a/source/backend/functions/settings/package-lock.json b/source/backend/functions/settings/package-lock.json index 15128406..6affe29d 100644 --- a/source/backend/functions/settings/package-lock.json +++ b/source/backend/functions/settings/package-lock.json @@ -1,12 +1,12 @@ { "name": "wd-settings", - "version": "2.1.5", + "version": "2.1.6", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "wd-settings", - "version": "2.1.5", + "version": "2.1.6", "license": "Apache-2.0", "dependencies": { "@aws-sdk/client-config-service": "3.359.0", diff --git a/source/backend/functions/settings/package.json b/source/backend/functions/settings/package.json index b56b781e..40a6febd 100644 --- a/source/backend/functions/settings/package.json +++ b/source/backend/functions/settings/package.json @@ -1,6 +1,6 @@ { "name": "wd-settings", - "version": "2.1.5", + "version": "2.1.6", "description": "Lambda function that stores WD configuration data in DynamoDB", "main": "index.js", "scripts": { diff --git a/source/cfn/templates/main.template b/source/cfn/templates/main.template index e868601f..1a5e5103 100644 --- a/source/cfn/templates/main.template +++ b/source/cfn/templates/main.template @@ -247,8 +247,10 @@ Parameters: ApiAllowListedRanges: Type: CommaDelimitedList Description: | - Comma separated list of CIDR ranges to manage access the API. To allow all the entire internet, - use 0.0.0.0/1,128.0.0.0/1 + Comma separated list of CIDRs to manage access to the AppSync GraphQL API. To allow the entire internet, + use 0.0.0.0/1,128.0.0.0/1. If restricting access to specific CIDRs, you must also include the IP addresses (and + a subnet mask of /32) of the NAT gateways that allow the discovery process ECS task running in its private subnet + to access the internet. NB: this allowlist does not govern access to the WebUI, only the GraphQL API. Default: 0.0.0.0/1,128.0.0.0/1 Metadata: diff --git a/source/frontend/.nsprc b/source/frontend/.nsprc index 7a73a41b..2c63c085 100644 --- a/source/frontend/.nsprc +++ b/source/frontend/.nsprc @@ -1,2 +1,2 @@ { -} \ No newline at end of file +} diff --git a/source/frontend/package-lock.json b/source/frontend/package-lock.json index de9f9ee2..855ed152 100644 --- a/source/frontend/package-lock.json +++ b/source/frontend/package-lock.json @@ -1,12 +1,12 @@ { "name": "workload-discovery-ui", - "version": "2.1.5", + "version": "2.1.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "workload-discovery-ui", - "version": "2.1.5", + "version": "2.1.6", "license": "Apache-2.0", "dependencies": { "@aws-amplify/ui-react": "5.3.2", @@ -18937,9 +18937,9 @@ } }, "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", "peer": true }, "node_modules/is-arguments": { @@ -25283,9 +25283,9 @@ } }, "node_modules/sharp/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" diff --git a/source/frontend/package.json b/source/frontend/package.json index 76068d7f..9864c5d7 100644 --- a/source/frontend/package.json +++ b/source/frontend/package.json @@ -1,6 +1,6 @@ { "name": "workload-discovery-ui", - "version": "2.1.5", + "version": "2.1.6", "private": true, "description": "UI code for the Workload Discovery solution", "author": { @@ -84,7 +84,8 @@ "valid-filename": "4.0.0" }, "overrides": { - "sharp": "0.33.0" + "sharp": "0.33.0", + "ip": "2.0.1" }, "scripts": { "start": "vite", diff --git a/source/sdk/js/package-lock.json b/source/sdk/js/package-lock.json index e31d7da3..b2abab41 100644 --- a/source/sdk/js/package-lock.json +++ b/source/sdk/js/package-lock.json @@ -13,7 +13,7 @@ "async-retry": "1.3.3", "aws4": "1.12.0", "lodash.curry": "4.1.1", - "undici": "5.26.3", + "undici": "6.6.2", "winston": "3.8.2" }, "devDependencies": { @@ -4174,14 +4174,14 @@ } }, "node_modules/undici": { - "version": "5.26.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.3.tgz", - "integrity": "sha512-H7n2zmKEWgOllKkIUkLvFmsJQj062lSm3uA4EYApG8gLuiOM0/go9bIoC3HVaSnfg4xunowDE2i9p8drkXuvDw==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.6.2.tgz", + "integrity": "sha512-vSqvUE5skSxQJ5sztTZ/CdeJb1Wq0Hf44hlYMciqHghvz+K88U0l7D6u1VsndoFgskDcnU+nG3gYmMzJVzd9Qg==", "dependencies": { "@fastify/busboy": "^2.0.0" }, "engines": { - "node": ">=14.0" + "node": ">=18.0" } }, "node_modules/util-deprecate": { @@ -8115,9 +8115,9 @@ "optional": true }, "undici": { - "version": "5.26.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.3.tgz", - "integrity": "sha512-H7n2zmKEWgOllKkIUkLvFmsJQj062lSm3uA4EYApG8gLuiOM0/go9bIoC3HVaSnfg4xunowDE2i9p8drkXuvDw==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.6.2.tgz", + "integrity": "sha512-vSqvUE5skSxQJ5sztTZ/CdeJb1Wq0Hf44hlYMciqHghvz+K88U0l7D6u1VsndoFgskDcnU+nG3gYmMzJVzd9Qg==", "requires": { "@fastify/busboy": "^2.0.0" } diff --git a/source/sdk/js/package.json b/source/sdk/js/package.json index bb52561c..a9f2c573 100644 --- a/source/sdk/js/package.json +++ b/source/sdk/js/package.json @@ -37,7 +37,7 @@ "async-retry": "1.3.3", "aws4": "1.12.0", "lodash.curry": "4.1.1", - "undici": "5.26.3", + "undici": "6.6.2", "winston": "3.8.2" }, "devDependencies": {