diff --git a/.github/workflows/gh-page.yml b/.github/workflows/gh-page.yml deleted file mode 100644 index c4a17df1..00000000 --- a/.github/workflows/gh-page.yml +++ /dev/null @@ -1,40 +0,0 @@ -name: GitHub Pages - -on: - push: - branches: - - main # Set a branch name to trigger deployment - pull_request: - -jobs: - deploy: - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@v2 - with: - fetch-depth: 0 # Fetch all history for .GitInfo and .Lastmod - - - name: Setup Python - uses: actions/setup-python@v2 - with: - python-version: '3.9' - - - name: Install dependencies - run: | - python3 -m pip install mkdocs==1.3.1 # install mkdocs - python3 -m pip install mkdocs-material==8.5.3 # install material theme - python3 -m pip install mkdocs-macros-plugin==0.7.0 # install macros plugin - python3 -m pip install mkdocs-include-markdown-plugin==3.8.1 # install include-markdown - - - name: Build mkdocs - run: | - mkdocs build -f ./docs/mkdocs.en.yml - mkdocs build -f ./docs/mkdocs.zh.yml - cp -av ./docs/index.html ./docs/site - - - name: Deploy - uses: peaceiris/actions-gh-pages@v3 - if: ${{ github.ref == 'refs/heads/main' }} - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./docs/site \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 1768db68..cf1f329f 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,28 @@ 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). +## [2.3.0] - 2024-12-17 + +### Added + +- Add the architecture diagram of sampled WAF logs when creating WAF log pipeline. #132 +- Add the support of ingesting Aurora/RDS PostgreSQL logs. #122 + +### Changed + +- Replace Amazon SQS with Amazon EventBridge to mitigate the Amazon S3 Event Notifications creation failure. #12 +- Redesigned the log ingestion workflow to ingest logs from RDS without the dependency of CloudWatch Logs. #102 +- Reordered pipeline creation workflow: log type and analytics engine selection now occur first for AWS service log pipelines. #309 + +### Fixed + +- Fix the sampling rate validation issue to allow only positive integers when creating CloudFront real-time logs. #302 +- Fix the issue that the pipeline cannot be created due to a lack of "iam:TagRole" permission in some AWS Accounts. #279 +- Fix the issue that the content of Log Config detail may exceed the maximum length of the window. #275 +- Fix the issue that the EKS DaemonSet Guide is not refreshed after editing the log config. #241 +- Fix the user interface issue that a wrong S3 bucket prefix is using when creating WAF log pipeline if the logging has already been enabled. #67 + + ## [2.2.2] - 2024-08-23 ### Changed @@ -18,17 +40,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Remove the redundant sign in alert dialog modal when user session expired. #303 - Fixed the Grafana url validation failed with spaces when import a Grafana Server. #304 -## [2.2.1] - 2024-07-22 +## [2.2.1] - 2024-07-02 ### Added -- Optimised instance list performance. #76 -- Added support for using Unix epoch time format as the time key for single line text log type. +- Optimise list instance performance. ### Fixed -- Fixed an issue that missing time key when editing JSON config. #296 -- Fixed an issue that upgrading to v2.2.0 failed due to missing CMK permissions. #297 +- Fixed an issue that lost time key when edit JSON config. #296 +- Fixed an issue that upgrade to v2.2.0 failed because of the lack of permission of cmk. #297 ## [2.2.0] - 2024-06-20 @@ -55,19 +76,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fixed a bug that prevented instances from being listed when switching accounts on the Instance Group list page. #291 - Fixed a bug where creating a Log Conf with JSON type, if the field type select float, can not create the index template. #293 - -## [2.1.2] - 2024-03-19 - -### Fixed - -- Resolved a bug where upgrading from versions earlier than 2.1.0 led to the loss of S3 notifications, preventing the proper collection of logs from the S3 buffer. #261 -- Addressed a problem where including the "@timestamp" field in log configurations caused failures in creating index_templates, leading to an inability to write data to OpenSearch. #262 -- Fixed a bug in the log processor Lambda due to the absence of the 'batch_size' variable, causing process failures. #242 -- Solved a deployment issue with the Log Analytics Pipeline, which previously could not deploy cross-account Lambda pipelines. #227 -- Corrected an issue with the ALB Service Log Parser that resulted in the omission of numerous log lines. #243 -- Amended an inaccurate warning message displayed during pipeline creation with an existing index in OpenSearch. #260 -- Amended an inaccurate error messaging when deleting an Instance Group in application log pipelines. #229 - ## [2.1.1] - 2023-12-05 ### Fixed diff --git a/CUSTOM_BUILD.md b/CUSTOM_BUILD.md index b65481e0..81dbda59 100644 --- a/CUSTOM_BUILD.md +++ b/CUSTOM_BUILD.md @@ -126,6 +126,6 @@ Once you have uploaded the distributable to your Amazon S3 bucket, you can start Then run: ``` cd ./source/constructs - npx cdk deploy centralized-logging-with-opensearch --parameters adminEmail= + npx cdk deploy CentralizedLogging --parameters adminEmail= ``` diff --git a/NOTICE.txt b/NOTICE.txt index 595dfb66..2a78a918 100755 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -2,168 +2,1740 @@ Centralized Logging with OpenSearch Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. Licensed under the Apache License Version 2.0 (the "License"). You may not use this file except -in compliance with the License. A copy of the License is located at http://www.apache.org/licenses/ +in compliance with the license A copy of the License is located at http://www.apache.org/licenses/ or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, express or implied. See the License for the -specific language governing permissions and limitations under the License. +specific language governing permissions and limitations under the license ********************** THIRD PARTY COMPONENTS ********************** This software includes third party software subject to the following copyrights: -binaryornot under BSD License +actions/checkout under the MIT license +actions/setup-python under the MIT license +peaceiris/actions-gh-pages under the MIT license +slackapi/slack-github-action under the MIT license +openapi_spec_validator under the Apache-2.0 license +pyparsing under the MIT license +pyyaml under the MIT license +binaryornot under the BSD license chardet under GNU Lesser General Public License v2 or later (LGPLv2+) (LGPL) -numpy under The 3-Clause BSD License -pyarrow under Apache License, Version 2.0 -pytest-httpserver under The MIT License +numpy under the BSD-3-Clause license +pyarrow under the Apache-2.0 license +pytest-httpserver under the MIT license boolean.py under BSD-2-Clause -aws-sam-translator under the Apache License, Version 2.0 -aws-xray-sdk under the Apache License, Version 2.0 -cfn-lint under MIT No Attribution License -ecdsa under The MIT License -graphql-core under The MIT License -jschema-to-python under The MIT License -jsondiff under The MIT License -jsonpatch under BSD License -jsonpickle under BSD License -jsonpointer under BSD License -jsonschema-specifications under The MIT License -junit-xml under Freely Distributable, MIT License -license-expression under the Apache License, Version 2.0 -mpmath under BSD License -networkx under BSD License -openapi-spec-validator under the Apache License, Version 2.0 -py-partiql-parser under The MIT License -python-jose under The MIT License -referencing under The MIT License -regex under Apache Software License -rpds-py under The MIT License -sarif-om under The MIT License -sshpubkeys under BSD License -sympy under BSD License -wrapt under BSD License -awscli under the Apache License, Version 2.0 -boto3 under the Apache License, Version 2.0 -botocore under the Apache License, Version 2.0 -defusedxml under the Python Software Foundation License -junit-xml under the Python Software Foundation License -py-serializable under the Apache License, Version 2.0 -pathable under the Apache License, Version 2.0 (details in this link: https://github.com/p1c2u/pathable/blob/master/LICENSE) -Jinja2 under The 3-Clause BSD License -MarkupSafe under The 3-Clause BSD License -Werkzeug under The 3-Clause BSD License -attrs under The MIT License -cffi under The MIT License -colorama under BSD License -coverage under the Apache License, Version 2.0 -cryptography under the Apache License, Version 2.0 OR The 3-Clause BSD License -docker under the Apache License, Version 2.0 -docutils under BSD License, GNU General Public License (GPL), Python Software Foundation License, Public Domain (public domain, Python, BSD-2-Clause, GPL 3(see https://docutils.sourceforge.io/COPYING.txt)) -flake8 under The MIT License -iniconfig under The MIT License -ipaddr under the Apache License, Version 2.0 -jmespath under The MIT License -jsonschema-spec under the Apache License, Version 2.0 -lazy-object-proxy under the BSD-2-Clause -maxminddb under the Apache License, Version 2.0 -mccabe under The MIT License -moto under the Apache License, Version 2.0 -openapi-schema-validator under The 3-Clause BSD License -pluggy under The MIT License -pyOpenSSL under the Apache License, Version 2.0 +aws-sam-translator under the under the Apache-2.0 license +aws-xray-sdk under the under the Apache-2.0 license +cfn-lint under MIT No Attribution license +ecdsa under the MIT license +graphql-core under the MIT license +jschema-to-python under the MIT license +jsondiff under the MIT license +jsonpatch under the BSD license +jsonpickle under the BSD license +jsonpointer under the BSD license +jsonschema-specifications under the MIT license +junit-xml under Freely Distributable, MIT license +license-expression under the under the Apache-2.0 license +mpmath under the BSD license +networkx under the BSD license +openapi-spec-validator under the under the Apache-2.0 license +py-partiql-parser under the MIT license +python-jose under the MIT license +referencing under the MIT license +regex under Apache Software license +rpds-py under the MIT license +sarif-om under the MIT license +sshpubkeys under the BSD license +sympy under the BSD license +wrapt under the BSD license +awscli under the under the Apache-2.0 license +boto3 under the under the Apache-2.0 license +botocore under the under the Apache-2.0 license +defusedxml under the Python Software Foundation license +junit-xml under the Python Software Foundation license +py-serializable under the under the Apache-2.0 license +pathable under the under the Apache-2.0 license (details in this link: https://github.com/p1c2u/pathable/blob/master/LICENSE) +Jinja2 under the BSD-3-Clause license +MarkupSafe under the BSD-3-Clause license +Werkzeug under the BSD-3-Clause license +attrs under the MIT license +cffi under the MIT license +colorama under the BSD license +coverage under the under the Apache-2.0 license +cryptography under the under the Apache-2.0 license OR The BSD-3-Clause license +docker under the under the Apache-2.0 license +docutils under the BSD license, GNU General Public License (GPL), Python Software Foundation License, Public Domain (public domain, Python, BSD-2-Clause, GPL 3(see https://docutils.sourceforge.io/COPYING.txt)) +flake8 under the MIT license +iniconfig under the MIT license +ipaddr under the under the Apache-2.0 license +jmespath under the MIT license +jsonschema-spec under the under the Apache-2.0 license +lazy-object-proxy under the BSD-2-Clause license +maxminddb under the under the Apache-2.0 license +mccabe under the MIT license +moto under the under the Apache-2.0 license +openapi-schema-validator under the BSD-3-Clause license +pluggy under the MIT license +pyOpenSSL under the under the Apache-2.0 license pyasn1 under the BSD-2-Clause -pycodestyle under The MIT License -pycparser under BSD License -pydantic under The MIT License -pyflakes under The MIT License -pyrsistent under The MIT License -pytest under The MIT License -pytest-cov under The MIT License -pytest-mock under The MIT License +pycodestyle under the MIT license +pycparser under the BSD license +pydantic under the MIT license +pyflakes under the MIT license +pyrsistent under the MIT license +pytest under the MIT license +pytest-cov under the MIT license +pytest-mock under the MIT license python-dateutil under Apache Software License, BSD License (Dual License) -requests-aws4auth under The MIT License -requests-mock under the Apache License, Version 2.0 -responses under the Apache License, Version 2.0 -rfc3339-validator under The MIT License -rsa under the Apache License, Version 2.0 -s3transfer under the Apache License, Version 2.0 -types-PyYAML under the Apache License, Version 2.0 +requests-aws4auth under the MIT license +requests-mock under the under the Apache-2.0 license +responses under the under the Apache-2.0 license +rfc3339-validator under the MIT license +rsa under the under the Apache-2.0 license +s3transfer under the under the Apache-2.0 license +types-PyYAML under the under the Apache-2.0 license typing_extensions under Python Software Foundation License -ua-parser under the Apache License, Version 2.0 -user-agents under The MIT License -websocket-client under the Apache License, Version 2.0 -aws-lambda-powertools under The MIT License -xmltodict under The MIT License -@aws-cdk/aws-appsync-alpha under the Apache License, Version 2.0 -@aws-cdk/aws-kinesisfirehose-alpha under the Apache License, Version 2.0 -@aws-cdk/aws-kinesisfirehose-destinations-alpha under the Apache License, Version 2.0 -@aws-solutions-constructs/aws-cloudfront-s3 under the Apache License, Version 2.0 -@typescript-eslint/eslint-plugin under The MIT License +ua-parser under the under the Apache-2.0 license +user-agents under the MIT license +websocket-client under the under the Apache-2.0 license +aws-lambda-powertools under the MIT license +xmltodict under the MIT license +@aws-cdk/aws-appsync-alpha under the under the Apache-2.0 license +@aws-cdk/aws-kinesisfirehose-alpha under the under the Apache-2.0 license +@aws-cdk/aws-kinesisfirehose-destinations-alpha under the under the Apache-2.0 license +@aws-solutions-constructs/aws-cloudfront-s3 under the under the Apache-2.0 license +@typescript-eslint/eslint-plugin under the MIT license @typescript-eslint/parser under the BSD-2-Clause -eslint under The MIT License -eslint-config-prettier under The MIT License -eslint-import-resolver-node under The MIT License -eslint-import-resolver-typescript under the ISC License -eslint-plugin-import under The MIT License -eslint-plugin-prettier under The MIT License -aws-cdk under the Apache License, Version 2.0 -aws-cdk-lib under the Apache License, Version 2.0 -cdk-nag under the Apache License, Version 2.0 -source-map-support under The MIT License -fs under The MIT License -exceptiongroup under The MIT License -tomli under MIT License -pytest-xdist under MIT License -execnet under MIT License -@apollo/client under The MIT License -@aws-amplify/ui-components under the Apache License, Version 2.0 -@aws-amplify/ui-react under the Apache License, Version 2.0 -@material-ui/core under The MIT License +eslint under the MIT license +eslint-config-prettier under the MIT license +eslint-import-resolver-node under the MIT license +eslint-import-resolver-typescript under the ISC license +eslint-plugin-import under the MIT license +eslint-plugin-prettier under the MIT license +aws-cdk under the under the Apache-2.0 license +aws-cdk-lib under the under the Apache-2.0 license +cdk-nag under the under the Apache-2.0 license +source-map-support under the MIT license +fs under the MIT license +exceptiongroup under the MIT license +tomli under the MIT license +pytest-xdist under the MIT license +execnet under the MIT license +@apollo/client under the MIT license +@aws-amplify/ui-components under the under the Apache-2.0 license +@aws-amplify/ui-react under the under the Apache-2.0 license +@material-ui/core under the MIT license @material-ui/icons under the MIT license -@material-ui/lab under The MIT License -@testing-library/jest-dom under The MIT License -@testing-library/react under The MIT License -@testing-library/user-event under The MIT License -@types/jest under The MIT License -@types/node under The MIT License -@types/react under The MIT License -@types/react-dom under The MIT License -amplify under The MIT License -apexcharts under The MIT License -apollo-link under The MIT License -aws-amplify under the Apache License, Version 2.0 -aws-appsync-auth-link under the Apache License, Version 2.0 -aws-appsync-subscription-link under the Apache License, Version 2.0 -axios under The MIT License -classnames under The MIT License -date-fns under The MIT License -graphql-tag under The MIT License -i18next under The MIT License -i18next-browser-languagedetector under The MIT License -i18next-http-backend under The MIT License -lodash.clonedeep under The MIT License -moment under The MIT License -node-sass under the Apache License, Version 2.0 -oidc-client-ts under the Apache License, Version 2.0 -react under The MIT License -react-apexcharts under The MIT License -react-copy-to-clipboard under The MIT License -react-dom under The MIT License -react-i18next under The MIT License -react-minimal-datetime-range under The MIT License -react-oidc-context under The MIT License -react-redux under The MIT License -react-router-dom under The MIT License -redux under The MIT License -sweetalert2 under The MIT License -typescript under the Apache License, Version 2.0 -web-vitals under the Apache License, Version 2.0 +@material-ui/lab under the MIT license +@testing-library/jest-dom under the MIT license +@testing-library/react under the MIT license +@testing-library/user-event under the MIT license +@types/jest under the MIT license +@types/node under the MIT license +@types/react under the MIT license +@types/react-dom under the MIT license +amplify under the MIT license +apexcharts under the MIT license +apollo-link under the MIT license +aws-amplify under the under the Apache-2.0 license +aws-appsync-auth-link under the under the Apache-2.0 license +aws-appsync-subscription-link under the under the Apache-2.0 license +axios under the MIT license +classnames under the MIT license +date-fns under the MIT license +graphql-tag under the MIT license +i18next under the MIT license +i18next-browser-languagedetector under the MIT license +i18next-http-backend under the MIT license +lodash.clonedeep under the MIT license +moment under the MIT license +oidc-client-ts under the under the Apache-2.0 license +react under the MIT license +react-apexcharts under the MIT license +react-copy-to-clipboard under the MIT license +react-dom under the MIT license +react-i18next under the MIT license +react-minimal-datetime-range under the MIT license +react-oidc-context under the MIT license +react-redux under the MIT license +react-router-dom under the MIT license +redux under the MIT license +sweetalert2 under the MIT license +typescript under the under the Apache-2.0 license +web-vitals under the under the Apache-2.0 license notice-js under MIT-0 js-json-schema-inferrer under ISC License -@aws-cdk/aws-glue-alpha under the Apache License, Version 2.0 -@reduxjs/toolkit under The MIT License -redux-mock-store under The MIT License -@types/redux-mock-store under The MIT License -jsonschema-path under the Apache License, Version 2.0 -pytest_httpserver under The MIT License \ No newline at end of file +@aws-cdk/aws-glue-alpha under the under the Apache-2.0 license +@reduxjs/toolkit under the MIT license +redux-mock-store under the MIT license +@types/redux-mock-store under the MIT license +jsonschema-path under the under the Apache-2.0 license +pytest_httpserver under the MIT license +react-syntax-highlighter under the MIT license +@types/react-syntax-highlighter under the MIT license +cachetools under the MIT license +ua-parser-builtins under the under the Apache-2.0 license +@testing-library/react under the MIT license +apexcharts under the MIT license +@testing-library/react-hooks under the MIT license +@types/lodash.clonedeep under the MIT license +@types/react-copy-to-clipboard under the MIT license +@types/react-router-dom under the MIT license +ajv under the MIT license +cross-env under the MIT license +env-cmd under the MIT license +eslint-config-react under the MIT license +eslint-config-standard under the MIT license +eslint-plugin-node under the MIT license +eslint-plugin-promise under the ISC License +eslint-plugin-react under the MIT license +react-scripts under the MIT license +rimraf under the ISC License +sass under the MIT license +nth-check under the BSD-2-Clause License +semver under the ISC License +word-wrap under the MIT license +express under MIT License +follow-redirects under MIT License +postcss under the MIT license +webpack-dev-middleware under the MIT license +webpack under the MIT license +ejs under the under the Apache-2.0 license +braces under the MIT license +ws under the MIT license +fast-xml-parser under the MIT license +micromatch under the MIT license +rollup under the MIT license +body-parser under the MIT license +cross-spawn under the MIT license +http-proxy-middleware under the MIT license +send under the MIT license +serve-static under the MIT license +cookie under the MIT license +ua-parser-builtins under the under the Apache-2.0 license +urllib3 under the MIT license +urllib3<1.27, under the MIT license +urlgrabber under GNU Lesser General Public License v2 or later (LGPLv2+) (LGPL) +iniparse under the MIT license +pip under the MIT license +wsgiref under the Python-2.0 license +Python under the Python-2.0 license +yum-metadata-parser under the GNU Lesser General Public License v2 or later (LGPLv2+) (LGPL) +rpm-python under the MIT license +pycurl under the GNU Lesser General Public License v2 or later (LGPLv2+) (LGPL) +pygpgme under the GNU Lesser General Public License v2 or later (LGPLv2+) (LGPL) +lambda/python under the ISC license +format under the MIT license +exit under the Unlicense license +charset_normalizer under the MIT license +aws-observability/aws-for-fluent-bit under the Apache-2.0 license +@aws-amplify/analytics under the Apache-2.0 license +@aws-amplify/ui-components under the Apache-2.0 license +@aws-amplify/cache under the Apache-2.0 license +@aws-amplify/core under the Apache-2.0 license +@aws-crypto/sha256-js under the Apache-2.0 license +@aws-crypto/util under the Apache-2.0 license +@aws-sdk/types under the Apache-2.0 license +@aws-sdk/util-utf8-browser under the Apache-2.0 license +@aws-sdk/client-cloudwatch-logs under the Apache-2.0 license +@aws-crypto/sha256-browser under the Apache-2.0 license +@aws-crypto/ie11-detection under the Apache-2.0 license +@aws-crypto/supports-web-crypto under the Apache-2.0 license +@aws-sdk/util-locate-window under the Apache-2.0 license +@aws-sdk/config-resolver under the Apache-2.0 license +@aws-sdk/signature-v4 under the Apache-2.0 license +@aws-sdk/is-array-buffer under the Apache-2.0 license +@aws-sdk/util-hex-encoding under the Apache-2.0 license +@aws-sdk/util-uri-escape under the Apache-2.0 license +@aws-sdk/credential-provider-env under the Apache-2.0 license +@aws-sdk/property-provider under the Apache-2.0 license +@aws-sdk/credential-provider-imds under the Apache-2.0 license +@aws-sdk/credential-provider-ini under the Apache-2.0 license +@aws-sdk/shared-ini-file-loader under the Apache-2.0 license +@aws-sdk/credential-provider-process under the Apache-2.0 license +@aws-sdk/fetch-http-handler under the Apache-2.0 license +@aws-sdk/protocol-http under the Apache-2.0 license +@aws-sdk/querystring-builder under the Apache-2.0 license +@aws-sdk/util-base64-browser under the Apache-2.0 license +@aws-sdk/hash-node under the Apache-2.0 license +@aws-sdk/util-buffer-from under the Apache-2.0 license +@aws-sdk/invalid-dependency under the Apache-2.0 license +@aws-sdk/middleware-content-length under the Apache-2.0 license +@aws-sdk/middleware-host-header under the Apache-2.0 license +@aws-sdk/middleware-logger under the Apache-2.0 license +@aws-sdk/middleware-retry under the Apache-2.0 license +@aws-sdk/service-error-classification under the Apache-2.0 license +@aws-sdk/middleware-serde under the Apache-2.0 license +@aws-sdk/middleware-signing under the Apache-2.0 license +@aws-sdk/middleware-stack under the Apache-2.0 license +@aws-sdk/middleware-user-agent under the Apache-2.0 license +@aws-sdk/node-config-provider under the Apache-2.0 license +@aws-sdk/node-http-handler under the Apache-2.0 license +@aws-sdk/abort-controller under the Apache-2.0 license +@aws-sdk/smithy-client under the Apache-2.0 license +@aws-sdk/url-parser under the Apache-2.0 license +@aws-sdk/querystring-parser under the Apache-2.0 license +@aws-sdk/url-parser-native under the Apache-2.0 license +@aws-sdk/util-base64-node under the Apache-2.0 license +@aws-sdk/util-body-length-browser under the Apache-2.0 license +@aws-sdk/util-body-length-node under the Apache-2.0 license +@aws-sdk/util-user-agent-browser under the Apache-2.0 license +@aws-sdk/util-user-agent-node under the Apache-2.0 license +@aws-sdk/util-utf8-node under the Apache-2.0 license +@aws-sdk/client-firehose under the Apache-2.0 license +@aws-sdk/client-kinesis under the Apache-2.0 license +@aws-sdk/eventstream-serde-browser under the Apache-2.0 license +@aws-sdk/eventstream-marshaller under the Apache-2.0 license +@aws-crypto/crc32 under the Apache-2.0 license +@aws-sdk/eventstream-serde-universal under the Apache-2.0 license +@aws-sdk/eventstream-serde-config-resolver under the Apache-2.0 license +@aws-sdk/eventstream-serde-node under the Apache-2.0 license +@aws-sdk/util-waiter under the Apache-2.0 license +@aws-sdk/client-personalize-events under the Apache-2.0 license +@aws-amplify/api under the Apache-2.0 license +@aws-amplify/api-graphql under the Apache-2.0 license +@aws-amplify/api-rest under the Apache-2.0 license +@aws-amplify/auth under the Apache-2.0 license +@aws-amplify/pubsub under the Apache-2.0 license +@aws-amplify/datastore under the Apache-2.0 license +@aws-amplify/geo under the Apache-2.0 license +@aws-sdk/client-location under the Apache-2.0 license +@aws-sdk/util-config-provider under the Apache-2.0 license +@aws-sdk/util-middleware under the Apache-2.0 license +@aws-sdk/credential-provider-sso under the Apache-2.0 license +@aws-sdk/client-sso under the Apache-2.0 license +@aws-sdk/middleware-recursion-detection under the Apache-2.0 license +@aws-sdk/util-defaults-mode-browser under the Apache-2.0 license +@aws-sdk/util-defaults-mode-node under the Apache-2.0 license +@aws-sdk/credential-provider-web-identity under the Apache-2.0 license +@aws-sdk/client-sts under the Apache-2.0 license +@aws-sdk/middleware-sdk-sts under the Apache-2.0 license +@aws-amplify/interactions under the Apache-2.0 license +@aws-sdk/client-lex-runtime-service under the Apache-2.0 license +@aws-sdk/client-lex-runtime-v2 under the Apache-2.0 license +@aws-sdk/eventstream-codec under the Apache-2.0 license +@aws-sdk/eventstream-handler-node under the Apache-2.0 license +@aws-sdk/middleware-eventstream under the Apache-2.0 license +@aws-amplify/notifications under the Apache-2.0 license +@aws-amplify/rtn-push-notification under the Apache-2.0 license +@aws-amplify/predictions under the Apache-2.0 license +@aws-amplify/storage under the Apache-2.0 license +@aws-sdk/md5-js under the Apache-2.0 license +@aws-sdk/client-comprehend under the Apache-2.0 license +@aws-sdk/client-polly under the Apache-2.0 license +@aws-sdk/client-rekognition under the Apache-2.0 license +@aws-sdk/client-textract under the Apache-2.0 license +@aws-sdk/client-translate under the Apache-2.0 license +@aws-amplify/ui-react-core under the Apache-2.0 license +react-native-get-random-values under the MIT license +fast-base64-decode under the MIT license +@adobe/css-tools under the MIT license +@alloc/quick-lru under the MIT license +@ampproject/remapping under the Apache-2.0 license +@apideck/better-ajv-errors under the MIT license +@aws-amplify/ui under the Apache-2.0 license +@aws-amplify/ui-react under the Apache-2.0 license +@aws-cdk/asset-awscli-v1 under the Apache-2.0 license +@aws-cdk/asset-kubectl-v20 under the Apache-2.0 license +@aws-cdk/asset-node-proxy-agent-v6 under the Apache-2.0 license +@aws-cdk/aws-appsync-alpha under the Apache-2.0 license +@aws-cdk/aws-glue-alpha under the Apache-2.0 license +@aws-cdk/aws-kinesisfirehose-alpha under the Apache-2.0 license +@aws-cdk/aws-kinesisfirehose-destinations-alpha under the Apache-2.0 license +@aws-cdk/cloud-assembly-schema under the Apache-2.0 license +@aws-sdk/credential-provider-node under the Apache-2.0 license +@aws-solutions-constructs/aws-cloudfront-s3 under the Apache-2.0 license +@aws-solutions-constructs/core under the Apache-2.0 license +@babel/code-frame under the MIT license +@babel/compat-data under the MIT license +@babel/core under the MIT license +@babel/eslint-parser under the MIT license +@babel/generator under the MIT license +@babel/helper-annotate-as-pure under the MIT license +@babel/helper-builder-binary-assignment-operator-visitor under the MIT license +@babel/helper-compilation-targets under the MIT license +@babel/helper-create-class-features-plugin under the MIT license +@babel/helper-create-regexp-features-plugin under the MIT license +@babel/helper-define-polyfill-provider under the MIT license +@babel/helper-member-expression-to-functions under the MIT license +@babel/helper-module-imports under the MIT license +@babel/helper-module-transforms under the MIT license +@babel/helper-optimise-call-expression under the MIT license +@babel/helper-plugin-utils under the MIT license +@babel/helper-remap-async-to-generator under the MIT license +@babel/helper-replace-supers under the MIT license +@babel/helper-simple-access under the MIT license +@babel/helper-skip-transparent-expression-wrappers under the MIT license +@babel/helper-string-parser under the MIT license +@babel/helper-validator-identifier under the MIT license +@babel/helper-validator-option under the MIT license +@babel/helper-wrap-function under the MIT license +@babel/helpers under the MIT license +@babel/highlight under the MIT license +@babel/parser under the MIT license +@babel/plugin-bugfix-firefox-class-in-computed-class-key under the MIT license +@babel/plugin-bugfix-safari-class-field-initializer-scope under the MIT license +@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression under the MIT license +@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining under the MIT license +@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly under the MIT license +@babel/plugin-proposal-class-properties under the MIT license +@babel/plugin-proposal-decorators under the MIT license +@babel/plugin-proposal-nullish-coalescing-operator under the MIT license +@babel/plugin-proposal-numeric-separator under the MIT license +@babel/plugin-proposal-optional-chaining under the MIT license +@babel/plugin-proposal-private-methods under the MIT license +@babel/plugin-proposal-private-property-in-object under the MIT license +@babel/plugin-syntax-async-generators under the MIT license +@babel/plugin-syntax-bigint under the MIT license +@babel/plugin-syntax-class-properties under the MIT license +@babel/plugin-syntax-class-static-block under the MIT license +@babel/plugin-syntax-decorators under the MIT license +@babel/plugin-syntax-dynamic-import under the MIT license +@babel/plugin-syntax-export-namespace-from under the MIT license +@babel/plugin-syntax-flow under the MIT license +@babel/plugin-syntax-import-assertions under the MIT license +@babel/plugin-syntax-import-attributes under the MIT license +@babel/plugin-syntax-import-meta under the MIT license +@babel/plugin-syntax-json-strings under the MIT license +@babel/plugin-syntax-jsx under the MIT license +@babel/plugin-syntax-logical-assignment-operators under the MIT license +@babel/plugin-syntax-nullish-coalescing-operator under the MIT license +@babel/plugin-syntax-numeric-separator under the MIT license +@babel/plugin-syntax-object-rest-spread under the MIT license +@babel/plugin-syntax-optional-catch-binding under the MIT license +@babel/plugin-syntax-optional-chaining under the MIT license +@babel/plugin-syntax-private-property-in-object under the MIT license +@babel/plugin-syntax-top-level-await under the MIT license +@babel/plugin-syntax-typescript under the MIT license +@babel/plugin-syntax-unicode-sets-regex under the MIT license +@babel/plugin-transform-arrow-functions under the MIT license +@babel/plugin-transform-async-generator-functions under the MIT license +@babel/plugin-transform-async-to-generator under the MIT license +@babel/plugin-transform-block-scoped-functions under the MIT license +@babel/plugin-transform-block-scoping under the MIT license +@babel/plugin-transform-class-properties under the MIT license +@babel/plugin-transform-class-static-block under the MIT license +@babel/plugin-transform-classes under the MIT license +@babel/plugin-transform-computed-properties under the MIT license +@babel/plugin-transform-destructuring under the MIT license +@babel/plugin-transform-dotall-regex under the MIT license +@babel/plugin-transform-duplicate-keys under the MIT license +@babel/plugin-transform-duplicate-named-capturing-groups-regex under the MIT license +@babel/plugin-transform-dynamic-import under the MIT license +@babel/plugin-transform-exponentiation-operator under the MIT license +@babel/plugin-transform-export-namespace-from under the MIT license +@babel/plugin-transform-flow-strip-types under the MIT license +@babel/plugin-transform-for-of under the MIT license +@babel/plugin-transform-function-name under the MIT license +@babel/plugin-transform-json-strings under the MIT license +@babel/plugin-transform-literals under the MIT license +@babel/plugin-transform-logical-assignment-operators under the MIT license +@babel/plugin-transform-member-expression-literals under the MIT license +@babel/plugin-transform-modules-amd under the MIT license +@babel/plugin-transform-modules-commonjs under the MIT license +@babel/plugin-transform-modules-systemjs under the MIT license +@babel/plugin-transform-modules-umd under the MIT license +@babel/plugin-transform-named-capturing-groups-regex under the MIT license +@babel/plugin-transform-new-target under the MIT license +@babel/plugin-transform-nullish-coalescing-operator under the MIT license +@babel/plugin-transform-numeric-separator under the MIT license +@babel/plugin-transform-object-rest-spread under the MIT license +@babel/plugin-transform-object-super under the MIT license +@babel/plugin-transform-optional-catch-binding under the MIT license +@babel/plugin-transform-optional-chaining under the MIT license +@babel/plugin-transform-parameters under the MIT license +@babel/plugin-transform-private-methods under the MIT license +@babel/plugin-transform-private-property-in-object under the MIT license +@babel/plugin-transform-property-literals under the MIT license +@babel/plugin-transform-react-constant-elements under the MIT license +@babel/plugin-transform-react-display-name under the MIT license +@babel/plugin-transform-react-jsx under the MIT license +@babel/plugin-transform-react-jsx-development under the MIT license +@babel/plugin-transform-react-pure-annotations under the MIT license +@babel/plugin-transform-regenerator under the MIT license +@babel/plugin-transform-reserved-words under the MIT license +@babel/plugin-transform-runtime under the MIT license +@babel/plugin-transform-shorthand-properties under the MIT license +@babel/plugin-transform-spread under the MIT license +@babel/plugin-transform-sticky-regex under the MIT license +@babel/plugin-transform-template-literals under the MIT license +@babel/plugin-transform-typeof-symbol under the MIT license +@babel/plugin-transform-typescript under the MIT license +@babel/plugin-transform-unicode-escapes under the MIT license +@babel/plugin-transform-unicode-property-regex under the MIT license +@babel/plugin-transform-unicode-regex under the MIT license +@babel/plugin-transform-unicode-sets-regex under the MIT license +@babel/preset-env under the MIT license +@babel/preset-modules under the MIT license +@babel/preset-react under the MIT license +@babel/preset-typescript under the MIT license +@babel/regjsgen under the MIT license +@babel/runtime under the MIT license +@babel/template under the MIT license +@babel/traverse under the MIT license +@babel/types under the MIT license +@balena/dockerignore under the Apache-2.0 license +@bcoe/v8-coverage under the MIT license +@cspotcode/source-map-support under the MIT license +@csstools/normalize.css under the CC0-1.0 license +@csstools/postcss-cascade-layers under the MIT-0 license +@csstools/postcss-color-function under the MIT-0 license +@csstools/postcss-font-format-keywords under the MIT-0 license +@csstools/postcss-hwb-function under the MIT-0 license +@csstools/postcss-ic-unit under the MIT-0 license +@csstools/postcss-is-pseudo-class under the MIT-0 license +@csstools/postcss-nested-calc under the MIT-0 license +@csstools/postcss-normalize-display-values under the MIT-0 license +@csstools/postcss-oklab-function under the MIT-0 license +@csstools/postcss-progressive-custom-properties under the MIT-0 license +@csstools/postcss-stepped-value-functions under the MIT-0 license +@csstools/postcss-text-decoration-shorthand under the MIT-0 license +@csstools/postcss-trigonometric-functions under the MIT-0 license +@csstools/postcss-unset-value under the MIT-0 license +@csstools/selector-specificity under the MIT-0 license +@emotion/hash under the MIT license +@eslint-community/eslint-utils under the MIT license +@eslint-community/regexpp under the MIT license +@eslint/eslintrc under the MIT license +@eslint/js under the MIT license +@floating-ui/core under the MIT license +@floating-ui/dom under the MIT license +@floating-ui/react-dom under the MIT license +@graphql-typed-document-node/core under the MIT license +@humanwhocodes/config-array under the Apache-2.0 license +@humanwhocodes/module-importer under the Apache-2.0 license +@humanwhocodes/object-schema under the BSD-3-Clause license +@isaacs/cliui under the ISC license +@istanbuljs/load-nyc-config under the ISC license +@istanbuljs/schema under the MIT license +@jest/console under the MIT license +@jest/core under the MIT license +@jest/environment under the MIT license +@jest/expect under the MIT license +@jest/expect-utils under the MIT license +@jest/fake-timers under the MIT license +@jest/globals under the MIT license +@jest/reporters under the MIT license +@jest/schemas under the MIT license +@jest/source-map under the MIT license +@jest/test-result under the MIT license +@jest/test-sequencer under the MIT license +@jest/transform under the MIT license +@jest/types under the MIT license +@jridgewell/gen-mapping under the MIT license +@jridgewell/resolve-uri under the MIT license +@jridgewell/set-array under the MIT license +@jridgewell/source-map under the MIT license +@jridgewell/sourcemap-codec under the MIT license +@jridgewell/trace-mapping under the MIT license +@leichtgewicht/ip-codec under the MIT license +@material-ui/styles under the MIT license +@material-ui/system under the MIT license +@material-ui/types under the MIT license +@material-ui/utils under the MIT license +@nicolo-ribaudo/eslint-scope-5-internals under the MIT license +@nodelib/fs.scandir under the MIT license +@nodelib/fs.stat under the MIT license +@nodelib/fs.walk under the MIT license +@nolyfill/is-core-module under the MIT license +@pkgjs/parseargs under the MIT license +@pkgr/core under the MIT license +@pmmmwh/react-refresh-webpack-plugin under the MIT license +@radix-ui/number under the MIT license +@radix-ui/primitive under the MIT license +@radix-ui/react-accordion under the MIT license +@radix-ui/react-arrow under the MIT license +@radix-ui/react-collapsible under the MIT license +@radix-ui/react-collection under the MIT license +@radix-ui/react-compose-refs under the MIT license +@radix-ui/react-context under the MIT license +@radix-ui/react-direction under the MIT license +@radix-ui/react-dismissable-layer under the MIT license +@radix-ui/react-dropdown-menu under the MIT license +@radix-ui/react-focus-guards under the MIT license +@radix-ui/react-focus-scope under the MIT license +@radix-ui/react-id under the MIT license +@radix-ui/react-menu under the MIT license +@radix-ui/react-popper under the MIT license +@radix-ui/react-portal under the MIT license +@radix-ui/react-presence under the MIT license +@radix-ui/react-primitive under the MIT license +@radix-ui/react-roving-focus under the MIT license +@radix-ui/react-slider under the MIT license +@radix-ui/react-slot under the MIT license +@radix-ui/react-tabs under the MIT license +@radix-ui/react-use-callback-ref under the MIT license +@radix-ui/react-use-controllable-state under the MIT license +@radix-ui/react-use-escape-keydown under the MIT license +@radix-ui/react-use-layout-effect under the MIT license +@radix-ui/react-use-previous under the MIT license +@radix-ui/react-use-rect under the MIT license +@radix-ui/react-use-size under the MIT license +@radix-ui/rect under the MIT license +@remix-run/router under the MIT license +@rollup/plugin-babel under the MIT license +@rollup/plugin-node-resolve under the MIT license +@rollup/plugin-replace under the MIT license +@rollup/pluginutils under the MIT license +@rushstack/eslint-patch under the MIT license +@sinclair/typebox under the MIT license +@sinonjs/commons under the BSD-3-Clause license +@sinonjs/fake-timers under the BSD-3-Clause license +@smithy/types under the Apache-2.0 license +@smithy/util-hex-encoding under the Apache-2.0 license +@surma/rollup-plugin-off-main-thread under the Apache-2.0 license +@svgr/babel-plugin-add-jsx-attribute under the MIT license +@svgr/babel-plugin-remove-jsx-attribute under the MIT license +@svgr/babel-plugin-remove-jsx-empty-expression under the MIT license +@svgr/babel-plugin-replace-jsx-attribute-value under the MIT license +@svgr/babel-plugin-svg-dynamic-title under the MIT license +@svgr/babel-plugin-svg-em-dimensions under the MIT license +@svgr/babel-plugin-transform-react-native-svg under the MIT license +@svgr/babel-plugin-transform-svg-component under the MIT license +@svgr/babel-preset under the MIT license +@svgr/core under the MIT license +@svgr/hast-util-to-babel-ast under the MIT license +@svgr/plugin-jsx under the MIT license +@svgr/plugin-svgo under the MIT license +@svgr/webpack under the MIT license +@testing-library/dom under the MIT license +@testing-library/react-hooks under the MIT license +@tootallnate/once under the MIT license +@trysound/sax under the ISC license +@tsconfig/node10 under the MIT license +@tsconfig/node12 under the MIT license +@tsconfig/node14 under the MIT license +@tsconfig/node16 under the MIT license +@turf/boolean-clockwise under the MIT license +@turf/helpers under the MIT license +@turf/invariant under the MIT license +@types/aria-query under the MIT license +@types/babel__core under the MIT license +@types/babel__generator under the MIT license +@types/babel__template under the MIT license +@types/babel__traverse under the MIT license +@types/body-parser under the MIT license +@types/bonjour under the MIT license +@types/connect under the MIT license +@types/connect-history-api-fallback under the MIT license +@types/cookie under the MIT license +@types/eslint under the MIT license +@types/estree under the MIT license +@types/express under the MIT license +@types/express-serve-static-core under the MIT license +@types/graceful-fs under the MIT license +@types/hast under the MIT license +@types/history under the MIT license +@types/hoist-non-react-statics under the MIT license +@types/html-minifier-terser under the MIT license +@types/http-errors under the MIT license +@types/http-proxy under the MIT license +@types/istanbul-lib-coverage under the MIT license +@types/istanbul-lib-report under the MIT license +@types/istanbul-reports under the MIT license +@types/json-schema under the MIT license +@types/json5 under the MIT license +@types/lodash under the MIT license +@types/lodash.clonedeep under the MIT license +@types/mime under the MIT license +@types/node-fetch under the MIT license +@types/node-forge under the MIT license +@types/parse-json under the MIT license +@types/prettier under the MIT license +@types/prop-types under the MIT license +@types/q under the MIT license +@types/qs under the MIT license +@types/range-parser under the MIT license +@types/react-copy-to-clipboard under the MIT license +@types/react-router under the MIT license +@types/react-router-dom under the MIT license +@types/react-transition-group under the MIT license +@types/resolve under the MIT license +@types/retry under the MIT license +@types/semver under the MIT license +@types/send under the MIT license +@types/serve-index under the MIT license +@types/serve-static under the MIT license +@types/sockjs under the MIT license +@types/stack-utils under the MIT license +@types/trusted-types under the MIT license +@types/unist under the MIT license +@types/use-sync-external-store under the MIT license +@types/ws under the MIT license +@types/yargs under the MIT license +@types/yargs-parser under the MIT license +@typescript-eslint/experimental-utils under the MIT license +@typescript-eslint/parser under the BSD-2-Clause license +@typescript-eslint/scope-manager under the MIT license +@typescript-eslint/type-utils under the MIT license +@typescript-eslint/types under the MIT license +@typescript-eslint/typescript-estree under the BSD-2-Clause license +@typescript-eslint/utils under the MIT license +@typescript-eslint/visitor-keys under the MIT license +@ungap/structured-clone under the ISC license +@webassemblyjs/ast under the MIT license +@webassemblyjs/floating-point-hex-parser under the MIT license +@webassemblyjs/helper-api-error under the MIT license +@webassemblyjs/helper-buffer under the MIT license +@webassemblyjs/helper-numbers under the MIT license +@webassemblyjs/helper-wasm-bytecode under the MIT license +@webassemblyjs/helper-wasm-section under the MIT license +@webassemblyjs/ieee754 under the MIT license +@webassemblyjs/leb128 under the Apache-2.0 license +@webassemblyjs/utf8 under the MIT license +@webassemblyjs/wasm-edit under the MIT license +@webassemblyjs/wasm-gen under the MIT license +@webassemblyjs/wasm-opt under the MIT license +@webassemblyjs/wasm-parser under the MIT license +@webassemblyjs/wast-printer under the MIT license +@wry/caches under the MIT license +@wry/context under the MIT license +@wry/equality under the MIT license +@wry/trie under the MIT license +@xstate/react under the MIT license +@xtuc/ieee754 under the BSD-3-Clause license +@xtuc/long under the Apache-2.0 license +@yr/monotone-cubic-spline under the MIT license +abab under the BSD-3-Clause license +accepts under the MIT license +acorn under the MIT license +acorn-globals under the MIT license +acorn-import-attributes under the MIT license +acorn-jsx under the MIT license +acorn-walk under the MIT license +address under the MIT license +adjust-sourcemap-loader under the MIT license +agent-base under the MIT license +ajv under the MIT license +ajv-formats under the MIT license +ajv-keywords under the MIT license +amazon-cognito-identity-js under the Apache-2.0 license +ansi-escapes under the MIT license +ansi-html under the Apache-2.0 license +ansi-html-community under the Apache-2.0 license +ansi-regex under the MIT license +ansi-styles under the MIT license +any-promise under the MIT license +anymatch under the ISC license +apollo-utilities under the MIT license +aproba under the ISC license +are-we-there-yet under the ISC license +arg under the MIT license +argparse under the Python-2.0 license +aria-hidden under the MIT license +aria-query under the Apache-2.0 license +array-buffer-byte-length under the MIT license +array-flatten under the MIT license +array-includes under the MIT license +array-union under the MIT license +array.prototype.findlast under the MIT license +array.prototype.findlastindex under the MIT license +array.prototype.flat under the MIT license +array.prototype.flatmap under the MIT license +array.prototype.reduce under the MIT license +array.prototype.tosorted under the MIT license +arraybuffer.prototype.slice under the MIT license +asap under the MIT license +ast-types-flow under the MIT license +astral-regex under the MIT license +async under the MIT license +asynckit under the MIT license +at-least-node under the ISC license +autoprefixer under the MIT license +available-typed-arrays under the MIT license +aws-amplify under the Apache-2.0 license +aws-appsync-auth-link under the Apache-2.0 license +aws-appsync-subscription-link under the Apache-2.0 license +aws-cdk under the Apache-2.0 license +aws-cdk-lib under the Apache-2.0 license +axe-core under the MPL-2.0 license +axobject-query under the Apache-2.0 license +babel-jest under the MIT license +babel-loader under the MIT license +babel-plugin-istanbul under the BSD-3-Clause license +babel-plugin-jest-hoist under the MIT license +babel-plugin-macros under the MIT license +babel-plugin-named-asset-import under the MIT license +babel-plugin-polyfill-corejs2 under the MIT license +babel-plugin-polyfill-corejs3 under the MIT license +babel-plugin-polyfill-regenerator under the MIT license +babel-plugin-transform-react-remove-prop-types under the MIT license +babel-preset-current-node-syntax under the MIT license +babel-preset-jest under the MIT license +babel-preset-react-app under the MIT license +balanced-match under the MIT license +base-64 under the MIT license +base64-js under the MIT license +batch under the MIT license +bfj under the MIT license +big.js under the MIT license +binary-extensions under the MIT license +bluebird under the MIT license +body-parser under the MIT license +bonjour-service under the MIT license +boolbase under the ISC license +boto3 under the ISC license +botocore under the ISC license +bowser under the MIT license +brace-expansion under the MIT license +braces under the MIT license +browser-process-hrtime under the BSD-2-Clause license +browserslist under the MIT license +bs-logger under the MIT license +bser under the Apache-2.0 license +buffer under the MIT license +buffer-from under the MIT license +builtin-modules under the MIT license +bytes under the MIT license +call-bind under the MIT license +callsites under the MIT license +camel-case under the MIT license +camelcase under the MIT license +camelcase-css under the MIT license +camelcase-keys under the MIT license +caniuse-api under the MIT license +caniuse-lite under the CC-BY-4.0 license +capital-case under the MIT license +case under the (MIT OR GPL-3.0-or-later) license +case-sensitive-paths-webpack-plugin under the MIT license +cdk-nag under the Apache-2.0 license +certifi under the MPL-2.0 license +chalk under the MIT license +change-case under the MIT license +char-regex under the MIT license +character-entities under the MIT license +character-entities-legacy under the MIT license +character-reference-invalid under the MIT license +chardet under the MIT license +check-types under the MIT license +chokidar under the MIT license +chrome-trace-event under the MIT license +ci-info under the MIT license +cjs-module-lexer under the MIT license +clean-css under the MIT license +cliui under the ISC license +clsx under the MIT license +co under the MIT license +coa under the MIT license +code-point-at under the MIT license +collect-v8-coverage under the MIT license +color-convert under the MIT license +color-name under the MIT license +colord under the MIT license +colorette under the MIT license +combined-stream under the MIT license +comma-separated-tokens under the MIT license +commander under the MIT license +common-tags under the MIT license +commondir under the MIT license +compressible under the MIT license +compression under the MIT license +concat-map under the MIT license +confusing-browser-globals under the MIT license +connect-history-api-fallback under the MIT license +console-control-strings under the ISC license +constant-case under the MIT license +constructs under the Apache-2.0 license +content-disposition under the MIT license +content-type under the MIT license +convert-source-map under the MIT license +cookie under the MIT license +cookie-signature under the MIT license +copy-to-clipboard under the MIT license +core-js under the MIT license +core-js-compat under the MIT license +core-js-pure under the MIT license +core-util-is under the MIT license +cosmiconfig under the MIT license +create-jest under the MIT license +create-require under the MIT license +cross-env under the MIT license +cross-fetch under the MIT license +cross-spawn under the MIT license +crypto-js under the MIT license +crypto-random-string under the MIT license +css-blank-pseudo under the MIT-0 license +css-declaration-sorter under the ISC license +css-has-pseudo under the MIT-0 license +css-loader under the MIT license +css-minimizer-webpack-plugin under the MIT license +css-prefers-color-scheme under the MIT-0 license +css-select under the BSD-2-Clause license +css-select-base-adapter under the MIT license +css-tree under the MIT license +css-vendor under the MIT license +css-what under the BSD-2-Clause license +css.escape under the MIT license +cssdb under the MIT-0 license +cssesc under the MIT license +cssnano under the MIT license +cssnano-preset-default under the MIT license +cssnano-utils under the MIT license +csso under the MIT license +cssom under the MIT license +cssstyle under the MIT license +csstype under the MIT license +damerau-levenshtein under the BSD-2-Clause license +data-urls under the MIT license +data-view-buffer under the MIT license +data-view-byte-length under the MIT license +data-view-byte-offset under the MIT license +debug under the MIT license +decamelize under the MIT license +decimal.js under the MIT license +dedent under the MIT license +deep-diff under the MIT license +deep-equal under the MIT license +deep-is under the MIT license +deepmerge under the MIT license +default-gateway under the BSD-2-Clause license +define-data-property under the MIT license +define-lazy-prop under the MIT license +define-properties under the MIT license +delayed-stream under the MIT license +delegates under the MIT license +depd under the MIT license +dequal under the MIT license +destroy under the MIT license +detect-newline under the MIT license +detect-node under the MIT license +detect-node-es under the MIT license +detect-port-alt under the MIT license +didyoumean under the Apache-2.0 license +diff under the BSD-3-Clause license +diff-sequences under the MIT license +dijkstrajs under the MIT license +dir-glob under the MIT license +dlv under the MIT license +dns-packet under the MIT license +docker under the MIT license +doctrine under the Apache-2.0 license +dom-accessibility-api under the MIT license +dom-converter under the MIT license +dom-helpers under the MIT license +dom-serializer under the MIT license +domelementtype under the BSD-2-Clause license +domexception under the MIT license +domhandler under the BSD-2-Clause license +domutils under the BSD-2-Clause license +dot-case under the MIT license +dotenv under the BSD-2-Clause license +dotenv-expand under the BSD-2-Clause license +duplexer under the MIT license +eastasianwidth under the MIT license +ee-first under the MIT license +ejs under the Apache-2.0 license +electron-to-chromium under the ISC license +emittery under the MIT license +emoji-regex under the MIT license +emojis-list under the MIT license +encode-utf8 under the MIT license +encodeurl under the MIT license +enhanced-resolve under the MIT license +entities under the BSD-2-Clause license +env-cmd under the MIT license +error-ex under the MIT license +error-stack-parser under the MIT license +es-abstract under the MIT license +es-array-method-boxes-properly under the MIT license +es-define-property under the MIT license +es-errors under the MIT license +es-get-iterator under the MIT license +es-iterator-helpers under the MIT license +es-module-lexer under the MIT license +es-object-atoms under the MIT license +es-set-tostringtag under the MIT license +es-shim-unscopables under the MIT license +es-to-primitive under the MIT license +escalade under the MIT license +escape-html under the MIT license +escape-string-regexp under the MIT license +escodegen under the BSD-2-Clause license +eslint-config-react under the MIT license +eslint-config-react-app under the MIT license +eslint-config-standard under the MIT license +eslint-import-resolver-typescript under the ISC license +eslint-module-utils under the MIT license +eslint-plugin-es under the MIT license +eslint-plugin-flowtype under the BSD-3-Clause license +eslint-plugin-jest under the MIT license +eslint-plugin-jsx-a11y under the MIT license +eslint-plugin-node under the MIT license +eslint-plugin-promise under the ISC license +eslint-plugin-react under the MIT license +eslint-plugin-react-hooks under the MIT license +eslint-plugin-testing-library under the MIT license +eslint-scope under the BSD-2-Clause license +eslint-utils under the MIT license +eslint-visitor-keys under the Apache-2.0 license +eslint-webpack-plugin under the MIT license +espree under the BSD-2-Clause license +esprima under the BSD-2-Clause license +esquery under the BSD-3-Clause license +esrecurse under the BSD-2-Clause license +estraverse under the BSD-2-Clause license +estree-walker under the MIT license +esutils under the BSD-2-Clause license +etag under the MIT license +eventemitter3 under the MIT license +events under the MIT license +execa under the MIT license +expect under the MIT license +express under the MIT license +fast-deep-equal under the MIT license +fast-diff under the Apache-2.0 license +fast-glob under the MIT license +fast-json-stable-stringify under the MIT license +fast-levenshtein under the MIT license +fast-uri under the BSD-3-Clause license +fast-xml-parser under the MIT license +fastq under the ISC license +fault under the MIT license +faye-websocket under the Apache-2.0 license +fb-watchman under the Apache-2.0 license +fflate under the MIT license +file-entry-cache under the MIT license +file-loader under the MIT license +filelist under the Apache-2.0 license +filesize under the BSD-3-Clause license +fill-range under the MIT license +finalhandler under the MIT license +find-cache-dir under the MIT license +find-up under the MIT license +flat-cache under the MIT license +flatted under the ISC license +follow-redirects under the MIT license +for-each under the MIT license +foreground-child under the ISC license +fork-ts-checker-webpack-plugin under the MIT license +form-data under the MIT license +forwarded under the MIT license +fraction.js under the MIT license +fresh under the MIT license +fs-extra under the MIT license +fs-monkey under the Unlicense license +fs.realpath under the ISC license +fsevents under the MIT license +function-bind under the MIT license +function.prototype.name under the MIT license +functions-have-names under the MIT license +gauge under the ISC license +gensync under the MIT license +get-caller-file under the ISC license +get-intrinsic under the MIT license +get-nonce under the MIT license +get-own-enumerable-property-symbols under the ISC license +get-package-type under the MIT license +get-stream under the MIT license +get-symbol-description under the MIT license +get-tsconfig under the MIT license +glob under the ISC license +glob-parent under the ISC license +glob-to-regexp under the BSD-2-Clause license +global-modules under the MIT license +global-prefix under the MIT license +globals under the MIT license +globalthis under the MIT license +globby under the MIT license +gopd under the MIT license +graceful-fs under the ISC license +graphemer under the MIT license +graphql under the MIT license +gzip-size under the MIT license +handle-thing under the MIT license +harmony-reflect under the (Apache-2.0 OR MPL-1.1) license +has-bigints under the MIT license +has-flag under the MIT license +has-property-descriptors under the MIT license +has-proto under the MIT license +has-symbols under the MIT license +has-tostringtag under the MIT license +has-unicode under the ISC license +hasown under the MIT license +hast-util-parse-selector under the MIT license +hastscript under the MIT license +he under the MIT license +header-case under the MIT license +highlight.js under the BSD-3-Clause license +hoist-non-react-statics under the BSD-3-Clause license +hoopy under the MIT license +hpack.js under the MIT license +html-encoding-sniffer under the MIT license +html-entities under the MIT license +html-escaper under the MIT license +html-minifier-terser under the MIT license +html-parse-stringify under the MIT license +html-webpack-plugin under the MIT license +htmlparser2 under the MIT license +http-deceiver under the MIT license +http-errors under the MIT license +http-parser-js under the MIT license +http-proxy under the MIT license +http-proxy-agent under the MIT license +http-proxy-middleware under the MIT license +https-proxy-agent under the MIT license +human-signals under the Apache-2.0 license +hyphenate-style-name under the BSD-3-Clause license +iconv-lite under the MIT license +icss-utils under the ISC license +idb under the ISC license +identity-obj-proxy under the MIT license +idna under the MIT license +ieee754 under the BSD-3-Clause license +ignore under the MIT license +immer under the MIT license +immutable under the MIT license +import-fresh under the MIT license +import-local under the MIT license +imurmurhash under the MIT license +indent-string under the MIT license +inflight under the ISC license +inherits under the ISC license +ini under the ISC license +internal-slot under the MIT license +invariant under the MIT license +ipaddr.js under the MIT license +is-alphabetical under the MIT license +is-alphanumerical under the MIT license +is-arguments under the MIT license +is-array-buffer under the MIT license +is-arrayish under the MIT license +is-async-function under the MIT license +is-bigint under the MIT license +is-binary-path under the MIT license +is-boolean-object under the MIT license +is-bun-module under the MIT license +is-callable under the MIT license +is-core-module under the MIT license +is-data-view under the MIT license +is-date-object under the MIT license +is-decimal under the MIT license +is-docker under the MIT license +is-extglob under the MIT license +is-finalizationregistry under the MIT license +is-fullwidth-code-point under the MIT license +is-generator-fn under the MIT license +is-generator-function under the MIT license +is-glob under the MIT license +is-hexadecimal under the MIT license +is-in-browser under the MIT license +is-map under the MIT license +is-module under the MIT license +is-negative-zero under the MIT license +is-number under the MIT license +is-number-object under the MIT license +is-obj under the MIT license +is-path-inside under the MIT license +is-plain-obj under the MIT license +is-potential-custom-element-name under the MIT license +is-regex under the MIT license +is-regexp under the MIT license +is-root under the MIT license +is-set under the MIT license +is-shared-array-buffer under the MIT license +is-stream under the MIT license +is-string under the MIT license +is-symbol under the MIT license +is-typed-array under the MIT license +is-typedarray under the MIT license +is-weakmap under the MIT license +is-weakref under the MIT license +is-weakset under the MIT license +is-wsl under the MIT license +isarray under the MIT license +isexe under the ISC license +isomorphic-unfetch under the MIT license +istanbul-lib-coverage under the BSD-3-Clause license +istanbul-lib-instrument under the BSD-3-Clause license +istanbul-lib-report under the BSD-3-Clause license +istanbul-lib-source-maps under the BSD-3-Clause license +istanbul-reports under the BSD-3-Clause license +iterator.prototype under the MIT license +jackspeak under the BlueOak-1.0.0 license +jake under the Apache-2.0 license +jest under the MIT license +jest-changed-files under the MIT license +jest-circus under the MIT license +jest-cli under the MIT license +jest-config under the MIT license +jest-diff under the MIT license +jest-docblock under the MIT license +jest-each under the MIT license +jest-environment-jsdom under the MIT license +jest-environment-node under the MIT license +jest-get-type under the MIT license +jest-haste-map under the MIT license +jest-jasmine2 under the MIT license +jest-leak-detector under the MIT license +jest-matcher-utils under the MIT license +jest-message-util under the MIT license +jest-mock under the MIT license +jest-pnp-resolver under the MIT license +jest-regex-util under the MIT license +jest-resolve under the MIT license +jest-resolve-dependencies under the MIT license +jest-runner under the MIT license +jest-runtime under the MIT license +jest-serializer under the MIT license +jest-snapshot under the MIT license +jest-util under the MIT license +jest-validate under the MIT license +jest-watch-typeahead under the MIT license +jest-watcher under the MIT license +jest-worker under the MIT license +jiti under the MIT license +js-cookie under the MIT license +js-json-schema-inferrer under the ISC license +js-tokens under the MIT license +js-yaml under the MIT license +jsdom under the MIT license +jsesc under the MIT license +json-buffer under the MIT license +json-parse-even-better-errors under the MIT license +json-schema under the (AFL-2.1 OR BSD-3-Clause) license +json-schema-traverse under the MIT license +json-stable-stringify-without-jsonify under the MIT license +json5 under the MIT license +jsonc-parser under the MIT license +jsonfile under the MIT license +jsonpath under the MIT license +jsonpointer under the MIT license +jsonschema under the MIT license +jss under the MIT license +jss-plugin-camel-case under the MIT license +jss-plugin-default-unit under the MIT license +jss-plugin-global under the MIT license +jss-plugin-nested under the MIT license +jss-plugin-props-sort under the MIT license +jss-plugin-rule-value-function under the MIT license +jss-plugin-vendor-prefixer under the MIT license +jsx-ast-utils under the MIT license +jwt-decode under the MIT license +keyv under the MIT license +kind-of under the MIT license +kleur under the MIT license +klona under the MIT license +language-subtag-registry under the CC0-1.0 license +language-tags under the MIT license +launch-editor under the MIT license +leven under the MIT license +levn under the MIT license +lilconfig under the MIT license +lines-and-columns under the MIT license +loader-runner under the MIT license +loader-utils under the MIT license +locate-path under the MIT license +lodash under the MIT license +lodash.debounce under the MIT license +lodash.isplainobject under the MIT license +lodash.memoize under the MIT license +lodash.merge under the MIT license +lodash.sortby under the MIT license +lodash.truncate under the MIT license +lodash.uniq under the MIT license +loose-envify under the MIT license +lower-case under the MIT license +lowlight under the MIT license +lru-cache under the ISC license +lz-string under the MIT license +magic-string under the MIT license +make-dir under the MIT license +make-error under the ISC license +makeerror under the BSD-3-Clause license +map-obj under the MIT license +mdn-data under the CC0-1.0 license +media-typer under the MIT license +memfs under the Apache-2.0 license +merge-descriptors under the MIT license +merge-stream under the MIT license +merge2 under the MIT license +methods under the MIT license +micromatch under the MIT license +mime under the MIT license +mime-db under the MIT license +mime-types under the MIT license +mimic-fn under the MIT license +min-indent under the MIT license +mini-css-extract-plugin under the MIT license +minimalistic-assert under the ISC license +minimatch under the ISC license +minimist under the MIT license +minipass under the ISC license +mkdirp under the MIT license +moto under the MIT license +ms under the MIT license +multicast-dns under the MIT license +mz under the MIT license +nanoid under the MIT license +natural-compare under the MIT license +natural-compare-lite under the MIT license +negotiator under the MIT license +neo-async under the MIT license +no-case under the MIT license +node-fetch under the MIT license +node-forge under the (BSD-3-Clause OR GPL-2.0) license +node-int64 under the MIT license +node-releases under the MIT license +normalize-path under the MIT license +normalize-range under the MIT license +normalize-url under the MIT license +npm-run-path under the MIT license +npmlog under the ISC license +nth-check under the BSD-2-Clause license +number-is-nan under the MIT license +numpy under the MIT license +nwsapi under the MIT license +object-assign under the MIT license +object-hash under the MIT license +object-inspect under the MIT license +object-is under the MIT license +object-keys under the MIT license +object.assign under the MIT license +object.entries under the MIT license +object.fromentries under the MIT license +object.getownpropertydescriptors under the MIT license +object.groupby under the MIT license +object.values under the MIT license +obuf under the MIT license +oidc-client-ts under the Apache-2.0 license +on-finished under the MIT license +on-headers under the MIT license +once under the ISC license +onetime under the MIT license +open under the MIT license +optimism under the MIT license +optionator under the MIT license +p-limit under the MIT license +p-locate under the MIT license +p-retry under the MIT license +p-try under the MIT license +package-json-from-dist under the BlueOak-1.0.0 license +pako under the (MIT AND Zlib) license +param-case under the MIT license +parent-module under the MIT license +parse-entities under the MIT license +parse-json under the MIT license +parse5 under the MIT license +parseurl under the MIT license +pascal-case under the MIT license +path-case under the MIT license +path-exists under the MIT license +path-is-absolute under the MIT license +path-key under the MIT license +path-parse under the MIT license +path-scurry under the BlueOak-1.0.0 license +path-to-regexp under the MIT license +path-type under the MIT license +performance-now under the MIT license +picocolors under the ISC license +picomatch under the MIT license +pify under the MIT license +pirates under the MIT license +pkg-dir under the MIT license +pkg-up under the MIT license +pngjs under the MIT license +popper.js under the MIT license +possible-typed-array-names under the MIT license +postcss under the MIT license +postcss-attribute-case-insensitive under the MIT license +postcss-browser-comments under the MIT-0 license +postcss-calc under the MIT license +postcss-clamp under the MIT license +postcss-color-functional-notation under the MIT-0 license +postcss-color-hex-alpha under the MIT license +postcss-color-rebeccapurple under the MIT-0 license +postcss-colormin under the MIT license +postcss-convert-values under the MIT license +postcss-custom-media under the MIT license +postcss-custom-properties under the MIT license +postcss-custom-selectors under the MIT license +postcss-dir-pseudo-class under the MIT-0 license +postcss-discard-comments under the MIT license +postcss-discard-duplicates under the MIT license +postcss-discard-empty under the MIT license +postcss-discard-overridden under the MIT license +postcss-double-position-gradients under the MIT-0 license +postcss-env-function under the MIT-0 license +postcss-flexbugs-fixes under the MIT license +postcss-focus-visible under the MIT-0 license +postcss-focus-within under the MIT-0 license +postcss-font-variant under the MIT license +postcss-gap-properties under the MIT-0 license +postcss-image-set-function under the MIT-0 license +postcss-import under the MIT license +postcss-initial under the MIT license +postcss-js under the MIT license +postcss-lab-function under the MIT-0 license +postcss-load-config under the MIT license +postcss-loader under the MIT license +postcss-logical under the MIT-0 license +postcss-media-minmax under the MIT license +postcss-merge-longhand under the MIT license +postcss-merge-rules under the MIT license +postcss-minify-font-values under the MIT license +postcss-minify-gradients under the MIT license +postcss-minify-params under the MIT license +postcss-minify-selectors under the MIT license +postcss-modules-extract-imports under the ISC license +postcss-modules-local-by-default under the MIT license +postcss-modules-scope under the ISC license +postcss-modules-values under the ISC license +postcss-nested under the MIT license +postcss-nesting under the MIT-0 license +postcss-normalize under the CC0-1.0 license +postcss-normalize-charset under the MIT license +postcss-normalize-display-values under the MIT license +postcss-normalize-positions under the MIT license +postcss-normalize-repeat-style under the MIT license +postcss-normalize-string under the MIT license +postcss-normalize-timing-functions under the MIT license +postcss-normalize-unicode under the MIT license +postcss-normalize-url under the MIT license +postcss-normalize-whitespace under the MIT license +postcss-opacity-percentage under the MIT license +postcss-ordered-values under the MIT license +postcss-overflow-shorthand under the MIT-0 license +postcss-page-break under the MIT license +postcss-place under the MIT-0 license +postcss-preset-env under the MIT-0 license +postcss-pseudo-class-any-link under the MIT-0 license +postcss-reduce-initial under the MIT license +postcss-reduce-transforms under the MIT license +postcss-replace-overflow-wrap under the MIT license +postcss-selector-not under the MIT license +postcss-selector-parser under the MIT license +postcss-svgo under the MIT license +postcss-unique-selectors under the MIT license +postcss-value-parser under the MIT license +prelude-ls under the MIT license +prettier under the MIT license +prettier-linter-helpers under the MIT license +pretty-bytes under the MIT license +pretty-error under the MIT license +pretty-format under the MIT license +prettytable under the MIT license +prismjs under the MIT license +process-nextick-args under the MIT license +promise under the MIT license +prompts under the MIT license +prop-types under the MIT license +property-information under the MIT license +proxy-addr under the MIT license +proxy-from-env under the MIT license +psl under the MIT license +punycode under the MIT license +pure-rand under the MIT license +q under the MIT license +qrcode under the MIT license +qs under the BSD-3-Clause license +querystring under the MIT license +querystringify under the MIT license +queue-microtask under the MIT license +quick-lru under the MIT license +raf under the MIT license +randombytes under the MIT license +range-parser under the MIT license +raw-body under the MIT license +react-app-polyfill under the MIT license +react-dev-utils under the MIT license +react-error-boundary under the MIT license +react-error-overlay under the MIT license +react-generate-context under the MIT license +react-is under the MIT license +react-native-url-polyfill under the MIT license +react-refresh under the MIT license +react-remove-scroll under the MIT license +react-remove-scroll-bar under the MIT license +react-router under the MIT license +react-scripts under the MIT license +react-style-singleton under the MIT license +react-transition-group under the BSD-3-Clause license +read-cache under the MIT license +readable-stream under the MIT license +readdirp under the MIT license +recursive-readdir under the MIT license +redent under the MIT license +redux-thunk under the MIT license +reflect.getprototypeof under the MIT license +refractor under the MIT license +regenerate under the MIT license +regenerate-unicode-properties under the MIT license +regenerator-runtime under the MIT license +regenerator-transform under the MIT license +regex-parser under the MIT license +regexp.prototype.flags under the MIT license +regexpp under the MIT license +regexpu-core under the MIT license +regjsparser under the BSD-2-Clause license +rehackt under the MIT license +relateurl under the MIT license +renderkid under the MIT license +requests under the MIT license +require-directory under the MIT license +require-from-string under the MIT license +require-main-filename under the ISC license +requires-port under the MIT license +reselect under the MIT license +resolve under the MIT license +resolve-cwd under the MIT license +resolve-from under the MIT license +resolve-pkg-maps under the MIT license +resolve-url-loader under the MIT license +resolve.exports under the MIT license +response-iterator under the MIT license +retry under the MIT license +reusify under the MIT license +rimraf under the ISC license +rollup under the MIT license +rollup-plugin-terser under the MIT license +run-parallel under the MIT license +s3transfer under the ISC license +safe-array-concat under the MIT license +safe-buffer under the MIT license +safe-regex-test under the MIT license +safer-buffer under the MIT license +sanitize.css under the CC0-1.0 license +sass under the MIT license +sass-loader under the MIT license +sax under the ISC license +saxes under the ISC license +scheduler under the MIT license +schema-utils under the MIT license +select-hose under the MIT license +selfsigned under the MIT license +semver under the ISC license +send under the MIT license +sentence-case under the MIT license +serialize-javascript under the BSD-3-Clause license +serve-index under the MIT license +serve-static under the MIT license +set-blocking under the ISC license +set-function-length under the MIT license +set-function-name under the MIT license +setprototypeof under the ISC license +setuptools under the ISC license +shebang-command under the MIT license +shebang-regex under the MIT license +shell-quote under the MIT license +side-channel under the MIT license +signal-exit under the ISC license +sisteransi under the MIT license +slash under the MIT license +slice-ansi under the MIT license +snake-case under the MIT license +sockjs under the MIT license +source-list-map under the MIT license +source-map under the BSD-3-Clause license +source-map-js under the BSD-3-Clause license +source-map-loader under the MIT license +sourcemap-codec under the MIT license +space-separated-tokens under the MIT license +spdy under the MIT license +spdy-transport under the MIT license +sprintf-js under the BSD-3-Clause license +stable under the MIT license +stack-utils under the MIT license +stackframe under the MIT license +static-eval under the MIT license +statuses under the MIT license +stop-iteration-iterator under the MIT license +string-length under the MIT license +string-natural-compare under the MIT license +string-width under the MIT license +string.prototype.includes under the MIT license +string.prototype.matchall under the MIT license +string.prototype.repeat under the MIT license +string.prototype.trim under the MIT license +string.prototype.trimend under the MIT license +string.prototype.trimstart under the MIT license +string_decoder under the MIT license +stringify-object under the BSD-2-Clause license +strip-ansi under the MIT license +strip-bom under the MIT license +strip-comments under the MIT license +strip-final-newline under the MIT license +strip-indent under the MIT license +strip-json-comments under the MIT license +strnum under the MIT license +style-dictionary under the Apache-2.0 license +style-loader under the MIT license +stylehacks under the MIT license +sucrase under the MIT license +supports-color under the MIT license +supports-hyperlinks under the MIT license +supports-preserve-symlinks-flag under the MIT license +svg-parser under the MIT license +svg.draggable.js under the MIT license +svg.easing.js under the MIT license +svg.filter.js under the MIT license +svg.js under the MIT license +svg.pathmorphing.js under the MIT license +svg.resize.js under the MIT license +svg.select.js under the MIT license +svgo under the MIT license +symbol-observable under the MIT license +symbol-tree under the MIT license +synckit under the MIT license +table under the BSD-3-Clause license +tailwindcss under the MIT license +tapable under the MIT license +temp-dir under the MIT license +tempy under the MIT license +terminal-link under the MIT license +terser under the BSD-2-Clause license +terser-webpack-plugin under the MIT license +test-exclude under the ISC license +text-table under the MIT license +thenify under the MIT license +thenify-all under the MIT license +throat under the MIT license +thunky under the MIT license +tiny-warning under the MIT license +tinycolor2 under the MIT license +tmpl under the BSD-3-Clause license +to-fast-properties under the MIT license +to-regex-range under the MIT license +toggle-selection under the MIT license +toidentifier under the MIT license +tough-cookie under the BSD-3-Clause license +tr46 under the MIT license +tryer under the MIT license +ts-api-utils under the MIT license +ts-interface-checker under the Apache-2.0 license +ts-invariant under the MIT license +ts-jest under the MIT license +ts-node under the MIT license +tsconfig-paths under the MIT license +tslib under the 0BSD license +tsutils under the MIT license +type-check under the MIT license +type-detect under the MIT license +type-fest under the (MIT OR CC0-1.0) license +type-is under the MIT license +typed-array-buffer under the MIT license +typed-array-byte-length under the MIT license +typed-array-byte-offset under the MIT license +typed-array-length under the MIT license +typedarray-to-buffer under the MIT license +typescript under the Apache-2.0 license +ulid under the MIT license +unbox-primitive under the MIT license +underscore under the MIT license +undici-types under the MIT license +unfetch under the MIT license +unicode-canonical-property-names-ecmascript under the MIT license +unicode-match-property-ecmascript under the MIT license +unicode-match-property-value-ecmascript under the MIT license +unicode-property-aliases-ecmascript under the MIT license +unique-string under the MIT license +universal-cookie under the MIT license +universalify under the MIT license +unpipe under the MIT license +unquote under the MIT license +upath under the MIT license +update-browserslist-db under the MIT license +upper-case under the MIT license +upper-case-first under the MIT license +uri-js under the BSD-2-Clause license +url under the MIT license +url-parse under the MIT license +use-callback-ref under the MIT license +use-isomorphic-layout-effect under the MIT license +use-sidecar under the MIT license +use-sync-external-store under the MIT license +util-deprecate under the MIT license +util.promisify under the MIT license +utila under the MIT license +utils-merge under the MIT license +uuid under the MIT license +v8-compile-cache-lib under the MIT license +v8-to-istanbul under the ISC license +vary under the MIT license +void-elements under the MIT license +w3c-hr-time under the MIT license +w3c-xmlserializer under the MIT license +walker under the Apache-2.0 license +watchpack under the MIT license +wbuf under the MIT license +wcwidth under the MIT license +web-vitals under the Apache-2.0 license +webidl-conversions under the BSD-2-Clause license +webpack under the MIT license +webpack-dev-middleware under the MIT license +webpack-dev-server under the MIT license +webpack-manifest-plugin under the MIT license +webpack-sources under the MIT license +websocket-driver under the Apache-2.0 license +websocket-extensions under the Apache-2.0 license +whatwg-encoding under the MIT license +whatwg-fetch under the MIT license +whatwg-mimetype under the MIT license +whatwg-url under the MIT license +whatwg-url-without-unicode under the MIT license +which under the ISC license +which-boxed-primitive under the MIT license +which-builtin-type under the MIT license +which-collection under the MIT license +which-module under the ISC license +which-typed-array under the MIT license +wide-align under the ISC license +word-wrap under the MIT license +workbox-background-sync under the MIT license +workbox-broadcast-update under the MIT license +workbox-build under the MIT license +workbox-cacheable-response under the MIT license +workbox-core under the MIT license +workbox-expiration under the MIT license +workbox-google-analytics under the MIT license +workbox-navigation-preload under the MIT license +workbox-precaching under the MIT license +workbox-range-requests under the MIT license +workbox-recipes under the MIT license +workbox-routing under the MIT license +workbox-strategies under the MIT license +workbox-streams under the MIT license +workbox-sw under the MIT license +workbox-webpack-plugin under the MIT license +workbox-window under the MIT license +wrap-ansi under the MIT license +wrappy under the ISC license +write-file-atomic under the ISC license +ws under the MIT license +xml-name-validator under the Apache-2.0 license +xmlchars under the MIT license +xstate under the MIT license +xtend under the MIT license +y18n under the ISC license +yallist under the BlueOak-1.0.0 license +yaml under the ISC license +yargs under the MIT license +yargs-parser under the ISC license +yn under the MIT license +yocto-queue under the MIT license +zen-observable under the MIT license +zen-observable-ts under the MIT license +zen-push under the MIT license + + +******************** +OPEN SOURCE LICENSES +******************** + +0BSD - https://opensource.org/licenses/0BSD +Apache-2.0 - https://opensource.org/licenses/Apache-2.0 +BSD-2-Clause - https://opensource.org/licenses/BSD-2-Clause +BSD-3-Clause - https://opensource.org/licenses/BSD-3-Clause +BlueOak-1.0.0 - https://opensource.org/licenses/BlueOak-1.0.0 +CC-BY-4.0 - https://opensource.org/licenses/CC-BY-4.0 +CC0-1.0 - https://opensource.org/licenses/CC0-1.0 +ISC - https://opensource.org/licenses/ISC +MIT - https://opensource.org/licenses/MIT +MIT-0 - https://opensource.org/licenses/MIT-0 +MPL-2.0 - https://opensource.org/licenses/MPL-2.0 +Python-2.0 - https://opensource.org/licenses/Python-2.0 +Unlicense - https://opensource.org/licenses/Unlicense +LGPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html +LGPL-2.1-only - https://spdx.org/licenses/LGPL-2.1-only.html +Zlib - https://spdx.org/licenses/Zlib.html \ No newline at end of file diff --git a/README.md b/README.md index 3ac2fcc9..7e31f164 100755 --- a/README.md +++ b/README.md @@ -26,9 +26,9 @@ The solution has the following features: ## Architecture -Deploying this solution with the default parameters builds the following environment in the AWS Cloud. +Deploying this solution with the default parameters builds the following environment in the AWS Cloud. For more details about the architecture description, please refer to [architecture overview](https://docs.aws.amazon.com/solutions/latest/centralized-logging-with-opensearch/architecture-overview.html), and [architecture details](https://docs.aws.amazon.com/solutions/latest/centralized-logging-with-opensearch/architecture-details.html). -![Architecture](docs/images/architecture/arch.png) +![Architecture](arch.png) ## Deployment diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..a2f0f882 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,3 @@ +## 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. \ No newline at end of file diff --git a/deployment/build-s3-dist.sh b/deployment/build-s3-dist.sh index a30660c3..f7415ecd 100755 --- a/deployment/build-s3-dist.sh +++ b/deployment/build-s3-dist.sh @@ -226,6 +226,7 @@ staging_dist_dir="$template_dir/staging" template_dist_dir="$template_dir/global-s3-assets" build_dist_dir="$template_dir/regional-s3-assets" source_dir="$template_dir/../source" +s3_list_objects_dir="$template_dir/../deployment/ecr/clo-s3-list-objects" echo "------------------------------------------------------------------------------" echo "${bold}[Init] Remove any old dist files from previous runs${normal}" @@ -370,3 +371,7 @@ cleanup_temporary_generted_files # Return to original directory from when we started the build cd $template_dir + +# build ecr +echo "Run s3_list_objects_dir/build.sh" +t do_cmd $s3_list_objects_dir/build.sh diff --git a/source/constructs/ecr/syslog/Dockerfile b/deployment/ecr/clo-logging-syslog/Dockerfile similarity index 79% rename from source/constructs/ecr/syslog/Dockerfile rename to deployment/ecr/clo-logging-syslog/Dockerfile index a2df35cd..f7ece388 100644 --- a/source/constructs/ecr/syslog/Dockerfile +++ b/deployment/ecr/clo-logging-syslog/Dockerfile @@ -1,4 +1,4 @@ -FROM public.ecr.aws/aws-observability/aws-for-fluent-bit:2.31.12 +FROM public.ecr.aws/aws-observability/aws-for-fluent-bit:2.32.2.20241008 RUN yum update -y && yum install -y unzip diff --git a/source/constructs/ecr/syslog/docker-entrypoint.sh b/deployment/ecr/clo-logging-syslog/docker-entrypoint.sh similarity index 100% rename from source/constructs/ecr/syslog/docker-entrypoint.sh rename to deployment/ecr/clo-logging-syslog/docker-entrypoint.sh diff --git a/source/constructs/ecr/s3-list-objects/.dockerignore b/deployment/ecr/clo-s3-list-objects/.dockerignore similarity index 100% rename from source/constructs/ecr/s3-list-objects/.dockerignore rename to deployment/ecr/clo-s3-list-objects/.dockerignore diff --git a/source/constructs/ecr/s3-list-objects/.gitignore b/deployment/ecr/clo-s3-list-objects/.gitignore similarity index 100% rename from source/constructs/ecr/s3-list-objects/.gitignore rename to deployment/ecr/clo-s3-list-objects/.gitignore diff --git a/source/constructs/ecr/s3-list-objects/Dockerfile b/deployment/ecr/clo-s3-list-objects/Dockerfile similarity index 60% rename from source/constructs/ecr/s3-list-objects/Dockerfile rename to deployment/ecr/clo-s3-list-objects/Dockerfile index 4f96634c..64e4203c 100644 --- a/source/constructs/ecr/s3-list-objects/Dockerfile +++ b/deployment/ecr/clo-s3-list-objects/Dockerfile @@ -1,4 +1,4 @@ -FROM public.ecr.aws/lambda/python:3.9 AS builder +FROM public.ecr.aws/lambda/python:3.11.2024.11.22.15 AS builder WORKDIR /build @@ -7,10 +7,12 @@ COPY common-lib . RUN python -m venv .venv && \ source .venv/bin/activate && \ pip install --upgrade build && \ + pip install --upgrade pip && \ + pip install setuptools==70.0.0 && \ python3 -m build -s -FROM public.ecr.aws/lambda/python:3.9 +FROM public.ecr.aws/lambda/python:3.11.2024.11.22.15 WORKDIR /ws @@ -18,6 +20,8 @@ COPY requirements.txt . COPY --from=builder /build/dist/commonlib-0.1.0.tar.gz . RUN pip install --no-cache-dir -r requirements.txt && \ + pip install --upgrade pip && \ + pip install setuptools==70.0.0 && \ pip install --no-cache-dir commonlib-0.1.0.tar.gz COPY . . diff --git a/source/constructs/ecr/s3-list-objects/build.sh b/deployment/ecr/clo-s3-list-objects/build.sh similarity index 51% rename from source/constructs/ecr/s3-list-objects/build.sh rename to deployment/ecr/clo-s3-list-objects/build.sh index 319ad682..3cca0b9b 100755 --- a/source/constructs/ecr/s3-list-objects/build.sh +++ b/deployment/ecr/clo-s3-list-objects/build.sh @@ -2,8 +2,6 @@ set -e __dir="$(cd "$(dirname $0)";pwd)" -COMMON_LIB_DIR=${__dir}/../../lambda/common-lib +COMMON_LIB_DIR=${__dir}/../../../source/constructs/lambda/common-lib cp -rf ${COMMON_LIB_DIR} ${__dir} - -docker build -t s3-list-objects ${__dir} diff --git a/deployment/ecr/clo-s3-list-objects/requirements.txt b/deployment/ecr/clo-s3-list-objects/requirements.txt new file mode 100644 index 00000000..0fd9ea47 --- /dev/null +++ b/deployment/ecr/clo-s3-list-objects/requirements.txt @@ -0,0 +1,2 @@ +boto3==1.26.111 +setuptools==70.0.0 \ No newline at end of file diff --git a/source/constructs/ecr/s3-list-objects/s3_list_objects.py b/deployment/ecr/clo-s3-list-objects/s3_list_objects.py similarity index 75% rename from source/constructs/ecr/s3-list-objects/s3_list_objects.py rename to deployment/ecr/clo-s3-list-objects/s3_list_objects.py index c657d57e..e198bb67 100755 --- a/source/constructs/ecr/s3-list-objects/s3_list_objects.py +++ b/deployment/ecr/clo-s3-list-objects/s3_list_objects.py @@ -20,7 +20,6 @@ BUCKET_NAME = os.environ["BUCKET_NAME"] KEY_PREFIX = os.environ.get("KEY_PREFIX", "") KEY_SUFFIX = os.environ.get("KEY_SUFFIX", "") -QUEUE_URL = os.environ["QUEUE_URL"] DRY_RUN = os.environ.get("DRY_RUN") BATCH_SIZE = 10 @@ -30,7 +29,7 @@ conn = AWSConnection() s3 = conn.get_client("s3") -sqs = conn.get_client("sqs") +events = conn.get_client("events") class Counter: @@ -145,29 +144,18 @@ def batch_iter(iterable, batch_size=10): yield b -def sqs_exception_handler(err): - logging.warning(err) - if err.response["Error"]["Code"] != "AWS.SimpleQueueService.NonExistentQueue": - raise err - - -@retry_with_backoff(ClientError, exception_handler=sqs_exception_handler, retries=5) -def send_message_batch(iterable, queue_url): - entries = [ - {"Id": str(index), "MessageBody": json.dumps(each)} - for index, each in enumerate(iterable) - ] - res = sqs.send_message_batch(QueueUrl=queue_url, Entries=entries) - - if "Failed" in res: - for failed in res["Failed"]: +@retry_with_backoff(ClientError, retries=5) +def send_message_batch(iterable): + res = events.put_events(Entries=list(iterable)) + if res.get("FailedEntryCount", 0) > 0: + for failed in res["Entries"]: FAILED_COUNTER.increment() logging.error( - f"Failed to send message: {failed['Message']}, error code: {failed['Code']}" + f"Failed to send message: {failed['ErrorMessage']}, error code: {failed['ErrorCode']}" ) -def send_message_batch_dry_run(iterable, _): +def send_message_batch_dry_run(iterable): for each in iterable: logging.info("Dry run sending messages: %s", each) @@ -176,26 +164,21 @@ def convert_to_s3_event_iter(iterable): for each in iterable: now = datetime.datetime.now() yield { - "Records": [ + "Time": now, + "Source": "clo.aws.s3", + "Resources": [f"arn:{AWS_PARTITION}:s3:::{BUCKET_NAME}"], + "DetailType": "Object Created", + "Detail": json.dumps( { - "eventVersion": "2.1", - "eventSource": "aws:s3", - "awsRegion": AWS_REGION, - "eventTime": now.isoformat(), - "eventName": "ObjectCreated:Put", - "s3": { - "s3SchemaVersion": "1.0", - "bucket": { - "name": BUCKET_NAME, - "arn": f"arn:{AWS_PARTITION}:s3:::{BUCKET_NAME}", - }, - "object": { - "key": each["Key"], - "size": each["Size"], - }, + "client": "clo-s3-list-objects", + "bucket": {"name": BUCKET_NAME}, + "object": { + "key": each["Key"], + "size": each["Size"], }, + "reason": "PutObject", } - ] + ), } @@ -235,9 +218,9 @@ def log_stats(): try: for batch in batch_iter(it, batch_size=BATCH_SIZE): if DRY_RUN: - send_message_batch_dry_run(batch, QUEUE_URL) + send_message_batch_dry_run(batch) else: - send_message_batch(batch, QUEUE_URL) + send_message_batch(batch) finally: t.stop() t.join(30) diff --git a/source/constructs/ecr/s3-list-objects/test/__init__.py b/deployment/ecr/clo-s3-list-objects/test/__init__.py similarity index 100% rename from source/constructs/ecr/s3-list-objects/test/__init__.py rename to deployment/ecr/clo-s3-list-objects/test/__init__.py diff --git a/source/constructs/ecr/s3-list-objects/test/conftest.py b/deployment/ecr/clo-s3-list-objects/test/conftest.py similarity index 94% rename from source/constructs/ecr/s3-list-objects/test/conftest.py rename to deployment/ecr/clo-s3-list-objects/test/conftest.py index 03de6932..13a42022 100644 --- a/source/constructs/ecr/s3-list-objects/test/conftest.py +++ b/deployment/ecr/clo-s3-list-objects/test/conftest.py @@ -13,6 +13,7 @@ def default_environment_variables(): os.environ["AWS_SECRET_ACCESS_KEY"] = "mocked-aws-secret-access-key" os.environ["AWS_SESSION_TOKEN"] = "mocked-aws-session-token" os.environ["AWS_REGION"] = "us-east-1" + os.environ["AWS_DEFAULT_REGION"] = "us-east-1" os.environ["SOLUTION_VERSION"] = "v1.0.0" os.environ["VERSION"] = "v1.0.0" os.environ["SOLUTION_ID"] = "SO8025" diff --git a/source/constructs/ecr/s3-list-objects/test/requirements-test.txt b/deployment/ecr/clo-s3-list-objects/test/requirements-test.txt similarity index 100% rename from source/constructs/ecr/s3-list-objects/test/requirements-test.txt rename to deployment/ecr/clo-s3-list-objects/test/requirements-test.txt diff --git a/source/constructs/ecr/s3-list-objects/test/test_s3_list_objects.py b/deployment/ecr/clo-s3-list-objects/test/test_s3_list_objects.py similarity index 77% rename from source/constructs/ecr/s3-list-objects/test/test_s3_list_objects.py rename to deployment/ecr/clo-s3-list-objects/test/test_s3_list_objects.py index 90224ec6..38c86e42 100644 --- a/source/constructs/ecr/s3-list-objects/test/test_s3_list_objects.py +++ b/deployment/ecr/clo-s3-list-objects/test/test_s3_list_objects.py @@ -5,7 +5,7 @@ import boto3 import pytest -from moto import mock_s3, mock_sqs +from moto import mock_s3, mock_events @pytest.fixture @@ -23,11 +23,10 @@ def s3_client(): @pytest.fixture -def sqs_client(): - with mock_sqs(): - sqs = boto3.client("sqs", region_name=os.environ.get("AWS_REGION")) - q = sqs.create_queue(QueueName=os.environ["QUEUE_NAME"]) - yield q +def evt_client(): + with mock_events(): + evt = boto3.client("events", region_name=os.environ.get("AWS_REGION")) + yield evt def test_list_objects(s3_client): @@ -72,17 +71,10 @@ def test_batch_iter(s3_client): assert lst == [] -def test_send_message_batch(sqs_client): - from s3_list_objects import send_message_batch +def test_send_message_batch(evt_client): + from s3_list_objects import send_message_batch, convert_to_s3_event_iter - send_message_batch(range(10), sqs_client["QueueUrl"]) - - sqs = boto3.client("sqs", region_name=os.environ.get("AWS_REGION")) - res = sqs.get_queue_attributes( - QueueUrl=sqs_client["QueueUrl"], AttributeNames=["ApproximateNumberOfMessages"] - ) - size = int(res["Attributes"]["ApproximateNumberOfMessages"]) - assert size == 10 + send_message_batch(convert_to_s3_event_iter([dict(Key="Key", Size="Size")])) def test_convert_to_s3_event_iter(): @@ -90,7 +82,8 @@ def test_convert_to_s3_event_iter(): lst = list(convert_to_s3_event_iter([dict(Key="Key", Size="Size")])) - assert lst[0]["Records"][0]["s3"]["object"] == dict(key="Key", size="Size") + assert lst[0]["Source"] == "clo.aws.s3" + assert f":s3:::{os.environ.get('BUCKET_NAME')}" in lst[0]["Resources"][0] def test_ticker(): diff --git a/docs/en/images b/docs/en/images deleted file mode 120000 index 5e675731..00000000 --- a/docs/en/images +++ /dev/null @@ -1 +0,0 @@ -../images \ No newline at end of file diff --git a/docs/en/implementation-guide/alarm.md b/docs/en/implementation-guide/alarm.md deleted file mode 100644 index 5deed572..00000000 --- a/docs/en/implementation-guide/alarm.md +++ /dev/null @@ -1,37 +0,0 @@ -There are different types of log alarms: log processor alarms, buffer layer alarms, and source alarms (only for application log pipeline). The alarms will be triggered when the defined condition is met. - -| Log alarm type | Log alarm condition | Description | -| -------------------------------------- | -------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Log processor alarms | Error invocation # >= 10 for 5 minutes, 1 consecutive time | When the number of log processor Lambda error calls is greater than or equal to 10 within 5 minutes (including 5 minutes), an email alarm will be triggered. | -| Log processor alarms | Failed record # >= 1 for 1 minute, 1 consecutive time | When the number of failed records is greater than or equal to 1 within a 1-minute window, an alarm will be triggered. | -| Log processor alarms | Average execution duration in last 5 minutes >= 60000 milliseconds | In the last 5 minutes, when the average execution time of log processor Lambda is greater than or equal to 60 seconds, an email alarm will be triggered. | -| Buffer layer alarms | SQS Oldest Message Age >= 30 minutes | When the age of the oldest SQS message is greater than or equal to 30 minutes, it means that the message has not been consumed for at least 30 minutes, an email alarm will be triggered. | -| Source alarms (only for application log pipeline) | Fluent Bit output_retried_record_total >= 100 for last 5 minutes | When the total number of retry records output by Fluent Bit in the past 5 minutes is greater than or equal to 100, an email alarm will be triggered. | - -You can choose to enable log alarms or disable them according to your needs. - -## Enable log alarms - -1. Sign in to the Centralized Logging with OpenSearch console. - -2. In the left navigation bar, under **Log Analytics Pipelines**, choose **AWS Service Log** or **Application Log**. - -3. Select the log pipeline created and choose **View details**. - -4. Select the **Alarm** tab. - -5. Switch on **Alarms** if needed and select an exiting SNS topic. - -6. If you choose **Create a new SNS topic**, you need to provide email address for the newly-created SNS topic to notify. - -## Disable log alarms - -1. Sign in to the Centralized Logging with OpenSearch console. - -2. In the left navigation bar, under **Log Analytics Pipelines**, choose **AWS Service Log** or **Application Log**. - -3. Select the log pipeline created and choose **View details**. - -4. Select the **Alarm** tab. - -5. Switch off **Alarms**. \ No newline at end of file diff --git a/docs/en/implementation-guide/applications/create-log-config.md b/docs/en/implementation-guide/applications/create-log-config.md deleted file mode 100644 index 50b64710..00000000 --- a/docs/en/implementation-guide/applications/create-log-config.md +++ /dev/null @@ -1,314 +0,0 @@ -# Log Config - -Centralized Logging with OpenSearch solution supports creating log configs for the following log formats: - -- [JSON](#create-a-json-config) -- [Apache](#create-an-apache-http-server-log-config) -- [Nginx](#create-an-nginx-log-config) -- [Syslog](#create-a-syslog-config) -- [Single-ine text](#create-a-single-line-text-config) -- [Multi-line text](#create-a-multi-line-text-config) - -For more information, refer to [supported log formats and log sources](./index.md#supported-log-formats-and-log-sources). - -The following describes how to create log config for each log format. - -## Create a JSON config - -1. Sign in to the Centralized Logging with OpenSearch Console. -2. In the left sidebar, under **Resources**, choose **Log Config**. -3. Choose **Create a log config**. -4. Specify **Config Name**. -6. Choose **JSON** in the log type dropdown list. -7. In the **Sample log parsing** section, paste a sample JSON log and click **Parse log** to verify if the log parsing is successful.JSON type support nested Json with a maximum nesting depth of X. - - - If your JSON log sample is nested JSON, choose Pase Log and it displays a list of field type options for each layer. If needed, you can set the corresponding field type for each layer of fields. If you choose Remove to delete a field. The field type will be automatically inferred by OpenSearch. - For Example: - ``` - {"timestamp": "2023-11-06T08:29:55.266Z", - "correlationId": "566829027325526589", - "processInfo": { - "startTime": "2023-11-06T08:29:55.266Z", - "hostname": "ltvtix0apidev01", - "domainId": "e6826d97-a60f-45cb-93e1-b4bb5a7add29", - "groupId": "group-2", - "groupName": "grp_dev_bba", - "serviceId": "instance-1", - "serviceName": "ins_dev_bba", - "version": "7.7.20210130" - }, - "transactionSummary": { - "path": "https://www.leadmission-critical.info/relationships", - "protocol": "https", - "protocolSrc": "97", - "status": "exception", - "serviceContexts": [ - { - "service": "NSC_APP-117127_DCTM_Get Documentum Token", - "monitor": true, - "client": "Pass Through", - "org": null, - "app": null, - "method": "getTokenUsingPOST", - "status": "exception", - "duration": 25270 - } - ] - } - } - ``` -8. Check if each fields type mapping is correct. You can change the type by selecting the dropdown menu in the second column. For all supported types, see [Data Types](https://opensearch.org/docs/latest/search-plugins/sql/datatypes/). - - !!! Note "Note" - - You must specify the datetime of the log using key “time”. If not specified, system time will be added. - - For nested JSON, the Time Key must be on the first level. - -9. Specify the **Time format**. The format syntax follows [strptime](https://linux.die.net/man/3/strptime). Check [this](https://docs.fluentbit.io/manual/pipeline/parsers/configuring-parser#time-resolution-and-fractional-seconds) for details. - -10. (Optional) In the **Filter** section, you add some conditions to filter logs at the log agent side. The solution will ingest logs that match ALL the specified conditions only. - -11. Select **Create**. - -## Create an Apache HTTP server log config - -Apache HTTP Server (httpd) is capable of writing error and access log files to a local directory. You can configure Centralized Logging with OpenSearch to ingest Apache HTTP server logs. - -1. Sign in to the Centralized Logging with OpenSearch Console. -2. In the left sidebar, under **Resources**, choose **Log Config**. -3. Click the **Create a log config** button. -4. Specify **Config Name**. -6. Choose **Apache HTTP server** in the log type dropdown menu. -7. In the **Apache Log Format** section, paste your Apache HTTP server log format configuration. It is in the format of `/etc/httpd/conf/httpd.conf` and starts with `LogFormat`. - - For example: - ``` - LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined - ``` - -8. (Optional) In the **Sample log parsing** section, paste a sample Apache HTTP server log to verify if the log parsing is successful. - - For example: - ``` - 127.0.0.1 - - [22/Dec/2021:06:48:57 +0000] "GET /xxx HTTP/1.1" 404 196 "-" "curl/7.79.1" - ``` - -9. Choose **Create**. - -## Create an Nginx log config - -1. Sign in to the Centralized Logging with OpenSearch Console. -2. In the left sidebar, under **Resources**, choose **Log Config**. -3. Click the **Create a log config** button. -4. Specify **Config Name**. -6. Choose **Nginx** in the log type dropdown menu. -7. In the **Nginx Log Format** section, paste your Nginx log format configuration. It is in the format of `/etc/nginx/nginx.conf` and starts with `log_format`. - - For example: - ``` - log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - '$status $body_bytes_sent "$http_referer" ' - '"$http_user_agent" "$http_x_forwarded_for"'; - ``` - -8. (Optional) In the **Sample log parsing** section, paste a sample Nginx log to verify if the log parsing is successful. - - For example: - ``` - 127.0.0.1 - - [24/Dec/2021:01:27:11 +0000] "GET / HTTP/1.1" 200 3520 "-" "curl/7.79.1" "-" - ``` - -9. (Optional) In the **Filter** section, you add some conditions to filter logs at the log agent side. The solution will ingest logs that match ALL the specified conditions only. - -10. Select **Create**. - -## Create a Syslog config - -1. Sign in to the Centralized Logging with OpenSearch Console. -2. In the left sidebar, under **Resources**, choose **Log Config**. -3. Click the **Create a log config** button. -4. Specify **Config Name**. -5. Choose **Syslog** in the log type dropdown menu. Note that Centralized Logging with OpenSearch also supports Syslog with JSON format and single-line text format. - -### RFC5424 -1. Paste a sample RFC5424 log. For example: - - ```log - <35>1 2013-10-11T22:14:15Z client_machine su - - - 'su root' failed for joe on /dev/pts/2 - ``` - -2. Choose **Parse Log**. - -3. Check if each fields type mapping is correct. You can change the type by selecting the dropdown menu in the second column. For all supported types, see [Data Types](https://opensearch.org/docs/latest/search-plugins/sql/datatypes/). - - !!! Note "Note" - You must specify the datetime of the log using key “time”. If not specified, system time will be added. - -4. Specify the **Time format**. The format syntax follows [strptime](https://linux.die.net/man/3/strptime). Check [this manual](https://docs.fluentbit.io/manual/pipeline/parsers/configuring-parser#time-resolution-and-fractional-seconds) for details. For example: - - ```log - %Y-%m-%dT%H:%M:%SZ - ``` - -5. (Optional) In the **Filter** section, you add some conditions to filter logs at the log agent side. The solution will ingest logs that match ALL the specified conditions only. - -6. Select **Create**. - -### RFC3164 -1. Paste a sample RFC3164 log. For example: - - ```log - <35>Oct 12 22:14:15 client_machine su: 'su root' failed for joe on /dev/pts/2 - ``` - -2. Choose **Parse Log**. - -3. Check if each fields type mapping is correct. You can change the type by selecting the dropdown menu in the second column. For all supported types, see [Data Types](https://opensearch.org/docs/latest/search-plugins/sql/datatypes/). - - !!! Note "Note" - You must specify the datetime of the log using key “time”. If not specified, system time will be added. - - Since there is no year in the timestamp of RFC3164, it cannot be displayed as a time histogram in the Discover interface of Amazon OpenSearch. - -4. Specify the **Time format**. The format syntax follows [strptime](https://linux.die.net/man/3/strptime). Check [this](https://docs.fluentbit.io/manual/pipeline/parsers/configuring-parser#time-resolution-and-fractional-seconds) for details. For example: - - ```log - %b %m %H:%M:%S - ``` - -5. (Optional) In the **Filter** section, you add some conditions to filter logs at the log agent side. The solution will ingest logs that match ALL the specified conditions only. - -6. Select **Create**. - -### Custom -1. In the **Syslog Format** section, paste your Syslog log format configuration. It is in the format of `/etc/rsyslog.conf` and starts with `template` or `$template`. The format syntax follows [Syslog Message Format](https://www.rfc-editor.org/rfc/rfc5424?spm=a2c4g.11186623.0.0.21324a0fUixMd5#:~:text=2009%0A%0A%0A6.-,Syslog%20Message%20Format,-The%20syslog%20message). For example: - - ``` - <%pri%>1 %timestamp:::date-rfc3339% %HOSTNAME% %app-name% %procid% %msgid% %msg%\n - ``` - -2. In the **Sample log parsing** section, paste a sample Nginx log to verify if the log parsing is successful. For example: - ``` - <35>1 2013-10-11T22:14:15.003Z client_machine su - - 'su root' failed for joe on /dev/pts/2 - ``` - -3. Check if each fields type mapping is correct. Change the type by selecting the dropdown menu in the second column. For all supported types, see [Data Types](https://opensearch.org/docs/latest/search-plugins/sql/datatypes/). - - !!! Note "Note" - - You must specify the datetime of the log using key “time”. If not specified, system time will be added. - -4. Specify the **Time format**. The format syntax follows [strptime](https://linux.die.net/man/3/strptime). Check [this manual](https://docs.fluentbit.io/manual/pipeline/parsers/configuring-parser#time-resolution-and-fractional-seconds) for details. - -5. (Optional) In the **Filter** section, you add some conditions to filter logs at the log agent side. The solution will ingest logs that match ALL the specified conditions only. - -6. Select **Create**. - -## Create a single-line text config - -1. Sign in to the Centralized Logging with OpenSearch Console. -2. In the left sidebar, under **Resources**, choose **Log Config**. -3. Click the **Create a log config** button. -4. Specify **Config Name**. -6. Choose **Single-line Text** in the log type dropdown menu. -7. Write the regular expression in [Rubular](https://rubular.com/) to validate first and enter the value. For example: - - ``` - (?\S+)\s*-\s*(?\S+)\s*\[(?\d+/\S+/\d+:\d+:\d+:\d+)\s+\S+\]\s*"(?\S+)\s+(?\S+)\s+\S+"\s*(?\S+)\s*(?\S+)\s*"(?[^"]*)"\s*"(?[^"]*)"\s*"(?[^"]*)".* - ``` - -8. In the **Sample log parsing** section, paste a sample Single-line text log and click **Parse log** to verify if the log parsing is successful. For example: - - ``` - 127.0.0.1 - - [24/Dec/2021:01:27:11 +0000] "GET / HTTP/1.1" 200 3520 "-" "curl/7.79.1" "-" - ``` - -9. Check if each fields type mapping is correct. Change the type by selecting the dropdown menu in the second column. For all supported types, see [Data Types](https://opensearch.org/docs/latest/search-plugins/sql/datatypes/). - - !!! Note "Note" - - You must specify the datetime of the log using key “time”. If not specified, system time will be added. - -10. Specify the **Time format**. The format syntax follows [strptime](https://linux.die.net/man/3/strptime). Check [this manual](https://docs.fluentbit.io/manual/pipeline/parsers/configuring-parser#time-resolution-and-fractional-seconds) for details. - -11. (Optional) In the **Filter** section, you add some conditions to filter logs at the log agent side. The solution will ingest logs that match ALL the specified conditions only. - -12. Select **Create**. - -## Create a multi-line text config - -1. Sign in to the Centralized Logging with OpenSearch Console. -2. In the left sidebar, under **Resources**, choose **Log Config**. -3. Click the **Create a log config** button. -4. Specify **Config Name**. -6. Choose **Multi-line Text** in the log type dropdown menu. - -### Java - Spring Boot - -1. For Java Spring Boot logs, you could provide a simple log format. For example: - - ``` - %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger : %msg%n - ``` - -2. Paste a sample multi-line log. For example: - - ```log - 2022-02-18 10:32:26.400 ERROR [http-nio-8080-exec-1] org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.ArithmeticException: / by zero] with root cause - java.lang.ArithmeticException: / by zero - at com.springexamples.demo.web.LoggerController.logs(LoggerController.java:22) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) - at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke - ``` - -3. Choose **Parse Log**. - -4. Check if each fields type mapping is correct. You can change the type by selecting the dropdown menu in the second column. For all supported types, see [Data Types](https://opensearch.org/docs/latest/search-plugins/sql/datatypes/). - - !!! Note "Note" - You must specify the datetime of the log using key “time”. If not specified, system time will be added. - -5. Specify the **Time format**. The format syntax follows [strptime](https://linux.die.net/man/3/strptime). Check [this](https://docs.fluentbit.io/manual/pipeline/parsers/configuring-parser#time-resolution-and-fractional-seconds) for details. - -6. (Optional) In the **Filter** section, you add some conditions to filter logs at the log agent side. The solution will ingest logs that match ALL the specified conditions only. - -7. Select **Create**. - -### Custom - -1. For other kinds of logs, you could specify the first line regex pattern. For example: - - ``` - (?