diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e6f73d..13f7594 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,11 @@ All notable changes to this project will be documented in this file. The format is 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). +## [1.8.12] - 2024-09-18 +### Changed +- Upgraded path-to-regexp to mitigate CVE-2024-45296 +- Upgraded micromatch to mitigate CVE-2024-4067 + ## [1.8.11] - 2024-08-16 ### Changed - Upgraded axios to mitigate CVE-2024-39338 diff --git a/SECURITY.md b/SECURITY.md index 7d08f2f..9c82ab1 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -3,4 +3,4 @@ Reporting Security Issues We take all security reports seriously. When we receive such reports, we will investigate and subsequently address any potential vulnerabilities as quickly as possible. If you discover a potential security issue in this project, please notify AWS/Amazon Security via our [vulnerability reporting page](http://aws.amazon.com/security/vulnerability-reporting/) or -directly via email to [AWS Security](mailto:aws-security@amazon.com). Please do not create a public GitHub issue in this project. +directly via email to [AWS Security](mailto:aws-security@amazon.com). Please do not create a public GitHub issue in this project. \ No newline at end of file diff --git a/solution-manifest.yaml b/solution-manifest.yaml index 1325327..6de9800 100644 --- a/solution-manifest.yaml +++ b/solution-manifest.yaml @@ -2,7 +2,7 @@ id: SO0143 # Solution Id name: devops-monitoring-dashboard-on-aws # trademarked name opensource_archive: aws-devops-monitoring-dashboard.zip -version: v1.8.11 # current version of the solution. Used to verify template headers +version: v1.8.12 # current version of the solution. Used to verify template headers cloudformation_templates: # This list should match with AWS CloudFormation templates section of IG - template: aws-devops-monitoring-dashboard.template main_template: true diff --git a/source/lambda/event_parser/npm-shrinkwrap.json b/source/lambda/event_parser/npm-shrinkwrap.json index 57e4dec..eb1f90b 100644 --- a/source/lambda/event_parser/npm-shrinkwrap.json +++ b/source/lambda/event_parser/npm-shrinkwrap.json @@ -5229,12 +5229,12 @@ "dev": true }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -6050,9 +6050,9 @@ "dev": true }, "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, "dependencies": { "isarray": "0.0.1" @@ -11281,12 +11281,12 @@ "dev": true }, "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "requires": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" } }, @@ -11926,9 +11926,9 @@ "dev": true }, "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, "requires": { "isarray": "0.0.1" diff --git a/source/lambda/multi_account_custom_resources/npm-shrinkwrap.json b/source/lambda/multi_account_custom_resources/npm-shrinkwrap.json index 3a788e2..3f8f9e3 100644 --- a/source/lambda/multi_account_custom_resources/npm-shrinkwrap.json +++ b/source/lambda/multi_account_custom_resources/npm-shrinkwrap.json @@ -5784,12 +5784,12 @@ "dev": true }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -6624,9 +6624,9 @@ "dev": true }, "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, "dependencies": { "isarray": "0.0.1" @@ -12308,12 +12308,12 @@ "dev": true }, "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "requires": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" } }, @@ -12966,9 +12966,9 @@ "dev": true }, "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, "requires": { "isarray": "0.0.1" diff --git a/source/lambda/query_runner/npm-shrinkwrap.json b/source/lambda/query_runner/npm-shrinkwrap.json index b99ed06..25a7764 100644 --- a/source/lambda/query_runner/npm-shrinkwrap.json +++ b/source/lambda/query_runner/npm-shrinkwrap.json @@ -5487,12 +5487,12 @@ "dev": true }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -6327,9 +6327,9 @@ "dev": true }, "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, "dependencies": { "isarray": "0.0.1" @@ -11762,12 +11762,12 @@ "dev": true }, "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "requires": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" } }, @@ -12420,9 +12420,9 @@ "dev": true }, "path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, "requires": { "isarray": "0.0.1" diff --git a/source/lambda/tag_query/npm-shrinkwrap.json b/source/lambda/tag_query/npm-shrinkwrap.json index 8720cc9..72147af 100644 --- a/source/lambda/tag_query/npm-shrinkwrap.json +++ b/source/lambda/tag_query/npm-shrinkwrap.json @@ -4865,12 +4865,12 @@ "dev": true }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -5111,9 +5111,9 @@ "dev": true }, "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", + "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", "dev": true, "dependencies": { "isarray": "0.0.1" diff --git a/source/npm-shrinkwrap.json b/source/npm-shrinkwrap.json index f8f5553..201c4ba 100644 --- a/source/npm-shrinkwrap.json +++ b/source/npm-shrinkwrap.json @@ -1,12 +1,12 @@ { "name": "aws_devops_monitoring_dashboard", - "version": "1.8.11", + "version": "1.8.12", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "aws_devops_monitoring_dashboard", - "version": "1.8.11", + "version": "1.8.12", "license": "Apache-2.0", "dependencies": { "@aws-cdk/aws-glue-alpha": "^2.130.0-alpha", @@ -7365,12 +7365,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { diff --git a/source/package.json b/source/package.json index f99e53f..d736461 100644 --- a/source/package.json +++ b/source/package.json @@ -1,7 +1,7 @@ { "name": "aws_devops_monitoring_dashboard", "description": "CDK app to provision AWS resources for the solution", - "version": "1.8.11", + "version": "1.8.12", "bin": { "aws_devops_monitoring_dashboard": "bin/aws_devops_monitoring_dashboard.js" }, diff --git a/source/test/__snapshots__/aws_devops_monitoring_dashboard_stack.test.ts.snap b/source/test/__snapshots__/aws_devops_monitoring_dashboard_stack.test.ts.snap index e0f3fdb..750163c 100644 --- a/source/test/__snapshots__/aws_devops_monitoring_dashboard_stack.test.ts.snap +++ b/source/test/__snapshots__/aws_devops_monitoring_dashboard_stack.test.ts.snap @@ -447,7 +447,7 @@ exports[`Snapshot test for primary devopsDashboardStack 1`] = ` "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "f4fd05151c560d0c6b8364b4a2add5e75600534d0dfbc0679ea1efe5aa7f7f63.zip", + "S3Key": "ca8aa2360e37b80efd42f09b76a1e5f131a812cb2bb0c4ffeda33173f70743ad.zip", }, "Description": "DevOps Monitoring Dashboard on AWS solution - This function runs on a daily schedule and adds a new partition to Amazon Athena table", "Environment": { @@ -1122,7 +1122,7 @@ exports[`Snapshot test for primary devopsDashboardStack 1`] = ` "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "240e359dfbddd5a1f34a91445a3224f32a4fb1859012c760306c1e654e3b65f5.zip", + "S3Key": "c630f97eb2c42a717af78477815b434f59094d54563f429f2f2f05b7334a2e77.zip", }, "Description": "DevOps Monitoring Dashboard on AWS solution - This function performs lambda transformation within kinesis firehose. It parses CloudWatch metrics for CodeBuild, sends relevant data to S3 for downstream operation", "Environment": { @@ -2545,7 +2545,7 @@ exports[`Snapshot test for primary devopsDashboardStack 1`] = ` "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "240e359dfbddd5a1f34a91445a3224f32a4fb1859012c760306c1e654e3b65f5.zip", + "S3Key": "c630f97eb2c42a717af78477815b434f59094d54563f429f2f2f05b7334a2e77.zip", }, "Description": "DevOps Monitoring Dashboard on AWS solution - This function performs lambda transformation within kinesis firehose. It parses raw cloudwatch events, sends relevant data to S3 for downstream operation", "Environment": { @@ -2718,7 +2718,7 @@ exports[`Snapshot test for primary devopsDashboardStack 1`] = ` { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "/6a7f795e43e0139b1144186492f0874070c3c0cf88af9b65b07694bfdf9d7fda.json", + "/518e8dd1a32bdaae7bbd7345dd7e8bd6f2b24a1e0e17e7ae97d4dd7c873d91f9.json", ], ], }, @@ -3445,7 +3445,7 @@ exports[`Snapshot test for primary devopsDashboardStack 1`] = ` "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "f4fd05151c560d0c6b8364b4a2add5e75600534d0dfbc0679ea1efe5aa7f7f63.zip", + "S3Key": "ca8aa2360e37b80efd42f09b76a1e5f131a812cb2bb0c4ffeda33173f70743ad.zip", }, "Description": "DevOps Monitoring Dashboard on AWS solution - This function runs Amazon Athena queries and creates views.", "Environment": { @@ -3745,7 +3745,7 @@ exports[`Snapshot test for primary devopsDashboardStack 1`] = ` "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "73200f82b93cc5a96e7fc16ecd98bc88acad5a2451553b152228fdcab5f8ac2a.zip", + "S3Key": "cd3ad7dccc1befe3ed8d030d73127733b79bb73cce9c8b56014fe641eeef3541.zip", }, "Description": "DevOps Monitoring Dashboard on AWS solution - This function queries CodeCommit, CodeBuild, and CodePipeline resources for tag information.", "Environment": { @@ -4362,7 +4362,7 @@ exports[`Snapshot test for primary devopsDashboardStack 1`] = ` "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "2efb257d6185920b53ab436d195b557aaf741c2b1cfe9bb88e0de8bd4a2cc41b.zip", + "S3Key": "09b58641894e03f71236261a76b7330786115af3f496f6eeef97c64c9f668d84.zip", }, "Description": "DevOps Monitoring Dashboard on AWS solution - This function manages permissions in the central monitoring account that are required for processing metrics sent by other accounts.", "Environment": { diff --git a/source/test/__snapshots__/sharing_account_stack.test.ts.snap b/source/test/__snapshots__/sharing_account_stack.test.ts.snap index 4963918..096b8f5 100644 --- a/source/test/__snapshots__/sharing_account_stack.test.ts.snap +++ b/source/test/__snapshots__/sharing_account_stack.test.ts.snap @@ -290,7 +290,7 @@ exports[`Snapshot test for primary SharingAccountStack 1`] = ` "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "240e359dfbddd5a1f34a91445a3224f32a4fb1859012c760306c1e654e3b65f5.zip", + "S3Key": "c630f97eb2c42a717af78477815b434f59094d54563f429f2f2f05b7334a2e77.zip", }, "Description": "DevOps Monitoring Dashboard on AWS solution - This function performs lambda transformation within kinesis firehose. It parses CloudWatch metrics for CodeBuild, sends relevant data to S3 for downstream operation", "Environment": { @@ -1204,7 +1204,7 @@ exports[`Snapshot test for primary SharingAccountStack 1`] = ` "S3Bucket": { "Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}", }, - "S3Key": "73200f82b93cc5a96e7fc16ecd98bc88acad5a2451553b152228fdcab5f8ac2a.zip", + "S3Key": "cd3ad7dccc1befe3ed8d030d73127733b79bb73cce9c8b56014fe641eeef3541.zip", }, "Description": "DevOps Monitoring Dashboard on AWS solution - This function queries CodeCommit, CodeBuild, and CodePipeline resources for tag information.", "Environment": {