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": {