├── .github └── workflows │ └── HMS-docker.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── app.py ├── cdk.json ├── deployment ├── app_code │ ├── delete_all.sh │ ├── job │ │ ├── HudiEMRonEKS.py │ │ ├── hivejdbc.py │ │ ├── hivethrift_eks.py │ │ ├── hivethrift_emr.py │ │ ├── set-of-hive-queries.sql │ │ ├── sidecar_hivethrift_eks.py │ │ ├── sidecar_hms_pod_template.yaml │ │ ├── sidecar_hms_pod_template_standalone.yaml │ │ ├── sidecar_submit-hudi-hms.sh │ │ ├── sidecar_submit-job-via-thrift_eks.sh │ │ ├── submit-hudi-glue.sh │ │ ├── submit-job-via-jdbc.sh │ │ ├── submit-job-via-thrift_eks.sh │ │ ├── submit-job-via-thrift_emr.sh │ │ └── submit-sparksql.sh │ └── post-deployment.sh ├── build-s3-dist.sh └── cdk-solution-helper │ ├── index.js │ ├── node_modules │ ├── .bin │ │ └── cdk │ ├── .package-lock.json │ ├── aws-cdk │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE │ │ ├── NOTICE │ │ ├── README.md │ │ ├── bin │ │ │ ├── cdk │ │ │ ├── cdk.d.ts │ │ │ └── cdk.js │ │ ├── build-info.json │ │ ├── lib │ │ │ ├── api │ │ │ │ ├── aws-auth │ │ │ │ │ ├── account-cache.d.ts │ │ │ │ │ ├── account-cache.js │ │ │ │ │ ├── aws-sdk-inifile.d.ts │ │ │ │ │ ├── aws-sdk-inifile.js │ │ │ │ │ ├── awscli-compatible.d.ts │ │ │ │ │ ├── awscli-compatible.js │ │ │ │ │ ├── credential-plugins.d.ts │ │ │ │ │ ├── credential-plugins.js │ │ │ │ │ ├── credentials.d.ts │ │ │ │ │ ├── credentials.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── index.js │ │ │ │ │ ├── sdk-provider.d.ts │ │ │ │ │ ├── sdk-provider.js │ │ │ │ │ ├── sdk.d.ts │ │ │ │ │ ├── sdk.js │ │ │ │ │ ├── sdk_ini_file.d.ts │ │ │ │ │ └── sdk_ini_file.js │ │ │ │ ├── bootstrap │ │ │ │ │ ├── bootstrap-environment.d.ts │ │ │ │ │ ├── bootstrap-environment.js │ │ │ │ │ ├── bootstrap-props.d.ts │ │ │ │ │ ├── bootstrap-props.js │ │ │ │ │ ├── bootstrap-template.yaml │ │ │ │ │ ├── deploy-bootstrap.d.ts │ │ │ │ │ ├── deploy-bootstrap.js │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── index.js │ │ │ │ │ ├── legacy-template.d.ts │ │ │ │ │ └── legacy-template.js │ │ │ │ ├── cxapp │ │ │ │ │ ├── cloud-assembly.d.ts │ │ │ │ │ ├── cloud-assembly.js │ │ │ │ │ ├── cloud-executable.d.ts │ │ │ │ │ ├── cloud-executable.js │ │ │ │ │ ├── environments.d.ts │ │ │ │ │ ├── environments.js │ │ │ │ │ ├── exec.d.ts │ │ │ │ │ └── exec.js │ │ │ │ ├── deploy-stack.d.ts │ │ │ │ ├── deploy-stack.js │ │ │ │ ├── evaluate-cloudformation-template.d.ts │ │ │ │ ├── evaluate-cloudformation-template.js │ │ │ │ ├── hotswap-deployments.d.ts │ │ │ │ ├── hotswap-deployments.js │ │ │ │ ├── hotswap │ │ │ │ │ ├── code-build-projects.d.ts │ │ │ │ │ ├── code-build-projects.js │ │ │ │ │ ├── common.d.ts │ │ │ │ │ ├── common.js │ │ │ │ │ ├── ecs-services.d.ts │ │ │ │ │ ├── ecs-services.js │ │ │ │ │ ├── lambda-functions.d.ts │ │ │ │ │ ├── lambda-functions.js │ │ │ │ │ ├── s3-bucket-deployments.d.ts │ │ │ │ │ ├── s3-bucket-deployments.js │ │ │ │ │ ├── stepfunctions-state-machines.d.ts │ │ │ │ │ └── stepfunctions-state-machines.js │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── logs │ │ │ │ │ ├── find-cloudwatch-logs.d.ts │ │ │ │ │ ├── find-cloudwatch-logs.js │ │ │ │ │ ├── logs-monitor.d.ts │ │ │ │ │ └── logs-monitor.js │ │ │ │ ├── toolkit-info.d.ts │ │ │ │ ├── toolkit-info.js │ │ │ │ └── util │ │ │ │ │ ├── cloudformation.d.ts │ │ │ │ │ ├── cloudformation.js │ │ │ │ │ ├── cloudformation │ │ │ │ │ ├── stack-activity-monitor.d.ts │ │ │ │ │ ├── stack-activity-monitor.js │ │ │ │ │ ├── stack-status.d.ts │ │ │ │ │ └── stack-status.js │ │ │ │ │ ├── display.d.ts │ │ │ │ │ ├── display.js │ │ │ │ │ ├── placeholders.d.ts │ │ │ │ │ ├── placeholders.js │ │ │ │ │ ├── string-manipulation.d.ts │ │ │ │ │ └── string-manipulation.js │ │ │ ├── assets.d.ts │ │ │ ├── assets.js │ │ │ ├── cdk-toolkit.d.ts │ │ │ ├── cdk-toolkit.js │ │ │ ├── command-api.d.ts │ │ │ ├── command-api.js │ │ │ ├── commands │ │ │ │ ├── context.d.ts │ │ │ │ ├── context.js │ │ │ │ ├── docs.d.ts │ │ │ │ ├── docs.js │ │ │ │ ├── doctor.d.ts │ │ │ │ └── doctor.js │ │ │ ├── context-providers │ │ │ │ ├── ami.d.ts │ │ │ │ ├── ami.js │ │ │ │ ├── availability-zones.d.ts │ │ │ │ ├── availability-zones.js │ │ │ │ ├── endpoint-service-availability-zones.d.ts │ │ │ │ ├── endpoint-service-availability-zones.js │ │ │ │ ├── hosted-zones.d.ts │ │ │ │ ├── hosted-zones.js │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── keys.d.ts │ │ │ │ ├── keys.js │ │ │ │ ├── load-balancers.d.ts │ │ │ │ ├── load-balancers.js │ │ │ │ ├── security-groups.d.ts │ │ │ │ ├── security-groups.js │ │ │ │ ├── ssm-parameters.d.ts │ │ │ │ ├── ssm-parameters.js │ │ │ │ ├── vpcs.d.ts │ │ │ │ └── vpcs.js │ │ │ ├── diff.d.ts │ │ │ ├── diff.js │ │ │ ├── init-templates │ │ │ │ └── LICENSE │ │ │ ├── init.d.ts │ │ │ ├── init.js │ │ │ ├── logging.d.ts │ │ │ ├── logging.js │ │ │ ├── os.d.ts │ │ │ ├── os.js │ │ │ ├── serialize.d.ts │ │ │ ├── serialize.js │ │ │ ├── settings.d.ts │ │ │ ├── settings.js │ │ │ ├── util │ │ │ │ ├── arrays.d.ts │ │ │ │ ├── arrays.js │ │ │ │ ├── asset-manifest-builder.d.ts │ │ │ │ ├── asset-manifest-builder.js │ │ │ │ ├── asset-publishing.d.ts │ │ │ │ ├── asset-publishing.js │ │ │ │ ├── bool.d.ts │ │ │ │ ├── bool.js │ │ │ │ ├── console-formatters.d.ts │ │ │ │ ├── console-formatters.js │ │ │ │ ├── content-hash.d.ts │ │ │ │ ├── content-hash.js │ │ │ │ ├── directories.d.ts │ │ │ │ ├── directories.js │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.js │ │ │ │ ├── npm.d.ts │ │ │ │ ├── npm.js │ │ │ │ ├── objects.d.ts │ │ │ │ ├── objects.js │ │ │ │ ├── tables.d.ts │ │ │ │ ├── tables.js │ │ │ │ ├── types.d.ts │ │ │ │ ├── types.js │ │ │ │ ├── yaml-cfn.d.ts │ │ │ │ └── yaml-cfn.js │ │ │ ├── version.d.ts │ │ │ └── version.js │ │ ├── package.json │ │ └── test │ │ │ ├── account-cache.test.d.ts │ │ │ ├── account-cache.test.js │ │ │ ├── api │ │ │ ├── bootstrap.test.d.ts │ │ │ ├── bootstrap.test.js │ │ │ ├── bootstrap2.test.d.ts │ │ │ ├── bootstrap2.test.js │ │ │ ├── cloud-assembly.test.d.ts │ │ │ ├── cloud-assembly.test.js │ │ │ ├── cloud-executable.test.d.ts │ │ │ ├── cloud-executable.test.js │ │ │ ├── cloudformation-deployments.test.d.ts │ │ │ ├── cloudformation-deployments.test.js │ │ │ ├── console-listener.d.ts │ │ │ ├── console-listener.js │ │ │ ├── deploy-stack.test.d.ts │ │ │ ├── deploy-stack.test.js │ │ │ ├── exec.test.d.ts │ │ │ ├── exec.test.js │ │ │ ├── fake-cloudformation-stack.d.ts │ │ │ ├── fake-cloudformation-stack.js │ │ │ ├── fake-sts.d.ts │ │ │ ├── fake-sts.js │ │ │ ├── hotswap │ │ │ │ ├── code-build-projects-hotswap-deployments.test.d.ts │ │ │ │ ├── code-build-projects-hotswap-deployments.test.js │ │ │ │ ├── ecs-services-hotswap-deployments.test.d.ts │ │ │ │ ├── ecs-services-hotswap-deployments.test.js │ │ │ │ ├── hotswap-deployments.test.d.ts │ │ │ │ ├── hotswap-deployments.test.js │ │ │ │ ├── hotswap-test-setup.d.ts │ │ │ │ ├── hotswap-test-setup.js │ │ │ │ ├── lambda-functions-docker-hotswap-deployments.test.d.ts │ │ │ │ ├── lambda-functions-docker-hotswap-deployments.test.js │ │ │ │ ├── lambda-functions-hotswap-deployments.test.d.ts │ │ │ │ ├── lambda-functions-hotswap-deployments.test.js │ │ │ │ ├── lambda-functions-inline-hotswap-deployments.test.d.ts │ │ │ │ ├── lambda-functions-inline-hotswap-deployments.test.js │ │ │ │ ├── lambda-versions-aliases-hotswap-deployments.test.d.ts │ │ │ │ ├── lambda-versions-aliases-hotswap-deployments.test.js │ │ │ │ ├── s3-bucket-hotswap-deployments.test.d.ts │ │ │ │ ├── s3-bucket-hotswap-deployments.test.js │ │ │ │ ├── state-machine-hotswap-deployments.test.d.ts │ │ │ │ └── state-machine-hotswap-deployments.test.js │ │ │ ├── logs │ │ │ │ ├── find-cloudwatch-logs.test.d.ts │ │ │ │ ├── find-cloudwatch-logs.test.js │ │ │ │ ├── logs-monitor.test.d.ts │ │ │ │ └── logs-monitor.test.js │ │ │ ├── sdk-provider.test.d.ts │ │ │ ├── sdk-provider.test.js │ │ │ ├── stack-activity-monitor.test.d.ts │ │ │ └── stack-activity-monitor.test.js │ │ │ ├── assets.test.d.ts │ │ │ ├── assets.test.js │ │ │ ├── aws-sdk-non-public-apis.test.d.ts │ │ │ ├── aws-sdk-non-public-apis.test.js │ │ │ ├── cdk-docs.test.d.ts │ │ │ ├── cdk-docs.test.js │ │ │ ├── cdk-doctor.test.d.ts │ │ │ ├── cdk-doctor.test.js │ │ │ ├── cdk-toolkit.test.d.ts │ │ │ ├── cdk-toolkit.test.js │ │ │ ├── commands │ │ │ ├── context-command.test.d.ts │ │ │ └── context-command.test.js │ │ │ ├── context-providers │ │ │ ├── amis.test.d.ts │ │ │ ├── amis.test.js │ │ │ ├── asymmetric-vpcs.test.d.ts │ │ │ ├── asymmetric-vpcs.test.js │ │ │ ├── generic.test.d.ts │ │ │ ├── generic.test.js │ │ │ ├── keys.test.d.ts │ │ │ ├── keys.test.js │ │ │ ├── load-balancers.test.d.ts │ │ │ ├── load-balancers.test.js │ │ │ ├── security-groups.test.d.ts │ │ │ ├── security-groups.test.js │ │ │ ├── vpcs.test.d.ts │ │ │ └── vpcs.test.js │ │ │ ├── context.test.d.ts │ │ │ ├── context.test.js │ │ │ ├── diff.test.d.ts │ │ │ ├── diff.test.js │ │ │ ├── init.test.d.ts │ │ │ ├── init.test.js │ │ │ ├── integ │ │ │ ├── cli │ │ │ │ └── test.sh │ │ │ ├── init │ │ │ │ ├── test-csharp-app.sh │ │ │ │ ├── test-fsharp.sh │ │ │ │ ├── test-java.sh │ │ │ │ ├── test-javascript.sh │ │ │ │ ├── test-python-app.sh │ │ │ │ ├── test-typescript-app.sh │ │ │ │ └── test-typescript-lib.sh │ │ │ ├── run-against-dist │ │ │ ├── run-against-release │ │ │ ├── test-cli-regression-against-current-code.sh │ │ │ ├── test-cli-regression-against-latest-release.sh │ │ │ └── uberpackage │ │ │ │ └── test.sh │ │ │ ├── serialize.test.d.ts │ │ │ ├── serialize.test.js │ │ │ ├── settings.test.d.ts │ │ │ ├── settings.test.js │ │ │ ├── usersettings.test.d.ts │ │ │ ├── usersettings.test.js │ │ │ ├── util.d.ts │ │ │ ├── util.js │ │ │ ├── util │ │ │ ├── applydefaults.test.d.ts │ │ │ ├── applydefaults.test.js │ │ │ ├── arrays.test.d.ts │ │ │ ├── arrays.test.js │ │ │ ├── awscli-compatible.test.d.ts │ │ │ ├── awscli-compatible.test.js │ │ │ ├── cloudformation.test.d.ts │ │ │ ├── cloudformation.test.js │ │ │ ├── console-formatters.test.d.ts │ │ │ ├── console-formatters.test.js │ │ │ ├── mock-child_process.d.ts │ │ │ ├── mock-child_process.js │ │ │ ├── mock-sdk.d.ts │ │ │ ├── mock-sdk.js │ │ │ ├── mock-toolkitinfo.d.ts │ │ │ ├── mock-toolkitinfo.js │ │ │ ├── objects.test.d.ts │ │ │ ├── objects.test.js │ │ │ ├── stack-monitor.test.d.ts │ │ │ └── stack-monitor.test.js │ │ │ ├── version.test.d.ts │ │ │ ├── version.test.js │ │ │ ├── yaml.test.d.ts │ │ │ └── yaml.test.js │ ├── fs │ │ ├── README.md │ │ └── package.json │ └── fsevents │ │ ├── LICENSE │ │ ├── README.md │ │ ├── fsevents.d.ts │ │ ├── fsevents.js │ │ ├── fsevents.node │ │ └── package.json │ ├── package-lock.json │ └── package.json ├── docker ├── Dockerfile ├── README.md ├── conf │ └── metastore-log4j2.properties ├── entrypoint.sh ├── self-terminate.sh └── templates │ ├── core-site.xml.tpl │ ├── metastore-site.xml.tpl │ ├── pom-sdk-v1.xml.tpl │ └── pom-sdk-v2.xml.tpl ├── hive-metastore-chart ├── .helmignore ├── Chart.yaml ├── README.md ├── configsets │ ├── core-site.xml.tpl │ └── metastore-site.xml.tpl ├── templates │ ├── NOTES.txt │ ├── _helpers.tpl │ ├── configmap.yaml │ ├── deployment.yaml │ ├── hpa.yaml │ ├── role.yaml │ ├── rolebinding.yaml │ ├── service.yaml │ └── serviceaccount.yaml └── values.yaml ├── requirements.txt ├── setup.py └── source ├── app_resources ├── 00-deploy-to-aws.png ├── alb-iam-role.yaml ├── alb-values.yaml ├── autoscaler-iam-role.yaml ├── autoscaler-values.yaml ├── efs-spec.yaml ├── emr-iam-role.yaml ├── emr-rbac.yaml ├── ex-secret-iam-role.yaml ├── ex-secret-values.yaml ├── hive-metastore-config.yaml ├── hive-metastore-values.yaml ├── hive-rbac.yaml └── spark-operator-values.yaml ├── img ├── 1-hive-jdbc.png ├── 2-hive-emr-ec2.png ├── 3-standalone-hms.png ├── 4-hms-sidecar.png ├── 5-hudi-hms-sidecar.png ├── 6-hudi-glue.png └── 7-hive-metastore-pod.png └── lib ├── cdk_infra ├── eks_base_app.py ├── eks_cluster.py ├── eks_service_account.py ├── iam_roles.py ├── network_sg.py ├── rds.py ├── s3_app_code.py └── spark_permission.py ├── emr_on_ec2_stack.py ├── spark_on_eks_stack.py └── util └── manifest_reader.py /.github/workflows/HMS-docker.yml: -------------------------------------------------------------------------------- 1 | name: Docker 2 | on: 3 | release: 4 | types: [created] 5 | push: 6 | branches: [ main ] 7 | # # Publish spark version tags as releases. 8 | # tags: [ 'v*.*.*' ] 9 | pull_request: 10 | branches: [ main ] 11 | 12 | env: 13 | REGISTRY: ghcr.io 14 | IMAGE_NAME: aws-samples/hive-metastore 15 | HMS_VERSION_TAG: 3.0.0 16 | 17 | 18 | jobs: 19 | docker: 20 | runs-on: ubuntu-latest 21 | permissions: 22 | contents: read 23 | packages: write 24 | 25 | steps: 26 | - name: Checkout repository 27 | uses: actions/checkout@v3 28 | 29 | # Login against a Docker registry except on PR 30 | # https://github.com/docker/login-action 31 | - name: Log into registry ${{ env.REGISTRY }} 32 | if: github.event_name != 'pull_request' 33 | uses: docker/login-action@v2 34 | with: 35 | registry: ${{ env.REGISTRY }} 36 | username: ${{ github.actor }} 37 | password: ${{ secrets.GITHUB_TOKEN }} 38 | 39 | 40 | # Extract metadata (tags, labels) for Docker 41 | # https://github.com/docker/metadata-action 42 | - name: Extract Docker metadata 43 | id: meta 44 | uses: docker/metadata-action@v4 45 | with: 46 | images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} 47 | 48 | # Build and push Docker image with Buildx (don't push on PR) 49 | # https://github.com/docker/build-push-action 50 | - name: Build and push Docker image 51 | uses: docker/build-push-action@v4 52 | with: 53 | context: docker/ 54 | push: ${{ github.event_name != 'pull_request' }} 55 | tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ env.HMS_VERSION_TAG }} 56 | labels: ${{ steps.meta.outputs.labels }} 57 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Git 2 | .git 3 | Config 4 | 5 | ### VisualStudioCode ### 6 | .vscode/* 7 | ### IntelliJ/ PyCharm ### 8 | .idea/* 9 | # System Files 10 | **/.DS_Store 11 | # CDK 12 | **/cdk.out 13 | **/cdk.context.json 14 | *.swp 15 | **/node_modules 16 | **/package-lock.json 17 | 18 | # compiled output 19 | **/global-s3-assets 20 | **/regional-s3-assets 21 | **/open-source 22 | 23 | ### Python ### 24 | # Byte-compiled / optimized / DLL files 25 | *__pycache__/ 26 | *.py[cod] 27 | *$py.class 28 | # Python Distribution / packaging 29 | *.egg-info/ 30 | *.egg 31 | # Python Virtual Environments 32 | **/venv* 33 | **/.venv* 34 | **/.env 35 | ## Python Testing 36 | .pytest_cache 37 | **/.pytest_cache 38 | **/.coverage 39 | **/.coveragerc 40 | **/coverage-reports/ 41 | *.jar -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | ## Code of Conduct 2 | This project has adopted the [Amazon Open Source Code of Conduct](https://aws.github.io/code-of-conduct). 3 | For more information see the [Code of Conduct FAQ](https://aws.github.io/code-of-conduct-faq) or contact 4 | opensource-codeofconduct@amazon.com with any additional questions or comments. 5 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 7 | the Software, and to permit persons to whom the Software is furnished to do so. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 10 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 11 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 12 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 13 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 14 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 15 | 16 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python3 2 | from aws_cdk import (App,Tags,CfnOutput) 3 | from source.lib.emr_on_ec2_stack import EMREC2Stack 4 | from source.lib.spark_on_eks_stack import SparkOnEksStack 5 | 6 | 7 | app = App() 8 | proj_name = app.node.try_get_context('project_name') 9 | emr_release_v=app.node.try_get_context('emr_version') 10 | 11 | # main stacks 12 | eks_stack = SparkOnEksStack(app, 'HiveEMRonEKS', proj_name) 13 | # need for initializing the schematool-initSchema 14 | hive_emr_ec2_stack = EMREC2Stack(eks_stack, 'EMRonEC2', emr_release_v, eks_stack.eks_cluster,eks_stack.code_bucket,eks_stack.rds_secret) 15 | 16 | 17 | Tags.of(eks_stack).add('project', proj_name) 18 | Tags.of(hive_emr_ec2_stack).add('project', proj_name) 19 | 20 | # Deployment Output 21 | CfnOutput(eks_stack,'CODE_BUCKET', value=eks_stack.code_bucket) 22 | CfnOutput(eks_stack, "VirtualClusterId",value=eks_stack.EMRVC) 23 | CfnOutput(eks_stack, "EMRExecRoleARN", value=eks_stack.EMRExecRole) 24 | CfnOutput(eks_stack, "HiveSecretName", value=eks_stack.rds_secret.secret_name) 25 | 26 | app.synth() -------------------------------------------------------------------------------- /cdk.json: -------------------------------------------------------------------------------- 1 | { 2 | "app": "python3 app.py", 3 | "context": { 4 | "project_name": "HiveEMRonEKS", 5 | "emr_version":"emr-6.10.0", 6 | "version": "v2.0.0", 7 | "@aws-cdk/core:stackRelativeExports": "false" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /deployment/app_code/delete_all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export stack_name="${1:-HiveEMRonEKS}" 4 | 5 | # delete EMR virtual cluster if needed 6 | emr_cv=$(aws emr-containers list-virtual-clusters --state ARRESTED --query 'virtualClusters[*].id' --output text) 7 | if [ ! -z "$emr_cv" ] 8 | then 9 | for i in emr_cv 10 | do 11 | aws emr-containers delete-virtual-cluster --id $i 12 | done 13 | fi 14 | 15 | # delete S3 16 | S3BUCKET=$(aws cloudformation describe-stacks --stack-name $stack_name --query "Stacks[0].Outputs[?OutputKey=='CODEBUCKET'].OutputValue" --output text) 17 | if [ ! "$S3BUCKET" == 'None' ] 18 | then 19 | echo "Delete EMR log from S3" 20 | aws s3 rm s3://$S3BUCKET --recursive 21 | aws s3 rb s3://$S3BUCKET --force 22 | fi 23 | 24 | # delete the rest from CF 25 | echo "Delete the rest of resources by CloudFormation delete command" 26 | aws cloudformation delete-stack --stack-name $stack_name -------------------------------------------------------------------------------- /deployment/app_code/job/HudiEMRonEKS.py: -------------------------------------------------------------------------------- 1 | from os import environ 2 | import sys 3 | from pyspark.sql import SparkSession 4 | 5 | spark = SparkSession \ 6 | .builder \ 7 | .config("spark.sql.warehouse.dir", sys.argv[1]+"/warehouse/" ) \ 8 | .enableHiveSupport() \ 9 | .getOrCreate() 10 | 11 | # Create a DataFrame 12 | inputDF = spark.createDataFrame( 13 | [ 14 | ("100", "2015-01-01", "2015-01-01T13:51:39.340396Z"), 15 | ("101", "2015-01-01", "2015-01-01T12:14:58.597216Z"), 16 | ("102", "2015-01-01", "2015-01-01T13:51:40.417052Z"), 17 | ("103", "2015-01-01", "2015-01-01T13:51:40.519832Z"), 18 | ("104", "2015-01-02", "2015-01-01T12:15:00.512679Z"), 19 | ("105", "2015-01-02", "2015-01-01T13:51:42.248818Z"), 20 | ], 21 | ["id", "creation_date", "last_update_time"] 22 | ) 23 | 24 | # Specify common DataSourceWriteOptions in the single hudiOptions variable 25 | test_tableName = "hudi_tbl" 26 | hudiOptions = { 27 | 'hoodie.table.name': test_tableName, 28 | 'hoodie.datasource.write.recordkey.field': 'id', 29 | 'hoodie.datasource.write.partitionpath.field': 'creation_date', 30 | 'hoodie.datasource.write.precombine.field': 'last_update_time', 31 | 'hoodie.datasource.hive_sync.enable': 'true', 32 | 'hoodie.datasource.hive_sync.table': test_tableName, 33 | 'hoodie.datasource.hive_sync.database': 'default', 34 | 'hoodie.datasource.write.hive_style_partitioning': 'true', 35 | 'hoodie.datasource.hive_sync.partition_fields': 'creation_date', 36 | 'hoodie.datasource.hive_sync.partition_extractor_class': 'org.apache.hudi.hive.MultiPartKeysValueExtractor', 37 | 'hoodie.datasource.hive_sync.mode': 'hms' 38 | } 39 | 40 | 41 | # Write a DataFrame as a Hudi dataset 42 | inputDF.write \ 43 | .format('org.apache.hudi') \ 44 | .option('hoodie.datasource.write.operation', 'bulk_insert') \ 45 | .options(**hudiOptions) \ 46 | .mode('overwrite') \ 47 | .save(sys.argv[1]+"/hudi_hive_insert") 48 | 49 | print("After {}".format(spark.catalog.listTables())) -------------------------------------------------------------------------------- /deployment/app_code/job/hivejdbc.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from pyspark.sql import SparkSession 3 | spark = SparkSession \ 4 | .builder \ 5 | .config("spark.sql.warehouse.dir", sys.argv[1]+"/warehouse/" ) \ 6 | .enableHiveSupport() \ 7 | .getOrCreate() 8 | spark.sql("SHOW DATABASES").show() 9 | spark.sql("CREATE DATABASE IF NOT EXISTS `demo`") 10 | spark.sql("CREATE EXTERNAL TABLE IF NOT EXISTS `demo`.`amazonreview`( `marketplace` string,`customer_id`string,`review_id` string,`product_id` string,`product_title` string,`star_rating` integer,`helpful_votes` integer,`total_votes` integer,`insight` string,`review_headline` string,`review_body` string,`review_date` timestamp,`year` integer) STORED AS PARQUET LOCATION '"+sys.argv[1]+"/app_code/data/toy/'") 11 | spark.sql("SELECT count(*) FROM demo.amazonreview").show() 12 | spark.stop() -------------------------------------------------------------------------------- /deployment/app_code/job/hivethrift_eks.py: -------------------------------------------------------------------------------- 1 | from os import environ 2 | import sys 3 | from pyspark.sql import SparkSession 4 | 5 | spark = SparkSession \ 6 | .builder \ 7 | .config("spark.sql.warehouse.dir", sys.argv[1]+"/warehouse/" ) \ 8 | .config("hive.metastore.uris","thrift://"+environ['HIVE_METASTORE_SERVICE_HOST']+":9083") \ 9 | .enableHiveSupport() \ 10 | .getOrCreate() 11 | 12 | spark.sql("SHOW DATABASES").show() 13 | spark.sql("CREATE DATABASE IF NOT EXISTS `demo`") 14 | spark.sql("CREATE EXTERNAL TABLE IF NOT EXISTS `demo`.`amazonreview3`( `marketplace` string,`customer_id`string,`review_id` string,`product_id` string,`product_title` string,`star_rating` integer,`helpful_votes` integer,`total_votes` integer,`insight` string,`review_headline` string,`review_body` string,`review_date` timestamp,`year` integer) STORED AS PARQUET LOCATION '"+sys.argv[1]+"/app_code/data/toy/'") 15 | spark.sql("SELECT count(*) FROM demo.amazonreview3").show() 16 | spark.stop() -------------------------------------------------------------------------------- /deployment/app_code/job/hivethrift_emr.py: -------------------------------------------------------------------------------- 1 | # .config("spark.sql.warehouse.dir", sys.argv[1]+"/warehouse/" ) \ 2 | # from os import environ 3 | import sys 4 | from pyspark.sql import SparkSession 5 | spark = SparkSession \ 6 | .builder \ 7 | .config("hive.metastore.uris","thrift://"+sys.argv[2]+":9083") \ 8 | .enableHiveSupport() \ 9 | .getOrCreate() 10 | spark.sql("SHOW DATABASES").show() 11 | spark.sql("CREATE DATABASE IF NOT EXISTS `demo`") 12 | spark.sql("DROP TABLE IF EXISTS `demo`.`amazonreview2`") 13 | spark.sql("CREATE EXTERNAL TABLE IF NOT EXISTS `demo`.`amazonreview2`( `marketplace` string,`customer_id`string,`review_id` string,`product_id` string,`product_title` string,`star_rating` integer,`helpful_votes` integer,`total_votes` integer,`insight` string,`review_headline` string,`review_body` string,`review_date` timestamp,`year` integer) STORED AS PARQUET LOCATION '"+sys.argv[1]+"/app_code/data/toy/'") 14 | spark.sql("SELECT count(*) FROM `demo`.`amazonreview2`").show() 15 | spark.stop() -------------------------------------------------------------------------------- /deployment/app_code/job/set-of-hive-queries.sql: -------------------------------------------------------------------------------- 1 | -- drop database in case switch between different hive metastore 2 | DROP DATABASE IF EXISTS hiveonspark CASCADE; 3 | CREATE DATABASE hiveonspark; 4 | USE hiveonspark; 5 | 6 | --create hive managed table 7 | CREATE TABLE IF NOT EXISTS testtable (`key` INT, `value` STRING) using hive; 8 | LOAD DATA LOCAL INPATH '/usr/lib/spark/examples/src/main/resources/kv1.txt' OVERWRITE INTO TABLE testtable; 9 | SELECT * FROM testtable WHERE key=238; 10 | 11 | -- test1: add column 12 | ALTER TABLE testtable ADD COLUMNS (`arrayCol` Array); 13 | -- test2: insert 14 | INSERT INTO testtable VALUES 15 | (238,'val_238',array(1,3)), 16 | (238,'val_238',array(2,3)); 17 | SELECT * FROM testtable WHERE key=238; 18 | -- test3: UDF 19 | CREATE TEMPORARY FUNCTION hiveUDF AS 'org.apache.hadoop.hive.ql.udf.generic.GenericUDTFExplode'; 20 | SELECT `key`,`value`,hiveUDF(arrayCol) FROM testtable WHERE key=238; 21 | -- test4: CTAS table 22 | CREATE TABLE IF NOT EXISTS ctas_testtable 23 | STORED AS ORC 24 | AS 25 | SELECT * FROM testtable; 26 | SELECT * FROM ctas_testtable WHERE key=${Key_ID}; 27 | 28 | -- test5: External table mapped to S3 29 | CREATE EXTERNAL TABLE IF NOT EXISTS amazonreview 30 | ( 31 | marketplace string, 32 | customer_id string, 33 | review_id string, 34 | product_id string, 35 | product_title string, 36 | star_rating integer, 37 | helpful_votes integer, 38 | total_votes integer, 39 | insight string, 40 | review_headline string, 41 | review_body string, 42 | review_date timestamp, 43 | year integer 44 | ) 45 | STORED AS PARQUET 46 | LOCATION 's3://${S3Bucket}/app_code/data/toy/'; 47 | SELECT count(*) FROM amazonreview; 48 | -------------------------------------------------------------------------------- /deployment/app_code/job/sidecar_hivethrift_eks.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from pyspark.sql import SparkSession 3 | 4 | spark = SparkSession \ 5 | .builder \ 6 | .config("spark.sql.warehouse.dir", sys.argv[1]+"/warehouse/" ) \ 7 | .enableHiveSupport() \ 8 | .getOrCreate() 9 | 10 | spark.sql("SHOW DATABASES").show() 11 | spark.sql("CREATE DATABASE IF NOT EXISTS `demo`") 12 | spark.sql("DROP TABLE IF EXISTS demo.amazonreview4") 13 | spark.sql("CREATE EXTERNAL TABLE IF NOT EXISTS `demo`.`amazonreview4`( `marketplace` string,`customer_id`string,`review_id` string,`product_id` string,`product_title` string,`star_rating` integer,`helpful_votes` integer,`total_votes` integer,`insight` string,`review_headline` string,`review_body` string,`review_date` timestamp,`year` integer) STORED AS PARQUET LOCATION '"+sys.argv[1]+"/app_code/data/toy/'") 14 | spark.sql("SELECT count(*) FROM demo.amazonreview4").show() 15 | spark.stop() -------------------------------------------------------------------------------- /deployment/app_code/job/sidecar_hms_pod_template.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | generateName: hms- 5 | labels: 6 | app: hive-metastore 7 | namespace: emr 8 | spec: 9 | containers: 10 | - name: hms 11 | #replace it by your docker image url 12 | image: ghcr.io/melodyyangaws/hive-metastore:3.0.0 13 | resources: 14 | limits: 15 | cpu: "1" 16 | memory: "1000Mi" 17 | requests: 18 | memory: "500Mi" 19 | cpu: "400m" 20 | command: ["sh", "-c", "/opt/hive-metastore/bin/entrypoint.sh & /bin/self-terminate.sh /var/log/fluentd/main-container-terminated"] 21 | env: 22 | - name: HIVE_DB_DRIVER 23 | value: com.mysql.cj.jdbc.Driver 24 | - name: HIVE_DB_EXTERNAL 25 | value: "true" 26 | # hard code Hive metastore RDS credentials 27 | # - name: HIVE_DB_USER 28 | # value: admin 29 | # - name: HIVE_DB_PASS 30 | # value: YOUR_PASSWORD 31 | # - name: HIVE_DB_HOST 32 | # value: YOUR_RDS_HOST 33 | # - name: HIVE_DB_PORT 34 | # value: "3306" 35 | # - name: HIVE_DB_NAME 36 | # value: YOUR_DB_NAME 37 | # - name: HIVE_WAREHOUSE_S3LOCATION 38 | # value: s3://YOUR_HMS_DWH 39 | - name: HIVE_DB_USER 40 | valueFrom: 41 | secretKeyRef: 42 | name: rds-hms-secret 43 | key: username 44 | - name: HIVE_DB_PASS 45 | valueFrom: 46 | secretKeyRef: 47 | name: rds-hms-secret 48 | key: password 49 | - name: HIVE_DB_HOST 50 | valueFrom: 51 | secretKeyRef: 52 | name: rds-hms-secret 53 | key: host 54 | - name: HIVE_DB_PORT 55 | valueFrom: 56 | secretKeyRef: 57 | name: rds-hms-secret 58 | key: port 59 | - name: HIVE_DB_NAME 60 | valueFrom: 61 | secretKeyRef: 62 | name: rds-hms-secret 63 | key: dbname 64 | volumeMounts: 65 | - name: hive-conf-templates 66 | mountPath: /opt/hive-metastore/conf/templates 67 | - name: sidecar-terminate-script 68 | mountPath: /bin/self-terminate.sh 69 | readOnly: true 70 | subPath: self-terminate.sh 71 | - name: emr-container-communicate 72 | mountPath: /var/log/fluentd 73 | readOnly: false 74 | 75 | restartPolicy: Never 76 | volumes: 77 | - name: hive-conf-templates 78 | configMap: 79 | defaultMode: 420 80 | name: sidecar-hms-conf-templates 81 | - name: sidecar-terminate-script 82 | configMap: 83 | defaultMode: 448 84 | name: sidecar-terminate-script -------------------------------------------------------------------------------- /deployment/app_code/job/sidecar_hms_pod_template_standalone.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | generateName: hms- 5 | labels: 6 | app: hive-metastore 7 | namespace: emr 8 | spec: 9 | containers: 10 | - name: hms 11 | #replace it by your docker image url 12 | image: ghcr.io/melodyyangaws/hive-metastore:3.0.0 13 | resources: 14 | limits: 15 | cpu: "1" 16 | memory: "1000Mi" 17 | requests: 18 | memory: "500Mi" 19 | cpu: "400m" 20 | command: ["sh", "-c", "/opt/hive-metastore/bin/entrypoint.sh & /bin/self-terminate.sh /var/log/fluentd/main-container-terminated"] 21 | env: 22 | - name: HIVE_DB_DRIVER 23 | value: com.mysql.cj.jdbc.Driver 24 | - name: HIVE_DB_EXTERNAL 25 | value: "true" 26 | # hard code Hive metastore RDS credentials 27 | # - name: HIVE_DB_USER 28 | # value: admin 29 | # - name: HIVE_DB_PASS 30 | # value: YOUR_PASSWORD 31 | # - name: HIVE_DB_HOST 32 | # value: YOUR_RDS_HOST 33 | # - name: HIVE_DB_PORT 34 | # value: "3306" 35 | # - name: HIVE_DB_NAME 36 | # value: YOUR_DB_NAME 37 | # - name: HIVE_WAREHOUSE_S3LOCATION 38 | # value: s3://YOUR_HMS_DWH 39 | - name: HIVE_DB_USER 40 | valueFrom: 41 | secretKeyRef: 42 | name: rds-hms-secret 43 | key: username 44 | - name: HIVE_DB_PASS 45 | valueFrom: 46 | secretKeyRef: 47 | name: rds-hms-secret 48 | key: password 49 | - name: HIVE_DB_HOST 50 | valueFrom: 51 | secretKeyRef: 52 | name: rds-hms-secret 53 | key: host 54 | - name: HIVE_DB_PORT 55 | valueFrom: 56 | secretKeyRef: 57 | name: rds-hms-secret 58 | key: port 59 | - name: HIVE_DB_NAME 60 | valueFrom: 61 | secretKeyRef: 62 | name: rds-hms-secret 63 | key: dbname 64 | volumeMounts: 65 | - name: emr-container-communicate 66 | mountPath: /var/log/fluentd 67 | readOnly: false 68 | restartPolicy: Never 69 | -------------------------------------------------------------------------------- /deployment/app_code/job/sidecar_submit-hudi-hms.sh: -------------------------------------------------------------------------------- 1 | 2 | aws emr-containers start-job-run \ 3 | --virtual-cluster-id $VIRTUAL_CLUSTER_ID \ 4 | --name hudi-test1 \ 5 | --execution-role-arn $EMR_ROLE_ARN \ 6 | --release-label emr-6.3.0-latest \ 7 | --job-driver '{ 8 | "sparkSubmitJobDriver": { 9 | "entryPoint": "s3://'$S3BUCKET'/app_code/job/HudiEMRonEKS.py", 10 | "entryPointArguments":["s3://'$S3BUCKET'"], 11 | "sparkSubmitParameters": "--jars https://repo1.maven.org/maven2/org/apache/hudi/hudi-spark3-bundle_2.12/0.9.0/hudi-spark3-bundle_2.12-0.9.0.jar --conf spark.executor.cores=1 --conf spark.executor.instances=2"}}' \ 12 | --configuration-overrides '{ 13 | "applicationConfiguration": [ 14 | { 15 | "classification": "spark-defaults", 16 | "properties": { 17 | "spark.serializer": "org.apache.spark.serializer.KryoSerializer", 18 | "spark.sql.hive.convertMetastoreParquet": "false", 19 | "spark.hive.metastore.uris": "thrift://localhost:9083", 20 | "spark.kubernetes.driver.podTemplateFile": "s3://'$S3BUCKET'/app_code/job/sidecar_hms_pod_template.yaml" 21 | }} 22 | ], 23 | "monitoringConfiguration": { 24 | "s3MonitoringConfiguration": {"logUri": "s3://'$S3BUCKET'/elasticmapreduce/emr-containers"}}}' -------------------------------------------------------------------------------- /deployment/app_code/job/sidecar_submit-job-via-thrift_eks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # test HMS sidecar on EKS 3 | aws emr-containers start-job-run \ 4 | --virtual-cluster-id $VIRTUAL_CLUSTER_ID \ 5 | --name sidecar-hms \ 6 | --execution-role-arn $EMR_ROLE_ARN \ 7 | --release-label emr-6.3.0-latest \ 8 | --job-driver '{ 9 | "sparkSubmitJobDriver": { 10 | "entryPoint": "s3://'$S3BUCKET'/app_code/job/sidecar_hivethrift_eks.py", 11 | "entryPointArguments":["s3://'$S3BUCKET'"], 12 | "sparkSubmitParameters": "--conf spark.driver.cores=1 --conf spark.executor.memory=4G --conf spark.driver.memory=1G --conf spark.executor.cores=2"}}' \ 13 | --configuration-overrides '{ 14 | "applicationConfiguration": [ 15 | { 16 | "classification": "spark-defaults", 17 | "properties": { 18 | "spark.hive.metastore.uris": "thrift://localhost:9083", 19 | "spark.kubernetes.driver.podTemplateFile": "s3://'$S3BUCKET'/app_code/job/sidecar_hms_pod_template.yaml" 20 | } 21 | } 22 | ], 23 | "monitoringConfiguration": { 24 | "s3MonitoringConfiguration": {"logUri": "s3://'$S3BUCKET'/elasticmapreduce/emr-containers"}}}' 25 | -------------------------------------------------------------------------------- /deployment/app_code/job/submit-hudi-glue.sh: -------------------------------------------------------------------------------- 1 | 2 | aws emr-containers start-job-run \ 3 | --virtual-cluster-id $VIRTUAL_CLUSTER_ID \ 4 | --name hudi-test1 \ 5 | --execution-role-arn $EMR_ROLE_ARN \ 6 | --release-label emr-6.3.0-latest \ 7 | --job-driver '{ 8 | "sparkSubmitJobDriver": { 9 | "entryPoint": "s3://'$S3BUCKET'/app_code/job/HudiEMRonEKS.py", 10 | "entryPointArguments":["s3://'$S3BUCKET'"], 11 | "sparkSubmitParameters": "--jars https://repo1.maven.org/maven2/org/apache/hudi/hudi-spark3-bundle_2.12/0.9.0/hudi-spark3-bundle_2.12-0.9.0.jar --conf spark.executor.cores=1 --conf spark.executor.instances=2"}}' \ 12 | --configuration-overrides '{ 13 | "applicationConfiguration": [ 14 | { 15 | "classification": "spark-defaults", 16 | "properties": { 17 | "spark.serializer": "org.apache.spark.serializer.KryoSerializer", 18 | "spark.sql.hive.convertMetastoreParquet": "false", 19 | "spark.hadoop.hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory" 20 | }} 21 | ], 22 | "monitoringConfiguration": { 23 | "s3MonitoringConfiguration": {"logUri": "s3://'$S3BUCKET'/elasticmapreduce/emr-containers"}}}' -------------------------------------------------------------------------------- /deployment/app_code/job/submit-job-via-jdbc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | aws emr-containers start-job-run \ 4 | --virtual-cluster-id $VIRTUAL_CLUSTER_ID \ 5 | --name spark-hive-via-jdbc \ 6 | --execution-role-arn $EMR_ROLE_ARN \ 7 | --release-label emr-6.3.0-latest \ 8 | --job-driver '{ 9 | "sparkSubmitJobDriver": { 10 | "entryPoint": "s3://'$S3BUCKET'/app_code/job/hivejdbc.py", 11 | "entryPointArguments":["s3://'$S3BUCKET'"], 12 | "sparkSubmitParameters": "--conf spark.jars.packages=mysql:mysql-connector-java:8.0.28 --conf spark.driver.cores=1 --conf spark.executor.memory=4G --conf spark.driver.memory=1G --conf spark.executor.cores=2"}}' \ 13 | --configuration-overrides '{ 14 | "applicationConfiguration": [ 15 | { 16 | "classification": "spark-defaults", 17 | "properties": { 18 | "spark.dynamicAllocation.enabled":"false", 19 | "spark.hadoop.javax.jdo.option.ConnectionDriverName": "com.mysql.cj.jdbc.Driver", 20 | "spark.hadoop.javax.jdo.option.ConnectionUserName": "'$USER_NAME'", 21 | "spark.hadoop.javax.jdo.option.ConnectionPassword": "'$PASSWORD'", 22 | "spark.hadoop.javax.jdo.option.ConnectionURL": "jdbc:mysql://'$HOST_NAME':3306/'$DB_NAME'" 23 | } 24 | } 25 | ], 26 | "monitoringConfiguration": { 27 | "s3MonitoringConfiguration": {"logUri": "s3://'$S3BUCKET'/elasticmapreduce/emr-containers"}}}' -------------------------------------------------------------------------------- /deployment/app_code/job/submit-job-via-thrift_eks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # test HMS on EKS 3 | aws emr-containers start-job-run \ 4 | --virtual-cluster-id $VIRTUAL_CLUSTER_ID \ 5 | --name spark-hive-via-thrift-EKS \ 6 | --execution-role-arn $EMR_ROLE_ARN \ 7 | --release-label emr-6.3.0-latest \ 8 | --job-driver '{ 9 | "sparkSubmitJobDriver": { 10 | "entryPoint": "s3://'$S3BUCKET'/app_code/job/hivethrift_eks.py", 11 | "entryPointArguments":["s3://'$S3BUCKET'"], 12 | "sparkSubmitParameters": "--conf spark.driver.cores=1 --conf spark.executor.memory=4G --conf spark.driver.memory=1G --conf spark.executor.cores=2"}}' \ 13 | --configuration-overrides '{ 14 | "monitoringConfiguration": { 15 | "s3MonitoringConfiguration": {"logUri": "s3://'$S3BUCKET'/elasticmapreduce/emr-containers"}}}' 16 | -------------------------------------------------------------------------------- /deployment/app_code/job/submit-job-via-thrift_emr.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # reuse HMS on EMR on EC2 3 | export STACK_NAME=HiveEMRonEKS 4 | export EMR_MASTER_DNS_NAME=$(aws ec2 describe-instances --filter Name=tag:project,Values=$STACK_NAME Name=tag:aws:elasticmapreduce:instance-group-role,Values=MASTER --query Reservations[].Instances[].PrivateDnsName --output text | xargs) 5 | 6 | aws emr-containers start-job-run \ 7 | --virtual-cluster-id $VIRTUAL_CLUSTER_ID \ 8 | --name spark-hive-via-thrift-EMR \ 9 | --execution-role-arn $EMR_ROLE_ARN \ 10 | --release-label emr-6.3.0-latest \ 11 | --job-driver '{ 12 | "sparkSubmitJobDriver": { 13 | "entryPoint": "s3://'$S3BUCKET'/app_code/job/hivethrift_emr.py", 14 | "entryPointArguments":["s3://'$S3BUCKET'","'$EMR_MASTER_DNS_NAME'"], 15 | "sparkSubmitParameters": "--conf spark.driver.cores=1 --conf spark.executor.memory=4G --conf spark.driver.memory=1G --conf spark.executor.cores=2"}}' \ 16 | --configuration-overrides '{ 17 | "monitoringConfiguration": { 18 | "s3MonitoringConfiguration": {"logUri": "s3://'$S3BUCKET'/elasticmapreduce/emr-containers"}}}' 19 | -------------------------------------------------------------------------------- /deployment/app_code/job/submit-sparksql.sh: -------------------------------------------------------------------------------- 1 | # "spark.hive.metastore.uris": "thrift://hive-metastore:9083" 2 | aws emr-containers start-job-run \ 3 | --virtual-cluster-id $VIRTUAL_CLUSTER_ID \ 4 | --name sparksql-wh-rds \ 5 | --execution-role-arn $EMR_ROLE_ARN \ 6 | --release-label emr-6.8.0-latest \ 7 | --job-driver '{ 8 | "sparkSqlJobDriver": { 9 | "entryPoint": "s3://'$S3BUCKET'/app_code/job/set-of-hive-queries.sql", 10 | "sparkSqlParameters": "-hivevar S3Bucket='$S3BUCKET' -hivevar Key_ID=238"}}' \ 11 | --configuration-overrides '{ 12 | "applicationConfiguration": [ 13 | { 14 | "classification": "spark-defaults", 15 | "properties": { 16 | "spark.hadoop.hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory", 17 | "spark.sql.warehouse.dir": "s3://'$S3BUCKET'/warehouse/" 18 | } 19 | } 20 | ], 21 | "monitoringConfiguration": { 22 | "s3MonitoringConfiguration": {"logUri": "s3://'$S3BUCKET'/elasticmapreduce/emr-containers"}}}' 23 | -------------------------------------------------------------------------------- /deployment/app_code/post-deployment.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | export stack_name="${1:-HiveEMRonEKS}" 4 | 5 | # 0. Setup AWS environment 6 | echo "===================================" 7 | echo "Make sure you have 'jq' installed" 8 | echo "Setup AWS environment ..." 9 | echo "===================================" 10 | 11 | export secret_name=$(aws cloudformation describe-stacks --stack-name $stack_name --query "Stacks[0].Outputs[?OutputKey=='HiveSecretName'].OutputValue" --output text) 12 | export HOST_NAME=$(aws secretsmanager get-secret-value --secret-id $secret_name --query SecretString --output text | jq -r '.host') 13 | export PASSWORD=$(aws secretsmanager get-secret-value --secret-id $secret_name --query SecretString --output text | jq -r '.password') 14 | export DB_NAME=$(aws secretsmanager get-secret-value --secret-id $secret_name --query SecretString --output text | jq -r '.dbname') 15 | export USER_NAME=$(aws secretsmanager get-secret-value --secret-id $secret_name --query SecretString --output text | jq -r '.username') 16 | export VIRTUAL_CLUSTER_ID=$(aws cloudformation describe-stacks --stack-name $stack_name --query "Stacks[0].Outputs[?OutputKey=='VirtualClusterId'].OutputValue" --output text) 17 | export EMR_ROLE_ARN=$(aws cloudformation describe-stacks --stack-name $stack_name --query "Stacks[0].Outputs[?OutputKey=='EMRExecRoleARN'].OutputValue" --output text) 18 | export S3BUCKET=$(aws cloudformation describe-stacks --stack-name $stack_name --query "Stacks[0].Outputs[?OutputKey=='CODEBUCKET'].OutputValue" --output text) 19 | 20 | echo "export HOST_NAME=${HOST_NAME}" | tee -a ~/.bash_profile 21 | echo "export PASSWORD=${PASSWORD}" | tee -a ~/.bash_profile 22 | echo "export DB_NAME=${DB_NAME}" | tee -a ~/.bash_profile 23 | echo "export USER_NAME=${USER_NAME}" | tee -a ~/.bash_profile 24 | echo "export VIRTUAL_CLUSTER_ID=${VIRTUAL_CLUSTER_ID}" | tee -a ~/.bash_profile 25 | echo "export EMR_ROLE_ARN=${EMR_ROLE_ARN}" | tee -a ~/.bash_profile 26 | echo "export S3BUCKET=${S3BUCKET}" | tee -a ~/.bash_profile 27 | 28 | # 1. connect to the EKS newly created 29 | echo "===================================" 30 | echo "Make sure you have 'kubectl' installed" 31 | echo "Testing EKS connection..." 32 | echo "===================================" 33 | echo `aws cloudformation describe-stacks --stack-name $stack_name --query "Stacks[0].Outputs[?starts_with(OutputKey,'eksclusterEKSConfig')].OutputValue" --output text` | bash 34 | kubectl get svc 35 | 36 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/.bin/cdk: -------------------------------------------------------------------------------- 1 | ../aws-cdk/bin/cdk -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/.package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cdk-solution-helper", 3 | "version": "0.1.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "node_modules/aws-cdk": { 8 | "version": "2.154.1", 9 | "resolved": "https://registry.npmjs.org/aws-cdk/-/aws-cdk-2.154.1.tgz", 10 | "integrity": "sha512-yJoLTo+fUHRLD4YQMt/QoOPgiT/daci4I5KcaDK8Cx2fWA0Z3h5U9+bWS3ah+8OeZ91fciNCwt6Yt/0p+cp2GQ==", 11 | "license": "Apache-2.0", 12 | "bin": { 13 | "cdk": "bin/cdk" 14 | }, 15 | "engines": { 16 | "node": ">= 14.15.0" 17 | }, 18 | "optionalDependencies": { 19 | "fsevents": "2.3.2" 20 | } 21 | }, 22 | "node_modules/fs": { 23 | "version": "0.0.1-security", 24 | "resolved": "https://registry.npmjs.org/fs/-/fs-0.0.1-security.tgz", 25 | "integrity": "sha1-invTcYa23d84E/I4WLV+yq9eQdQ=", 26 | "dev": true 27 | }, 28 | "node_modules/fsevents": { 29 | "version": "2.3.2", 30 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 31 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 32 | "hasInstallScript": true, 33 | "optional": true, 34 | "os": [ 35 | "darwin" 36 | ], 37 | "engines": { 38 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 39 | } 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/NOTICE: -------------------------------------------------------------------------------- 1 | AWS Cloud Development Kit (AWS CDK) 2 | Copyright 2018-2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | 16 | Third party attributions of this package can be found in the THIRD_PARTY_LICENSES file -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/bin/cdk: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | require('./cdk.js'); 3 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/bin/cdk.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/bin/cdk.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const lib_1 = require("../lib"); 4 | (0, lib_1.cli)(); 5 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsZ0NBQTZCO0FBRTdCLElBQUEsU0FBRyxHQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbGkgfSBmcm9tICcuLi9saWInO1xuXG5jbGkoKTtcbiJdfQ== -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/build-info.json: -------------------------------------------------------------------------------- 1 | { 2 | "comment": "Generated at 2024-08-23T05:14:32Z by generate.sh", 3 | "commit": "febce9d" 4 | } 5 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/aws-auth/account-cache.d.ts: -------------------------------------------------------------------------------- 1 | import { Account } from './sdk-provider'; 2 | /** 3 | * Disk cache which maps access key IDs to account IDs. 4 | * Usage: 5 | * cache.get(accessKey) => accountId | undefined 6 | * cache.put(accessKey, accountId) 7 | */ 8 | export declare class AccountAccessKeyCache { 9 | /** 10 | * Max number of entries in the cache, after which the cache will be reset. 11 | */ 12 | static readonly MAX_ENTRIES = 1000; 13 | private readonly cacheFile; 14 | /** 15 | * @param filePath Path to the cache file 16 | */ 17 | constructor(filePath?: string); 18 | /** 19 | * Tries to fetch the account ID from cache. If it's not in the cache, invokes 20 | * the resolver function which should retrieve the account ID and return it. 21 | * Then, it will be stored into disk cache returned. 22 | * 23 | * Example: 24 | * 25 | * const accountId = cache.fetch(accessKey, async () => { 26 | * return await fetchAccountIdFromSomewhere(accessKey); 27 | * }); 28 | * 29 | * @param accessKeyId 30 | * @param resolver 31 | */ 32 | fetch(accessKeyId: string, resolver: () => Promise): Promise; 33 | /** Get the account ID from an access key or undefined if not in cache */ 34 | get(accessKeyId: string): Promise; 35 | /** Put a mapping between access key and account ID */ 36 | put(accessKeyId: string, account: Account): Promise; 37 | private loadMap; 38 | private saveMap; 39 | } 40 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/aws-auth/aws-sdk-inifile.d.ts: -------------------------------------------------------------------------------- 1 | import * as AWS from 'aws-sdk'; 2 | /** 3 | * Hack-fix 4 | * 5 | * There are a number of issues in the upstream version of SharedIniFileCredentials 6 | * that need fixing: 7 | * 8 | * 1. The upstream aws-sdk does not support the 'credential_source' option. Meaning credentials 9 | * for assume-role cannot be fetched using EC2/ESC metadata. 10 | * 11 | * 2. The upstream aws-sdk does not support SSO profiles as the source of RoleProfiles, 12 | * because it will always use the `SharedIniFileCredentials` provider to load 13 | * source credentials, but in order to support SSO profiles you must use a 14 | * separate class (`SsoCredentials). 15 | */ 16 | export declare class PatchedSharedIniFileCredentials extends AWS.SharedIniFileCredentials { 17 | private profile; 18 | private filename; 19 | private disableAssumeRole; 20 | private options; 21 | private roleArn; 22 | private httpOptions?; 23 | private tokenCodeFn?; 24 | loadRoleProfile(creds: Record>, roleProfile: Record, callback: (err?: Error, data?: any) => void): void; 25 | private sourceProfileCredentials; 26 | private credentialSourceCredentials; 27 | } 28 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/aws-auth/awscli-compatible.d.ts: -------------------------------------------------------------------------------- 1 | import * as AWS from 'aws-sdk'; 2 | /** 3 | * Behaviors to match AWS CLI 4 | * 5 | * See these links: 6 | * 7 | * https://docs.aws.amazon.com/cli/latest/topic/config-vars.html 8 | * https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html 9 | */ 10 | export declare class AwsCliCompatible { 11 | /** 12 | * Build an AWS CLI-compatible credential chain provider 13 | * 14 | * This is similar to the default credential provider chain created by the SDK 15 | * except: 16 | * 17 | * 1. Accepts profile argument in the constructor (the SDK must have it prepopulated 18 | * in the environment). 19 | * 2. Conditionally checks EC2 credentials, because checking for EC2 20 | * credentials on a non-EC2 machine may lead to long delays (in the best case) 21 | * or an exception (in the worst case). 22 | * 3. Respects $AWS_SHARED_CREDENTIALS_FILE. 23 | * 4. Respects $AWS_DEFAULT_PROFILE in addition to $AWS_PROFILE. 24 | */ 25 | static credentialChain(options?: CredentialChainOptions): Promise; 26 | /** 27 | * Return the default region in a CLI-compatible way 28 | * 29 | * Mostly copied from node_loader.js, but with the following differences to make it 30 | * AWS CLI compatible: 31 | * 32 | * 1. Takes a profile name as an argument (instead of forcing it to be taken from $AWS_PROFILE). 33 | * This requires having made a copy of the SDK's `SharedIniFile` (the original 34 | * does not take an argument). 35 | * 2. $AWS_DEFAULT_PROFILE and $AWS_DEFAULT_REGION are also respected. 36 | * 37 | * Lambda and CodeBuild set the $AWS_REGION variable. 38 | */ 39 | static region(options?: RegionOptions): Promise; 40 | } 41 | export interface CredentialChainOptions { 42 | readonly profile?: string; 43 | readonly ec2instance?: boolean; 44 | readonly containerCreds?: boolean; 45 | readonly httpOptions?: AWS.HTTPOptions; 46 | } 47 | export interface RegionOptions { 48 | readonly profile?: string; 49 | readonly ec2instance?: boolean; 50 | } 51 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/aws-auth/credential-plugins.d.ts: -------------------------------------------------------------------------------- 1 | import { Mode } from './credentials'; 2 | /** 3 | * Cache for credential providers. 4 | * 5 | * Given an account and an operating mode (read or write) will return an 6 | * appropriate credential provider for credentials for the given account. The 7 | * credential provider will be cached so that multiple AWS clients for the same 8 | * environment will not make multiple network calls to obtain credentials. 9 | * 10 | * Will use default credentials if they are for the right account; otherwise, 11 | * all loaded credential provider plugins will be tried to obtain credentials 12 | * for the given account. 13 | */ 14 | export declare class CredentialPlugins { 15 | private readonly cache; 16 | fetchCredentialsFor(awsAccountId: string, mode: Mode): Promise; 17 | get availablePluginNames(): string[]; 18 | private lookupCredentials; 19 | } 20 | export interface PluginCredentials { 21 | readonly credentials: AWS.Credentials; 22 | readonly pluginName: string; 23 | } 24 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/aws-auth/credentials.d.ts: -------------------------------------------------------------------------------- 1 | export { Mode } from '../plugin'; 2 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/aws-auth/credentials.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.Mode = void 0; 4 | // Re-export this here because it used to be here and I don't want 5 | // to change imports too much. 6 | var plugin_1 = require("../plugin"); 7 | Object.defineProperty(exports, "Mode", { enumerable: true, get: function () { return plugin_1.Mode; } }); 8 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlZGVudGlhbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjcmVkZW50aWFscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxrRUFBa0U7QUFDbEUsOEJBQThCO0FBQzlCLG9DQUFpQztBQUF4Qiw4RkFBQSxJQUFJLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBSZS1leHBvcnQgdGhpcyBoZXJlIGJlY2F1c2UgaXQgdXNlZCB0byBiZSBoZXJlIGFuZCBJIGRvbid0IHdhbnRcbi8vIHRvIGNoYW5nZSBpbXBvcnRzIHRvbyBtdWNoLlxuZXhwb3J0IHsgTW9kZSB9IGZyb20gJy4uL3BsdWdpbic7Il19 -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/aws-auth/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './sdk'; 2 | export * from './sdk-provider'; 3 | export * from './credentials'; 4 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/aws-auth/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./sdk"), exports); 18 | __exportStar(require("./sdk-provider"), exports); 19 | __exportStar(require("./credentials"), exports); 20 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0NBQXNCO0FBQ3RCLGlEQUErQjtBQUMvQixnREFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Nkayc7XG5leHBvcnQgKiBmcm9tICcuL3Nkay1wcm92aWRlcic7XG5leHBvcnQgKiBmcm9tICcuL2NyZWRlbnRpYWxzJzsiXX0= -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/aws-auth/sdk_ini_file.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * A reimplementation of JS AWS SDK's SharedIniFile class 3 | * 4 | * We need that class to parse the ~/.aws/config file to determine the correct 5 | * region at runtime, but unfortunately it is private upstream. 6 | */ 7 | export interface SharedIniFileOptions { 8 | isConfig?: boolean; 9 | filename?: string; 10 | } 11 | export declare class SharedIniFile { 12 | private readonly isConfig; 13 | private readonly filename; 14 | private parsedContents?; 15 | constructor(options?: SharedIniFileOptions); 16 | getProfile(profile: string): Promise<{ 17 | [key: string]: string; 18 | }>; 19 | private getDefaultFilepath; 20 | private ensureFileLoaded; 21 | } 22 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/bootstrap/bootstrap-environment.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxapi from '@aws-cdk/cx-api'; 2 | import { BootstrapEnvironmentOptions } from './bootstrap-props'; 3 | import { SdkProvider } from '../aws-auth'; 4 | import { DeployStackResult } from '../deploy-stack'; 5 | export type BootstrapSource = { 6 | source: 'legacy'; 7 | } | { 8 | source: 'default'; 9 | } | { 10 | source: 'custom'; 11 | templateFile: string; 12 | }; 13 | export declare class Bootstrapper { 14 | private readonly source; 15 | constructor(source: BootstrapSource); 16 | bootstrapEnvironment(environment: cxapi.Environment, sdkProvider: SdkProvider, options?: BootstrapEnvironmentOptions): Promise; 17 | showTemplate(json: boolean): Promise; 18 | /** 19 | * Deploy legacy bootstrap stack 20 | * 21 | */ 22 | private legacyBootstrap; 23 | /** 24 | * Deploy CI/CD-ready bootstrap stack from template 25 | * 26 | */ 27 | private modernBootstrap; 28 | private getPolicyName; 29 | private getExamplePermissionsBoundary; 30 | private validatePolicyName; 31 | private customBootstrap; 32 | private loadTemplate; 33 | } 34 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/bootstrap/deploy-bootstrap.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxapi from '@aws-cdk/cx-api'; 2 | import { BootstrapEnvironmentOptions } from './bootstrap-props'; 3 | import { SdkProvider, ISDK } from '../aws-auth'; 4 | import { DeployStackResult } from '../deploy-stack'; 5 | import { ToolkitInfo } from '../toolkit-info'; 6 | /** 7 | * A class to hold state around stack bootstrapping 8 | * 9 | * This class exists so we can break bootstrapping into 2 phases: 10 | * 11 | * ```ts 12 | * const current = BootstrapStack.lookup(...); 13 | * // ... 14 | * current.update(newTemplate, ...); 15 | * ``` 16 | * 17 | * And do something in between the two phases (such as look at the 18 | * current bootstrap stack and doing something intelligent). 19 | */ 20 | export declare class BootstrapStack { 21 | private readonly sdkProvider; 22 | private readonly sdk; 23 | private readonly resolvedEnvironment; 24 | private readonly toolkitStackName; 25 | private readonly currentToolkitInfo; 26 | static lookup(sdkProvider: SdkProvider, environment: cxapi.Environment, toolkitStackName?: string): Promise; 27 | protected constructor(sdkProvider: SdkProvider, sdk: ISDK, resolvedEnvironment: cxapi.Environment, toolkitStackName: string, currentToolkitInfo: ToolkitInfo); 28 | get parameters(): Record; 29 | get terminationProtection(): boolean | undefined; 30 | partition(): Promise; 31 | /** 32 | * Perform the actual deployment of a bootstrap stack, given a template and some parameters 33 | */ 34 | update(template: any, parameters: Record, options: Omit): Promise; 35 | } 36 | export declare function bootstrapVersionFromTemplate(template: any): number; 37 | export declare function bootstrapVariantFromTemplate(template: any): string; 38 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/bootstrap/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './bootstrap-environment'; 2 | export * from './bootstrap-props'; 3 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/bootstrap/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./bootstrap-environment"), exports); 18 | __exportStar(require("./bootstrap-props"), exports); 19 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMERBQXdDO0FBQ3hDLG9EQUFrQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYm9vdHN0cmFwLWVudmlyb25tZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYm9vdHN0cmFwLXByb3BzJzsiXX0= -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/bootstrap/legacy-template.d.ts: -------------------------------------------------------------------------------- 1 | import { BootstrappingParameters } from './bootstrap-props'; 2 | export declare function legacyBootstrapTemplate(params: BootstrappingParameters): any; 3 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/cxapp/cloud-executable.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxapi from '@aws-cdk/cx-api'; 2 | import { CloudAssembly } from './cloud-assembly'; 3 | import { Configuration } from '../../settings'; 4 | import { SdkProvider } from '../aws-auth'; 5 | /** 6 | * @returns output directory 7 | */ 8 | export type Synthesizer = (aws: SdkProvider, config: Configuration) => Promise; 9 | export interface CloudExecutableProps { 10 | /** 11 | * Application configuration (settings and context) 12 | */ 13 | configuration: Configuration; 14 | /** 15 | * AWS object (used by synthesizer and contextprovider) 16 | */ 17 | sdkProvider: SdkProvider; 18 | /** 19 | * Callback invoked to synthesize the actual stacks 20 | */ 21 | synthesizer: Synthesizer; 22 | } 23 | /** 24 | * Represent the Cloud Executable and the synthesis we can do on it 25 | */ 26 | export declare class CloudExecutable { 27 | private readonly props; 28 | private _cloudAssembly?; 29 | constructor(props: CloudExecutableProps); 30 | /** 31 | * Return whether there is an app command from the configuration 32 | */ 33 | get hasApp(): boolean; 34 | /** 35 | * Synthesize a set of stacks. 36 | * 37 | * @param cacheCloudAssembly whether to cache the Cloud Assembly after it has been first synthesized. 38 | * This is 'true' by default, and only set to 'false' for 'cdk watch', 39 | * which needs to re-synthesize the Assembly each time it detects a change to the project files 40 | */ 41 | synthesize(cacheCloudAssembly?: boolean): Promise; 42 | private doSynthesize; 43 | /** 44 | * Modify the templates in the assembly in-place to add metadata resource declarations 45 | */ 46 | private addMetadataResource; 47 | private get canLookup(); 48 | } 49 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/cxapp/environments.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxapi from '@aws-cdk/cx-api'; 2 | import { StackCollection } from './cloud-assembly'; 3 | import { SdkProvider } from '../aws-auth'; 4 | export declare function looksLikeGlob(environment: string): boolean; 5 | export declare function globEnvironmentsFromStacks(stacks: StackCollection, environmentGlobs: string[], sdk: SdkProvider): Promise; 6 | /** 7 | * Given a set of "/" strings, construct environments for them 8 | */ 9 | export declare function environmentsFromDescriptors(envSpecs: string[]): cxapi.Environment[]; 10 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/cxapp/exec.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxapi from '@aws-cdk/cx-api'; 2 | import { Configuration } from '../../settings'; 3 | import { SdkProvider } from '../aws-auth'; 4 | import { ILock } from '../util/rwlock'; 5 | export interface ExecProgramResult { 6 | readonly assembly: cxapi.CloudAssembly; 7 | readonly lock: ILock; 8 | } 9 | /** Invokes the cloud executable and returns JSON output */ 10 | export declare function execProgram(aws: SdkProvider, config: Configuration): Promise; 11 | /** 12 | * Creates an assembly with error handling 13 | */ 14 | export declare function createAssembly(appDir: string): cxapi.CloudAssembly; 15 | /** 16 | * If we don't have region/account defined in context, we fall back to the default SDK behavior 17 | * where region is retrieved from ~/.aws/config and account is based on default credentials provider 18 | * chain and then STS is queried. 19 | * 20 | * This is done opportunistically: for example, if we can't access STS for some reason or the region 21 | * is not configured, the context value will be 'null' and there could failures down the line. In 22 | * some cases, synthesis does not require region/account information at all, so that might be perfectly 23 | * fine in certain scenarios. 24 | * 25 | * @param context The context key/value bash. 26 | */ 27 | export declare function prepareDefaultEnvironment(aws: SdkProvider): Promise<{ 28 | [key: string]: string; 29 | }>; 30 | /** 31 | * Settings related to synthesis are read from context. 32 | * The merging of various configuration sources like cli args or cdk.json has already happened. 33 | * We now need to set the final values to the context. 34 | */ 35 | export declare function prepareContext(config: Configuration, env: { 36 | [key: string]: string | undefined; 37 | }): Promise<{ 38 | [key: string]: any; 39 | }>; 40 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/hotswap-deployments.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxapi from '@aws-cdk/cx-api'; 2 | import { SdkProvider } from './aws-auth'; 3 | import { DeployStackResult } from './deploy-stack'; 4 | import { HotswapMode } from './hotswap/common'; 5 | import { CloudFormationStack } from './util/cloudformation'; 6 | /** 7 | * Perform a hotswap deployment, 8 | * short-circuiting CloudFormation if possible. 9 | * If it's not possible to short-circuit the deployment 10 | * (because the CDK Stack contains changes that cannot be deployed without CloudFormation), 11 | * returns `undefined`. 12 | */ 13 | export declare function tryHotswapDeployment(sdkProvider: SdkProvider, assetParams: { 14 | [key: string]: string; 15 | }, cloudFormationStack: CloudFormationStack, stackArtifact: cxapi.CloudFormationStackArtifact, hotswapMode: HotswapMode): Promise; 16 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/hotswap/code-build-projects.d.ts: -------------------------------------------------------------------------------- 1 | import { ChangeHotswapResult, HotswappableChangeCandidate } from './common'; 2 | import { EvaluateCloudFormationTemplate } from '../evaluate-cloudformation-template'; 3 | export declare function isHotswappableCodeBuildProjectChange(logicalId: string, change: HotswappableChangeCandidate, evaluateCfnTemplate: EvaluateCloudFormationTemplate): Promise; 4 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/hotswap/ecs-services.d.ts: -------------------------------------------------------------------------------- 1 | import { ChangeHotswapResult, HotswappableChangeCandidate } from './common'; 2 | import { EvaluateCloudFormationTemplate } from '../evaluate-cloudformation-template'; 3 | export declare function isHotswappableEcsServiceChange(logicalId: string, change: HotswappableChangeCandidate, evaluateCfnTemplate: EvaluateCloudFormationTemplate): Promise; 4 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/hotswap/lambda-functions.d.ts: -------------------------------------------------------------------------------- 1 | import { ChangeHotswapResult, HotswappableChangeCandidate } from './common'; 2 | import { EvaluateCloudFormationTemplate } from '../evaluate-cloudformation-template'; 3 | export declare function isHotswappableLambdaFunctionChange(logicalId: string, change: HotswappableChangeCandidate, evaluateCfnTemplate: EvaluateCloudFormationTemplate): Promise; 4 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/hotswap/s3-bucket-deployments.d.ts: -------------------------------------------------------------------------------- 1 | import { ChangeHotswapResult, HotswappableChangeCandidate } from './common'; 2 | import { EvaluateCloudFormationTemplate } from '../evaluate-cloudformation-template'; 3 | /** 4 | * This means that the value is required to exist by CloudFormation's Custom Resource API (or our S3 Bucket Deployment Lambda's API) 5 | * but the actual value specified is irrelevant 6 | */ 7 | export declare const REQUIRED_BY_CFN = "required-to-be-present-by-cfn"; 8 | export declare function isHotswappableS3BucketDeploymentChange(_logicalId: string, change: HotswappableChangeCandidate, evaluateCfnTemplate: EvaluateCloudFormationTemplate): Promise; 9 | export declare function skipChangeForS3DeployCustomResourcePolicy(iamPolicyLogicalId: string, change: HotswappableChangeCandidate, evaluateCfnTemplate: EvaluateCloudFormationTemplate): Promise; 10 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/hotswap/stepfunctions-state-machines.d.ts: -------------------------------------------------------------------------------- 1 | import { ChangeHotswapResult, HotswappableChangeCandidate } from './common'; 2 | import { EvaluateCloudFormationTemplate } from '../evaluate-cloudformation-template'; 3 | export declare function isHotswappableStateMachineChange(logicalId: string, change: HotswappableChangeCandidate, evaluateCfnTemplate: EvaluateCloudFormationTemplate): Promise; 4 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './aws-auth/credentials'; 2 | export * from './bootstrap'; 3 | export * from './deploy-stack'; 4 | export * from './toolkit-info'; 5 | export * from './aws-auth'; 6 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./aws-auth/credentials"), exports); 18 | __exportStar(require("./bootstrap"), exports); 19 | __exportStar(require("./deploy-stack"), exports); 20 | __exportStar(require("./toolkit-info"), exports); 21 | __exportStar(require("./aws-auth"), exports); 22 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseURBQXVDO0FBQ3ZDLDhDQUE0QjtBQUM1QixpREFBK0I7QUFDL0IsaURBQStCO0FBQy9CLDZDQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXdzLWF1dGgvY3JlZGVudGlhbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9ib290c3RyYXAnO1xuZXhwb3J0ICogZnJvbSAnLi9kZXBsb3ktc3RhY2snO1xuZXhwb3J0ICogZnJvbSAnLi90b29sa2l0LWluZm8nO1xuZXhwb3J0ICogZnJvbSAnLi9hd3MtYXV0aCc7XG4iXX0= -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/logs/find-cloudwatch-logs.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxapi from '@aws-cdk/cx-api'; 2 | import { ISDK, SdkProvider } from '../aws-auth'; 3 | /** 4 | * Configuration needed to monitor CloudWatch Log Groups 5 | * found in a given CloudFormation Stack 6 | */ 7 | export interface FoundLogGroupsResult { 8 | /** 9 | * The resolved environment (account/region) that the log 10 | * groups are deployed in 11 | */ 12 | readonly env: cxapi.Environment; 13 | /** 14 | * The SDK that can be used to read events from the CloudWatch 15 | * Log Groups in the given environment 16 | */ 17 | readonly sdk: ISDK; 18 | /** 19 | * The names of the relevant CloudWatch Log Groups 20 | * in the given CloudFormation template 21 | */ 22 | readonly logGroupNames: string[]; 23 | } 24 | export declare function findCloudWatchLogGroups(sdkProvider: SdkProvider, stackArtifact: cxapi.CloudFormationStackArtifact): Promise; 25 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/logs/logs-monitor.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxapi from '@aws-cdk/cx-api'; 2 | import { ISDK } from '../aws-auth'; 3 | export declare class CloudWatchLogEventMonitor { 4 | /** 5 | * Determines which events not to display 6 | */ 7 | private startTime; 8 | /** 9 | * Map of environment (account:region) to LogGroupsAccessSettings 10 | */ 11 | private readonly envsLogGroupsAccessSettings; 12 | private active; 13 | constructor(startTime?: Date); 14 | /** 15 | * resume reading/printing events 16 | */ 17 | activate(): void; 18 | /** 19 | * deactivates the monitor so no new events are read 20 | * use case for this is when we are in the middle of performing a deployment 21 | * and don't want to interweave all the logs together with the CFN 22 | * deployment logs 23 | * 24 | * Also resets the start time to be when the new deployment was triggered 25 | * and clears the list of tracked log groups 26 | */ 27 | deactivate(): void; 28 | /** 29 | * Adds CloudWatch log groups to read log events from. 30 | * Since we could be watching multiple stacks that deploy to 31 | * multiple environments (account+region), we need to store a list of log groups 32 | * per env along with the SDK object that has access to read from 33 | * that environment. 34 | */ 35 | addLogGroups(env: cxapi.Environment, sdk: ISDK, logGroupNames: string[]): void; 36 | private scheduleNextTick; 37 | private tick; 38 | /** 39 | * Reads all new log events from a set of CloudWatch Log Groups 40 | * in parallel 41 | */ 42 | private readNewEvents; 43 | /** 44 | * Print out a cloudwatch event 45 | */ 46 | private print; 47 | /** 48 | * Reads all new log events from a CloudWatch Log Group 49 | * starting at either the time the hotswap was triggered or 50 | * when the last event was read on the previous tick 51 | */ 52 | private readEventsFromLogGroup; 53 | } 54 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/toolkit-info.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxapi from '@aws-cdk/cx-api'; 2 | import { ISDK } from './aws-auth'; 3 | import { CloudFormationStack } from './util/cloudformation'; 4 | export declare const DEFAULT_TOOLKIT_STACK_NAME = "CDKToolkit"; 5 | /** 6 | * Information on the Bootstrap stack of the environment we're deploying to. 7 | * 8 | * This class serves to: 9 | * 10 | * - Inspect the bootstrap stack, and return various properties of it for successful 11 | * asset deployment (in case of legacy-synthesized stacks). 12 | * - Validate the version of the target environment, and nothing else (in case of 13 | * default-synthesized stacks). 14 | * 15 | * An object of this type might represent a bootstrap stack that could not be found. 16 | * This is not an issue unless any members are used that require the bootstrap stack 17 | * to have been found, in which case an error is thrown (default-synthesized stacks 18 | * should never run into this as they don't need information from the bootstrap 19 | * stack, all information is already encoded into the Cloud Assembly Manifest). 20 | * 21 | * Nevertheless, an instance of this class exists to serve as a cache for SSM 22 | * parameter lookups (otherwise, the "bootstrap stack version" parameter would 23 | * need to be read repeatedly). 24 | * 25 | * Called "ToolkitInfo" for historical reasons. 26 | * 27 | */ 28 | export declare abstract class ToolkitInfo { 29 | static determineName(overrideName?: string): string; 30 | static lookup(environment: cxapi.Environment, sdk: ISDK, stackName: string | undefined): Promise; 31 | static fromStack(stack: CloudFormationStack): ToolkitInfo; 32 | static bootstrapStackNotFoundInfo(stackName: string): ToolkitInfo; 33 | static bootstrapStackLookupError(stackName: string, e: Error): ToolkitInfo; 34 | abstract readonly found: boolean; 35 | abstract readonly bucketUrl: string; 36 | abstract readonly bucketName: string; 37 | abstract readonly version: number; 38 | abstract readonly variant: string; 39 | abstract readonly bootstrapStack: CloudFormationStack; 40 | abstract readonly stackName: string; 41 | constructor(); 42 | } 43 | export interface EcrRepositoryInfo { 44 | repositoryUri: string; 45 | } 46 | export interface EcrCredentials { 47 | username: string; 48 | password: string; 49 | endpoint: string; 50 | } 51 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/util/cloudformation/stack-status.d.ts: -------------------------------------------------------------------------------- 1 | import * as AWS from 'aws-sdk'; 2 | /** 3 | * A utility class to inspect CloudFormation stack statuses. 4 | * 5 | * @see https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-describing-stacks.html 6 | */ 7 | export declare class StackStatus { 8 | readonly name: string; 9 | readonly reason?: string | undefined; 10 | static fromStackDescription(description: AWS.CloudFormation.Stack): StackStatus; 11 | constructor(name: string, reason?: string | undefined); 12 | get isCreationFailure(): boolean; 13 | get isDeleted(): boolean; 14 | get isFailure(): boolean; 15 | get isInProgress(): boolean; 16 | get isReviewInProgress(): boolean; 17 | get isNotFound(): boolean; 18 | get isDeploySuccess(): boolean; 19 | get isRollbackSuccess(): boolean; 20 | toString(): string; 21 | } 22 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/util/display.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /** 3 | * A class representing rewritable display lines 4 | */ 5 | export declare class RewritableBlock { 6 | private readonly stream; 7 | private lastHeight; 8 | private trailingEmptyLines; 9 | constructor(stream: NodeJS.WriteStream); 10 | get width(): number; 11 | get height(): number; 12 | displayLines(lines: string[]): void; 13 | removeEmptyLines(): void; 14 | } 15 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/util/placeholders.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxapi from '@aws-cdk/cx-api'; 2 | import { SdkProvider } from '../aws-auth/sdk-provider'; 3 | /** 4 | * Replace the {ACCOUNT} and {REGION} placeholders in all strings found in a complex object. 5 | */ 6 | export declare function replaceEnvPlaceholders(object: A, env: cxapi.Environment, sdkProvider: SdkProvider): Promise; 7 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/util/string-manipulation.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Pad 's' on the left with 'char' until it is n characters wide 3 | */ 4 | export declare function leftPad(s: string, n: number, char: string): string; 5 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/api/util/string-manipulation.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.leftPad = void 0; 4 | /** 5 | * Pad 's' on the left with 'char' until it is n characters wide 6 | */ 7 | function leftPad(s, n, char) { 8 | const padding = Math.max(0, n - s.length); 9 | return char.repeat(padding) + s; 10 | } 11 | exports.leftPad = leftPad; 12 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLW1hbmlwdWxhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInN0cmluZy1tYW5pcHVsYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxTQUFnQixPQUFPLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxJQUFZO0lBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxDQUFDO0FBSEQsMEJBR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBhZCAncycgb24gdGhlIGxlZnQgd2l0aCAnY2hhcicgdW50aWwgaXQgaXMgbiBjaGFyYWN0ZXJzIHdpZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxlZnRQYWQoczogc3RyaW5nLCBuOiBudW1iZXIsIGNoYXI6IHN0cmluZykge1xuICBjb25zdCBwYWRkaW5nID0gTWF0aC5tYXgoMCwgbiAtIHMubGVuZ3RoKTtcbiAgcmV0dXJuIGNoYXIucmVwZWF0KHBhZGRpbmcpICsgcztcbn0iXX0= -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/assets.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxapi from '@aws-cdk/cx-api'; 2 | import { EnvironmentResources } from './api/environment-resources'; 3 | import { AssetManifestBuilder } from './util/asset-manifest-builder'; 4 | /** 5 | * Take the metadata assets from the given stack and add them to the given asset manifest 6 | * 7 | * Returns the CloudFormation parameters that need to be sent to the template to 8 | * pass Asset coordinates. 9 | */ 10 | export declare function addMetadataAssetsToManifest(stack: cxapi.CloudFormationStackArtifact, assetManifest: AssetManifestBuilder, envResources: EnvironmentResources, reuse?: string[]): Promise>; 11 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/command-api.d.ts: -------------------------------------------------------------------------------- 1 | import type { Arguments } from 'yargs'; 2 | import { SdkProvider } from './api/aws-auth'; 3 | import { Configuration } from './settings'; 4 | /** 5 | * Command handlers are supposed to be (args) => void, but ours are actually 6 | * (args) => Promise, so we deal with the asyncness by copying the actual 7 | * handler object to `args.commandHandler` which will be executed an 'await'ed later on 8 | * (instead of awaiting 'main'). 9 | * 10 | * Also adds exception handling so individual command handlers don't all have to do it. 11 | */ 12 | /** 13 | * The parts of the world that our command functions have access to 14 | */ 15 | export interface CommandOptions { 16 | args: Arguments; 17 | configuration: Configuration; 18 | aws: SdkProvider; 19 | } 20 | /** 21 | * This is the type of the *real* async command handlers 22 | */ 23 | export type CommandHandler = (options: CommandOptions) => Promise; 24 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/command-api.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWFuZC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb21tYW5kLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBcmd1bWVudHMgfSBmcm9tICd5YXJncyc7XG5pbXBvcnQgeyBTZGtQcm92aWRlciB9IGZyb20gJy4vYXBpL2F3cy1hdXRoJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3NldHRpbmdzJztcblxuLyoqXG4gKiBDb21tYW5kIGhhbmRsZXJzIGFyZSBzdXBwb3NlZCB0byBiZSAoYXJncykgPT4gdm9pZCwgYnV0IG91cnMgYXJlIGFjdHVhbGx5XG4gKiAoYXJncykgPT4gUHJvbWlzZTxudW1iZXI+LCBzbyB3ZSBkZWFsIHdpdGggdGhlIGFzeW5jbmVzcyBieSBjb3B5aW5nIHRoZSBhY3R1YWxcbiAqIGhhbmRsZXIgb2JqZWN0IHRvIGBhcmdzLmNvbW1hbmRIYW5kbGVyYCB3aGljaCB3aWxsIGJlIGV4ZWN1dGVkIGFuICdhd2FpdCdlZCBsYXRlciBvblxuICogKGluc3RlYWQgb2YgYXdhaXRpbmcgJ21haW4nKS5cbiAqXG4gKiBBbHNvIGFkZHMgZXhjZXB0aW9uIGhhbmRsaW5nIHNvIGluZGl2aWR1YWwgY29tbWFuZCBoYW5kbGVycyBkb24ndCBhbGwgaGF2ZSB0byBkbyBpdC5cbiAqL1xuXG4vKipcbiAqIFRoZSBwYXJ0cyBvZiB0aGUgd29ybGQgdGhhdCBvdXIgY29tbWFuZCBmdW5jdGlvbnMgaGF2ZSBhY2Nlc3MgdG9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tYW5kT3B0aW9ucyB7XG4gIGFyZ3M6IEFyZ3VtZW50cztcbiAgY29uZmlndXJhdGlvbjogQ29uZmlndXJhdGlvbjtcbiAgYXdzOiBTZGtQcm92aWRlcjtcbn1cblxuLyoqXG4gKiBUaGlzIGlzIHRoZSB0eXBlIG9mIHRoZSAqcmVhbCogYXN5bmMgY29tbWFuZCBoYW5kbGVyc1xuICovXG5leHBvcnQgdHlwZSBDb21tYW5kSGFuZGxlciA9IChvcHRpb25zOiBDb21tYW5kT3B0aW9ucykgPT4gUHJvbWlzZTxudW1iZXI+O1xuIl19 -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/commands/context.d.ts: -------------------------------------------------------------------------------- 1 | import { CommandOptions } from '../command-api'; 2 | export declare function realHandler(options: CommandOptions): Promise; 3 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/commands/docs.d.ts: -------------------------------------------------------------------------------- 1 | import { CommandOptions } from '../command-api'; 2 | export declare const command = "docs"; 3 | export declare const describe = "Opens the reference documentation in a browser"; 4 | export declare const aliases: string[]; 5 | export declare function realHandler(options: CommandOptions): Promise; 6 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/commands/doctor.d.ts: -------------------------------------------------------------------------------- 1 | import { CommandOptions } from '../command-api'; 2 | export declare function realHandler(_options: CommandOptions): Promise; 3 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/context-providers/ami.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxschema from '@aws-cdk/cloud-assembly-schema'; 2 | import { SdkProvider } from '../api/aws-auth/sdk-provider'; 3 | import { ContextProviderPlugin } from '../api/plugin'; 4 | /** 5 | * Plugin to search AMIs for the current account 6 | */ 7 | export declare class AmiContextProviderPlugin implements ContextProviderPlugin { 8 | private readonly aws; 9 | constructor(aws: SdkProvider); 10 | getValue(args: cxschema.AmiContextQuery): Promise; 11 | } 12 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/context-providers/availability-zones.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxschema from '@aws-cdk/cloud-assembly-schema'; 2 | import { SdkProvider } from '../api/aws-auth/sdk-provider'; 3 | import { ContextProviderPlugin } from '../api/plugin'; 4 | /** 5 | * Plugin to retrieve the Availability Zones for the current account 6 | */ 7 | export declare class AZContextProviderPlugin implements ContextProviderPlugin { 8 | private readonly aws; 9 | constructor(aws: SdkProvider); 10 | getValue(args: cxschema.AvailabilityZonesContextQuery): Promise<(string | undefined)[]>; 11 | } 12 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/context-providers/endpoint-service-availability-zones.d.ts: -------------------------------------------------------------------------------- 1 | import { SdkProvider } from '../api/aws-auth/sdk-provider'; 2 | import { ContextProviderPlugin } from '../api/plugin'; 3 | /** 4 | * Plugin to retrieve the Availability Zones for an endpoint service 5 | */ 6 | export declare class EndpointServiceAZContextProviderPlugin implements ContextProviderPlugin { 7 | private readonly aws; 8 | constructor(aws: SdkProvider); 9 | getValue(args: { 10 | [key: string]: any; 11 | }): Promise; 12 | } 13 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/context-providers/hosted-zones.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxschema from '@aws-cdk/cloud-assembly-schema'; 2 | import { SdkProvider } from '../api/aws-auth/sdk-provider'; 3 | import { ContextProviderPlugin } from '../api/plugin'; 4 | export declare class HostedZoneContextProviderPlugin implements ContextProviderPlugin { 5 | private readonly aws; 6 | constructor(aws: SdkProvider); 7 | getValue(args: cxschema.HostedZoneContextQuery): Promise; 8 | private filterZones; 9 | private isHostedZoneQuery; 10 | } 11 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/context-providers/index.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxschema from '@aws-cdk/cloud-assembly-schema'; 2 | import { SdkProvider } from '../api'; 3 | import { ContextProviderPlugin } from '../api/plugin/context-provider-plugin'; 4 | import { Context } from '../settings'; 5 | export type ContextProviderFactory = ((sdk: SdkProvider) => ContextProviderPlugin); 6 | export type ProviderMap = { 7 | [name: string]: ContextProviderFactory; 8 | }; 9 | /** 10 | * Iterate over the list of missing context values and invoke the appropriate providers from the map to retrieve them 11 | */ 12 | export declare function provideContextValues(missingValues: cxschema.MissingContext[], context: Context, sdk: SdkProvider): Promise; 13 | /** 14 | * Register a context provider 15 | * 16 | * A context provider cannot reuse the SDKs authentication mechanisms. 17 | */ 18 | export declare function registerContextProvider(name: string, provider: ContextProviderPlugin): void; 19 | /** 20 | * Register a plugin context provider 21 | * 22 | * A plugin provider cannot reuse the SDKs authentication mechanisms. 23 | */ 24 | export declare function registerPluginContextProvider(name: string, provider: ContextProviderPlugin): void; 25 | /** 26 | * Register a context provider factory 27 | * 28 | * A context provider factory takes an SdkProvider and returns the context provider plugin. 29 | */ 30 | export declare function registerContextProviderFactory(name: string, provider: ContextProviderFactory): void; 31 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/context-providers/keys.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxschema from '@aws-cdk/cloud-assembly-schema'; 2 | import * as cxapi from '@aws-cdk/cx-api'; 3 | import { SdkProvider } from '../api/aws-auth/sdk-provider'; 4 | import { ContextProviderPlugin } from '../api/plugin'; 5 | export declare class KeyContextProviderPlugin implements ContextProviderPlugin { 6 | private readonly aws; 7 | constructor(aws: SdkProvider); 8 | getValue(args: cxschema.KeyContextQuery): Promise; 9 | private findKey; 10 | private readKeyProps; 11 | } 12 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/context-providers/security-groups.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxschema from '@aws-cdk/cloud-assembly-schema'; 2 | import * as cxapi from '@aws-cdk/cx-api'; 3 | import * as AWS from 'aws-sdk'; 4 | import { SdkProvider } from '../api/aws-auth/sdk-provider'; 5 | import { ContextProviderPlugin } from '../api/plugin'; 6 | export declare class SecurityGroupContextProviderPlugin implements ContextProviderPlugin { 7 | private readonly aws; 8 | constructor(aws: SdkProvider); 9 | getValue(args: cxschema.SecurityGroupContextQuery): Promise; 10 | } 11 | /** 12 | * @internal 13 | */ 14 | export declare function hasAllTrafficEgress(securityGroup: AWS.EC2.SecurityGroup): boolean; 15 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/context-providers/ssm-parameters.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxschema from '@aws-cdk/cloud-assembly-schema'; 2 | import { SdkProvider } from '../api/aws-auth/sdk-provider'; 3 | import { ContextProviderPlugin } from '../api/plugin'; 4 | /** 5 | * Plugin to read arbitrary SSM parameter names 6 | */ 7 | export declare class SSMContextProviderPlugin implements ContextProviderPlugin { 8 | private readonly aws; 9 | constructor(aws: SdkProvider); 10 | getValue(args: cxschema.SSMParameterContextQuery): Promise; 11 | /** 12 | * Gets the value of an SSM Parameter, while not throwin if the parameter does not exist. 13 | * @param account the account in which the SSM Parameter is expected to be. 14 | * @param region the region in which the SSM Parameter is expected to be. 15 | * @param parameterName the name of the SSM Parameter 16 | * @param lookupRoleArn the ARN of the lookup role. 17 | * 18 | * @returns the result of the ``GetParameter`` operation. 19 | * 20 | * @throws Error if a service error (other than ``ParameterNotFound``) occurs. 21 | */ 22 | private getSsmParameterValue; 23 | } 24 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/context-providers/vpcs.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxschema from '@aws-cdk/cloud-assembly-schema'; 2 | import * as cxapi from '@aws-cdk/cx-api'; 3 | import { SdkProvider } from '../api/aws-auth/sdk-provider'; 4 | import { ContextProviderPlugin } from '../api/plugin'; 5 | export declare class VpcNetworkContextProviderPlugin implements ContextProviderPlugin { 6 | private readonly aws; 7 | constructor(aws: SdkProvider); 8 | getValue(args: cxschema.VpcContextQuery): Promise; 9 | private findVpc; 10 | private readVpcProps; 11 | } 12 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/diff.d.ts: -------------------------------------------------------------------------------- 1 | import { type DescribeChangeSetOutput, type FormatStream } from '@aws-cdk/cloudformation-diff'; 2 | import * as cxapi from '@aws-cdk/cx-api'; 3 | import { NestedStackTemplates } from './api/nested-stack-helpers'; 4 | /** 5 | * Pretty-prints the differences between two template states to the console. 6 | * 7 | * @param oldTemplate the old/current state of the stack. 8 | * @param newTemplate the new/target state of the stack. 9 | * @param strict do not filter out AWS::CDK::Metadata or Rules 10 | * @param context lines of context to use in arbitrary JSON diff 11 | * @param quiet silences \'There were no differences\' messages 12 | * 13 | * @returns the number of stacks in this stack tree that have differences, including the top-level root stack 14 | */ 15 | export declare function printStackDiff(oldTemplate: any, newTemplate: cxapi.CloudFormationStackArtifact, strict: boolean, context: number, quiet: boolean, changeSet?: DescribeChangeSetOutput, isImport?: boolean, stream?: FormatStream, nestedStackTemplates?: { 16 | [nestedStackLogicalId: string]: NestedStackTemplates; 17 | }): number; 18 | export declare enum RequireApproval { 19 | Never = "never", 20 | AnyChange = "any-change", 21 | Broadening = "broadening" 22 | } 23 | /** 24 | * Print the security changes of this diff, if the change is impactful enough according to the approval level 25 | * 26 | * Returns true if the changes are prompt-worthy, false otherwise. 27 | */ 28 | export declare function printSecurityDiff(oldTemplate: any, newTemplate: cxapi.CloudFormationStackArtifact, requireApproval: RequireApproval, changeSet?: DescribeChangeSetOutput): boolean; 29 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/init-templates/LICENSE: -------------------------------------------------------------------------------- 1 | MIT No Attribution 2 | 3 | Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this 6 | software and associated documentation files (the "Software"), to deal in the Software 7 | without restriction, including without limitation the rights to use, copy, modify, 8 | merge, publish, distribute, sublicense, and/or sell copies of the Software, and to 9 | permit persons to whom the Software is furnished to do so. 10 | 11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 12 | INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 13 | PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 14 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 15 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 16 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 17 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/init.d.ts: -------------------------------------------------------------------------------- 1 | export interface CliInitOptions { 2 | readonly type?: string; 3 | readonly language?: string; 4 | readonly canUseNetwork?: boolean; 5 | readonly generateOnly?: boolean; 6 | readonly workDir?: string; 7 | readonly stackName?: string; 8 | readonly migrate?: boolean; 9 | } 10 | /** 11 | * Initialize a CDK package in the current directory 12 | */ 13 | export declare function cliInit(options: CliInitOptions): Promise; 14 | export declare class InitTemplate { 15 | private readonly basePath; 16 | readonly name: string; 17 | readonly languages: string[]; 18 | static fromName(templatesDir: string, name: string): Promise; 19 | readonly description: string; 20 | readonly aliases: Set; 21 | constructor(basePath: string, name: string, languages: string[], info: any); 22 | /** 23 | * @param name the name that is being checked 24 | * @returns ``true`` if ``name`` is the name of this template or an alias of it. 25 | */ 26 | hasName(name: string): boolean; 27 | /** 28 | * Creates a new instance of this ``InitTemplate`` for a given language to a specified folder. 29 | * 30 | * @param language the language to instantiate this template with 31 | * @param targetDirectory the directory where the template is to be instantiated into 32 | */ 33 | install(language: string, targetDirectory: string, stackName?: string): Promise; 34 | private installFiles; 35 | private installProcessed; 36 | private expand; 37 | /** 38 | * Adds context variables to `cdk.json` in the generated project directory to 39 | * enable future behavior for new projects. 40 | */ 41 | private applyFutureFlags; 42 | addMigrateContext(projectDir: string): Promise; 43 | } 44 | export declare function availableInitTemplates(): Promise; 45 | export declare function availableInitLanguages(): Promise; 46 | export declare function printAvailableTemplates(language?: string): Promise; 47 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/logging.d.ts: -------------------------------------------------------------------------------- 1 | export declare function withCorkedLogging(block: () => Promise): Promise; 2 | export declare enum LogLevel { 3 | /** Not verbose at all */ 4 | DEFAULT = 0, 5 | /** Pretty verbose */ 6 | DEBUG = 1, 7 | /** Extremely verbose */ 8 | TRACE = 2 9 | } 10 | export declare let logLevel: LogLevel; 11 | export declare let CI: boolean; 12 | export declare function setLogLevel(newLogLevel: LogLevel): void; 13 | export declare function setCI(newCI: boolean): void; 14 | export declare function increaseVerbosity(): void; 15 | export declare const trace: (fmt: string, ...args: unknown[]) => false | void; 16 | export declare const debug: (fmt: string, ...args: unknown[]) => false | void; 17 | export declare const error: (fmt: string, ...args: unknown[]) => void; 18 | export declare const warning: (fmt: string, ...args: unknown[]) => void; 19 | export declare const success: (fmt: string, ...args: unknown[]) => void; 20 | export declare const highlight: (fmt: string, ...args: unknown[]) => void; 21 | export declare const print: (fmt: string, ...args: unknown[]) => void; 22 | export declare const data: (fmt: string, ...args: unknown[]) => void; 23 | export type LoggerFunction = (fmt: string, ...args: unknown[]) => void; 24 | /** 25 | * Create a logger output that features a constant prefix string. 26 | * 27 | * @param prefixString the prefix string to be appended before any log entry. 28 | * @param fn the logger function to be used (typically one of the other functions in this module) 29 | * 30 | * @returns a new LoggerFunction. 31 | */ 32 | export declare function prefix(prefixString: string, fn: LoggerFunction): LoggerFunction; 33 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/os.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * OS helpers 3 | * 4 | * Shell function which both prints to stdout and collects the output into a 5 | * string. 6 | */ 7 | export declare function shell(command: string[]): Promise; 8 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/serialize.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Stringify to YAML 3 | */ 4 | export declare function toYAML(obj: any): string; 5 | /** 6 | * Parse either YAML or JSON 7 | */ 8 | export declare function deserializeStructure(str: string): any; 9 | /** 10 | * Serialize to either YAML or JSON 11 | */ 12 | export declare function serializeStructure(object: any, json: boolean): string; 13 | /** 14 | * Load a YAML or JSON file from disk 15 | */ 16 | export declare function loadStructuredFile(fileName: string): Promise; 17 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/arrays.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Map a function over an array and concatenate the results 3 | */ 4 | export declare function flatMap(xs: T[], fn: ((x: T, i: number) => U[])): U[]; 5 | /** 6 | * Flatten a list of lists into a list of elements 7 | */ 8 | export declare function flatten(xs: T[][]): T[]; 9 | /** 10 | * Partition a collection by removing and returning all elements that match a predicate 11 | * 12 | * Note: the input collection is modified in-place! 13 | */ 14 | export declare function partition(collection: T[], pred: (x: T) => boolean): T[]; 15 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/asset-manifest-builder.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxschema from '@aws-cdk/cloud-assembly-schema'; 2 | import * as cdk_assets from 'cdk-assets'; 3 | export declare class AssetManifestBuilder { 4 | private readonly manifest; 5 | addFileAsset(id: string, source: cxschema.FileSource, destination: cxschema.FileDestination): void; 6 | addDockerImageAsset(id: string, source: cxschema.DockerImageSource, destination: cxschema.DockerImageDestination): void; 7 | toManifest(directory: string): cdk_assets.AssetManifest; 8 | } 9 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/asset-publishing.d.ts: -------------------------------------------------------------------------------- 1 | import * as cxapi from '@aws-cdk/cx-api'; 2 | import * as AWS from 'aws-sdk'; 3 | import * as cdk_assets from 'cdk-assets'; 4 | import { SdkProvider } from '../api/aws-auth/sdk-provider'; 5 | export interface PublishAssetsOptions { 6 | /** 7 | * Print progress at 'debug' level 8 | */ 9 | readonly quiet?: boolean; 10 | /** 11 | * Whether to build assets before publishing. 12 | * 13 | * @default true To remain backward compatible. 14 | */ 15 | readonly buildAssets?: boolean; 16 | /** 17 | * Whether to build/publish assets in parallel 18 | * 19 | * @default true To remain backward compatible. 20 | */ 21 | readonly parallel?: boolean; 22 | } 23 | /** 24 | * Use cdk-assets to publish all assets in the given manifest. 25 | */ 26 | export declare function publishAssets(manifest: cdk_assets.AssetManifest, sdk: SdkProvider, targetEnv: cxapi.Environment, options?: PublishAssetsOptions): Promise; 27 | export interface BuildAssetsOptions { 28 | /** 29 | * Print progress at 'debug' level 30 | */ 31 | readonly quiet?: boolean; 32 | /** 33 | * Build assets in parallel 34 | * 35 | * @default true 36 | */ 37 | readonly parallel?: boolean; 38 | } 39 | /** 40 | * Use cdk-assets to build all assets in the given manifest. 41 | */ 42 | export declare function buildAssets(manifest: cdk_assets.AssetManifest, sdk: SdkProvider, targetEnv: cxapi.Environment, options?: BuildAssetsOptions): Promise; 43 | export declare class PublishingAws implements cdk_assets.IAws { 44 | /** 45 | * The base SDK to work with 46 | */ 47 | private readonly aws; 48 | /** 49 | * Environment where the stack we're deploying is going 50 | */ 51 | private readonly targetEnv; 52 | private sdkCache; 53 | constructor( 54 | /** 55 | * The base SDK to work with 56 | */ 57 | aws: SdkProvider, 58 | /** 59 | * Environment where the stack we're deploying is going 60 | */ 61 | targetEnv: cxapi.Environment); 62 | discoverPartition(): Promise; 63 | discoverDefaultRegion(): Promise; 64 | discoverCurrentAccount(): Promise; 65 | discoverTargetAccount(options: cdk_assets.ClientOptions): Promise; 66 | s3Client(options: cdk_assets.ClientOptions): Promise; 67 | ecrClient(options: cdk_assets.ClientOptions): Promise; 68 | secretsManagerClient(options: cdk_assets.ClientOptions): Promise; 69 | /** 70 | * Get an SDK appropriate for the given client options 71 | */ 72 | private sdk; 73 | } 74 | export declare const EVENT_TO_LOGGER: Record void>; 75 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/bool.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Converts a boolean into a number. 3 | * 4 | * @param bool input boolean 5 | * @returns 1 if bool is true, and 0 if false 6 | */ 7 | export declare function numberFromBool(bool: boolean): number; 8 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/bool.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.numberFromBool = void 0; 4 | /** 5 | * Converts a boolean into a number. 6 | * 7 | * @param bool input boolean 8 | * @returns 1 if bool is true, and 0 if false 9 | */ 10 | function numberFromBool(bool) { 11 | return +bool; 12 | } 13 | exports.numberFromBool = numberFromBool; 14 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJvb2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7O0dBS0c7QUFDSCxTQUFnQixjQUFjLENBQUMsSUFBYTtJQUMxQyxPQUFPLENBQUMsSUFBSSxDQUFDO0FBQ2YsQ0FBQztBQUZELHdDQUVDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb252ZXJ0cyBhIGJvb2xlYW4gaW50byBhIG51bWJlci5cbiAqXG4gKiBAcGFyYW0gYm9vbCBpbnB1dCBib29sZWFuXG4gKiBAcmV0dXJucyAxIGlmIGJvb2wgaXMgdHJ1ZSwgYW5kIDAgaWYgZmFsc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG51bWJlckZyb21Cb29sKGJvb2w6IGJvb2xlYW4pOiBudW1iZXIge1xuICByZXR1cm4gK2Jvb2w7XG59Il19 -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/console-formatters.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Returns a set of strings when printed on the console produces a banner msg. The message is in the following format - 3 | * ******************** 4 | * *** msg line x *** 5 | * *** msg line xyz *** 6 | * ******************** 7 | * 8 | * Spec: 9 | * - The width of every line is equal, dictated by the longest message string 10 | * - The first and last lines are '*'s for the full length of the line 11 | * - Each line in between is prepended with '*** ' and appended with ' ***' 12 | * - The text is indented left, i.e. whitespace is right-padded when the length is shorter than the longest. 13 | * 14 | * @param msgs array of strings containing the message lines to be printed in the banner. Returns empty string if array 15 | * is empty. 16 | * @returns array of strings containing the message formatted as a banner 17 | */ 18 | export declare function formatAsBanner(msgs: string[]): string[]; 19 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/content-hash.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | export declare function contentHash(data: string | Buffer | DataView): string; 3 | /** 4 | * A stably sorted hash of an arbitrary JS object 5 | */ 6 | export declare function contentHashAny(value: unknown): string; 7 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/directories.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Return a location that will be used as the CDK home directory. 3 | * Currently the only thing that is placed here is the cache. 4 | * 5 | * First try to use the users home directory (i.e. /home/someuser/), 6 | * but if that directory does not exist for some reason create a tmp directory. 7 | * 8 | * Typically it wouldn't make sense to create a one time use tmp directory for 9 | * the purpose of creating a cache, but since this only applies to users that do 10 | * not have a home directory (some CI systems?) this should be fine. 11 | */ 12 | export declare function cdkHomeDir(): string; 13 | export declare function cdkCacheDir(): string; 14 | /** 15 | * From the current file, find the directory that contains the CLI's package.json 16 | * 17 | * Can't use `__dirname` in production code, as the CLI will get bundled as it's 18 | * released and `__dirname` will refer to a different location in the `.ts` form 19 | * as it will in the final executing form. 20 | */ 21 | export declare function rootDir(): string; 22 | export declare function rootDir(fail: true): string; 23 | export declare function rootDir(fail: false): string | undefined; 24 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/index.d.ts: -------------------------------------------------------------------------------- 1 | export * from './arrays'; 2 | export * from './bool'; 3 | export * from './objects'; 4 | export * from './types'; 5 | export * from './tables'; 6 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { 3 | if (k2 === undefined) k2 = k; 4 | var desc = Object.getOwnPropertyDescriptor(m, k); 5 | if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { 6 | desc = { enumerable: true, get: function() { return m[k]; } }; 7 | } 8 | Object.defineProperty(o, k2, desc); 9 | }) : (function(o, m, k, k2) { 10 | if (k2 === undefined) k2 = k; 11 | o[k2] = m[k]; 12 | })); 13 | var __exportStar = (this && this.__exportStar) || function(m, exports) { 14 | for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); 15 | }; 16 | Object.defineProperty(exports, "__esModule", { value: true }); 17 | __exportStar(require("./arrays"), exports); 18 | __exportStar(require("./bool"), exports); 19 | __exportStar(require("./objects"), exports); 20 | __exportStar(require("./types"), exports); 21 | __exportStar(require("./tables"), exports); 22 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlCO0FBQ3pCLHlDQUF1QjtBQUN2Qiw0Q0FBMEI7QUFDMUIsMENBQXdCO0FBQ3hCLDJDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXJyYXlzJztcbmV4cG9ydCAqIGZyb20gJy4vYm9vbCc7XG5leHBvcnQgKiBmcm9tICcuL29iamVjdHMnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3RhYmxlcyc7XG4iXX0= -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/npm.d.ts: -------------------------------------------------------------------------------- 1 | export declare function getLatestVersionFromNpm(): Promise; 2 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/npm.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.getLatestVersionFromNpm = void 0; 4 | const child_process_1 = require("child_process"); 5 | const util_1 = require("util"); 6 | const semver = require("semver"); 7 | const logging_1 = require("../../lib/logging"); 8 | const exec = (0, util_1.promisify)(child_process_1.exec); 9 | async function getLatestVersionFromNpm() { 10 | const { stdout, stderr } = await exec('npm view aws-cdk version'); 11 | if (stderr && stderr.trim().length > 0) { 12 | (0, logging_1.debug)(`The 'npm view' command generated an error stream with content [${stderr.trim()}]`); 13 | } 14 | const latestVersion = stdout.trim(); 15 | if (!semver.valid(latestVersion)) { 16 | throw new Error(`npm returned an invalid semver ${latestVersion}`); 17 | } 18 | return latestVersion; 19 | } 20 | exports.getLatestVersionFromNpm = getLatestVersionFromNpm; 21 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibnBtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlEQUE4QztBQUM5QywrQkFBaUM7QUFDakMsaUNBQWlDO0FBQ2pDLCtDQUEwQztBQUUxQyxNQUFNLElBQUksR0FBRyxJQUFBLGdCQUFTLEVBQUMsb0JBQUssQ0FBQyxDQUFDO0FBRXZCLEtBQUssVUFBVSx1QkFBdUI7SUFDM0MsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO0lBQ2xFLElBQUksTUFBTSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdkMsSUFBQSxlQUFLLEVBQUMsa0VBQWtFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUNELE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMsa0NBQWtDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELE9BQU8sYUFBYSxDQUFDO0FBQ3ZCLENBQUM7QUFYRCwwREFXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWMgYXMgX2V4ZWMgfSBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgeyBkZWJ1ZyB9IGZyb20gJy4uLy4uL2xpYi9sb2dnaW5nJztcblxuY29uc3QgZXhlYyA9IHByb21pc2lmeShfZXhlYyk7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRMYXRlc3RWZXJzaW9uRnJvbU5wbSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB7IHN0ZG91dCwgc3RkZXJyIH0gPSBhd2FpdCBleGVjKCducG0gdmlldyBhd3MtY2RrIHZlcnNpb24nKTtcbiAgaWYgKHN0ZGVyciAmJiBzdGRlcnIudHJpbSgpLmxlbmd0aCA+IDApIHtcbiAgICBkZWJ1ZyhgVGhlICducG0gdmlldycgY29tbWFuZCBnZW5lcmF0ZWQgYW4gZXJyb3Igc3RyZWFtIHdpdGggY29udGVudCBbJHtzdGRlcnIudHJpbSgpfV1gKTtcbiAgfVxuICBjb25zdCBsYXRlc3RWZXJzaW9uID0gc3Rkb3V0LnRyaW0oKTtcbiAgaWYgKCFzZW12ZXIudmFsaWQobGF0ZXN0VmVyc2lvbikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYG5wbSByZXR1cm5lZCBhbiBpbnZhbGlkIHNlbXZlciAke2xhdGVzdFZlcnNpb259YCk7XG4gIH1cblxuICByZXR1cm4gbGF0ZXN0VmVyc2lvbjtcbn1cbiJdfQ== -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/objects.d.ts: -------------------------------------------------------------------------------- 1 | import { Obj } from './types'; 2 | /** 3 | * Return a new object by adding missing keys into another object 4 | */ 5 | export declare function applyDefaults(hash: any, defaults: any): any; 6 | /** 7 | * Return whether the given parameter is an empty object or empty list. 8 | */ 9 | export declare function isEmpty(x: any): boolean; 10 | /** 11 | * Deep clone a tree of objects, lists or scalars 12 | * 13 | * Does not support cycles. 14 | */ 15 | export declare function deepClone(x: any): any; 16 | /** 17 | * Map over an object, treating it as a dictionary 18 | */ 19 | export declare function mapObject(x: Obj, fn: (key: string, value: T) => U): U[]; 20 | /** 21 | * Construct an object from a list of (k, v) pairs 22 | */ 23 | export declare function makeObject(pairs: Array<[string, T]>): Obj; 24 | /** 25 | * Deep get a value from a tree of nested objects 26 | * 27 | * Returns undefined if any part of the path was unset or 28 | * not an object. 29 | */ 30 | export declare function deepGet(x: any, path: string[]): any; 31 | /** 32 | * Deep set a value in a tree of nested objects 33 | * 34 | * Throws an error if any part of the path is not an object. 35 | */ 36 | export declare function deepSet(x: any, path: string[], value: any): void; 37 | /** 38 | * Recursively merge objects together 39 | * 40 | * The leftmost object is mutated and returned. Arrays are not merged 41 | * but overwritten just like scalars. 42 | * 43 | * If an object is merged into a non-object, the non-object is lost. 44 | */ 45 | export declare function deepMerge(...objects: Array | undefined>): Obj; 46 | /** 47 | * Splits the given object into two, such that: 48 | * 49 | * 1. The size of the first object (after stringified in UTF-8) is less than or equal to the provided size limit. 50 | * 2. Merging the two objects results in the original one. 51 | */ 52 | export declare function splitBySize(data: any, maxSizeBytes: number): [any, any]; 53 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/tables.d.ts: -------------------------------------------------------------------------------- 1 | export declare function renderTable(cells: string[][], columns?: number): string; 2 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/tables.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.renderTable = void 0; 4 | const cfnDiff = require("@aws-cdk/cloudformation-diff"); 5 | function renderTable(cells, columns) { 6 | // The cfnDiff module has logic for terminal-width aware table 7 | // formatting (and nice colors), let's just reuse that. 8 | return cfnDiff.formatTable(cells, columns); 9 | } 10 | exports.renderTable = renderTable; 11 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidGFibGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHdEQUF3RDtBQUV4RCxTQUFnQixXQUFXLENBQUMsS0FBaUIsRUFBRSxPQUFnQjtJQUM3RCw4REFBOEQ7SUFDOUQsdURBQXVEO0lBQ3ZELE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUpELGtDQUlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2ZuRGlmZiBmcm9tICdAYXdzLWNkay9jbG91ZGZvcm1hdGlvbi1kaWZmJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlclRhYmxlKGNlbGxzOiBzdHJpbmdbXVtdLCBjb2x1bW5zPzogbnVtYmVyKSB7XG4gIC8vIFRoZSBjZm5EaWZmIG1vZHVsZSBoYXMgbG9naWMgZm9yIHRlcm1pbmFsLXdpZHRoIGF3YXJlIHRhYmxlXG4gIC8vIGZvcm1hdHRpbmcgKGFuZCBuaWNlIGNvbG9ycyksIGxldCdzIGp1c3QgcmV1c2UgdGhhdC5cbiAgcmV0dXJuIGNmbkRpZmYuZm9ybWF0VGFibGUoY2VsbHMsIGNvbHVtbnMpO1xufVxuIl19 -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/types.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Type of a map mapping strings to some arbitrary type 3 | * 4 | * Name is not ideal, but: 5 | * 6 | * - Cannot call it Object, that already means something. 7 | * - Cannot call it Dict or Dictionary, since in other languages 8 | * those also allow specifying the key type. 9 | */ 10 | export type Obj = { 11 | [key: string]: T; 12 | }; 13 | /** 14 | * Return whether the given value is an object 15 | * 16 | * Even though arrays technically are objects, we usually want to treat them differently, 17 | * so we return false in those cases. 18 | */ 19 | export declare function isObject(x: any): x is Obj; 20 | /** 21 | * Return whether the given value is an array 22 | */ 23 | export declare const isArray: (arg: any) => arg is any[]; 24 | /** 25 | * Return the value of the first argument if it's not undefined, otherwise the default 26 | */ 27 | export declare function ifDefined(x: T | undefined, def: T): T; 28 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/types.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | exports.ifDefined = exports.isArray = exports.isObject = void 0; 4 | /** 5 | * Return whether the given value is an object 6 | * 7 | * Even though arrays technically are objects, we usually want to treat them differently, 8 | * so we return false in those cases. 9 | */ 10 | function isObject(x) { 11 | return x !== null && typeof x === 'object' && !(0, exports.isArray)(x); 12 | } 13 | exports.isObject = isObject; 14 | /** 15 | * Return whether the given value is an array 16 | */ 17 | exports.isArray = Array.isArray; 18 | /** 19 | * Return the value of the first argument if it's not undefined, otherwise the default 20 | */ 21 | function ifDefined(x, def) { 22 | return typeof x !== 'undefined' ? x : def; 23 | } 24 | exports.ifDefined = ifDefined; 25 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFXQTs7Ozs7R0FLRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxDQUFNO0lBQzdCLE9BQU8sQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxJQUFBLGVBQU8sRUFBQyxDQUFDLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBRkQsNEJBRUM7QUFFRDs7R0FFRztBQUNVLFFBQUEsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7QUFFckM7O0dBRUc7QUFDSCxTQUFnQixTQUFTLENBQUksQ0FBZ0IsRUFBRSxHQUFNO0lBQ25ELE9BQU8sT0FBTyxDQUFDLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUM1QyxDQUFDO0FBRkQsOEJBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR5cGUgb2YgYSBtYXAgbWFwcGluZyBzdHJpbmdzIHRvIHNvbWUgYXJiaXRyYXJ5IHR5cGVcbiAqXG4gKiBOYW1lIGlzIG5vdCBpZGVhbCwgYnV0OlxuICpcbiAqIC0gQ2Fubm90IGNhbGwgaXQgT2JqZWN0LCB0aGF0IGFscmVhZHkgbWVhbnMgc29tZXRoaW5nLlxuICogLSBDYW5ub3QgY2FsbCBpdCBEaWN0IG9yIERpY3Rpb25hcnksIHNpbmNlIGluIG90aGVyIGxhbmd1YWdlc1xuICogICB0aG9zZSBhbHNvIGFsbG93IHNwZWNpZnlpbmcgdGhlIGtleSB0eXBlLlxuICovXG5leHBvcnQgdHlwZSBPYmo8VD4gPSB7W2tleTogc3RyaW5nXTogVH07XG5cbi8qKlxuICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIHZhbHVlIGlzIGFuIG9iamVjdFxuICpcbiAqIEV2ZW4gdGhvdWdoIGFycmF5cyB0ZWNobmljYWxseSBhcmUgb2JqZWN0cywgd2UgdXN1YWxseSB3YW50IHRvIHRyZWF0IHRoZW0gZGlmZmVyZW50bHksXG4gKiBzbyB3ZSByZXR1cm4gZmFsc2UgaW4gdGhvc2UgY2FzZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09iamVjdCh4OiBhbnkpOiB4IGlzIE9iajxhbnk+IHtcbiAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmICFpc0FycmF5KHgpO1xufVxuXG4vKipcbiAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiB2YWx1ZSBpcyBhbiBhcnJheVxuICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbi8qKlxuICogUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZmlyc3QgYXJndW1lbnQgaWYgaXQncyBub3QgdW5kZWZpbmVkLCBvdGhlcndpc2UgdGhlIGRlZmF1bHRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlmRGVmaW5lZDxUPih4OiBUIHwgdW5kZWZpbmVkLCBkZWY6IFQpOiBUIHtcbiAgcmV0dXJuIHR5cGVvZiB4ICE9PSAndW5kZWZpbmVkJyA/IHggOiBkZWY7XG59XG4iXX0= -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/util/yaml-cfn.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Serializes the given data structure into valid YAML. 3 | * 4 | * @param obj the data structure to serialize 5 | * @returns a string containing the YAML representation of {@param obj} 6 | */ 7 | export declare function serialize(obj: any): string; 8 | /** 9 | * Deserialize the YAML into the appropriate data structure. 10 | * 11 | * @param str the string containing YAML 12 | * @returns the data structure the YAML represents 13 | * (most often in case of CloudFormation, an object) 14 | */ 15 | export declare function deserialize(str: string): any; 16 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/lib/version.d.ts: -------------------------------------------------------------------------------- 1 | export declare const DISPLAY_VERSION: string; 2 | export declare function versionNumber(): string; 3 | export declare class VersionCheckTTL { 4 | static timestampFilePath(): string; 5 | private readonly file; 6 | private readonly ttlSecs; 7 | constructor(file?: string, ttlSecs?: number); 8 | hasExpired(): Promise; 9 | update(latestVersion?: string): Promise; 10 | } 11 | export declare function latestVersionIfHigher(currentVersion: string, cacheFile: VersionCheckTTL): Promise; 12 | export declare function displayVersionMessage(currentVersion?: string, versionCheckCache?: VersionCheckTTL): Promise; 13 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/test/account-cache.test.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/test/api/bootstrap.test.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/test/api/bootstrap2.test.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/test/api/cloud-assembly.test.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/test/api/cloud-executable.test.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/test/api/cloudformation-deployments.test.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/test/api/console-listener.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | export type Output = ReadonlyArray; 3 | export interface Options { 4 | isTTY?: boolean; 5 | } 6 | export interface Inspector { 7 | output: Output; 8 | restore: () => void; 9 | } 10 | declare class ConsoleListener { 11 | private _stream; 12 | private _options?; 13 | constructor(stream: NodeJS.WriteStream, options?: Options); 14 | inspect(): Inspector; 15 | inspectSync(fn: (output: Output) => void): Output; 16 | } 17 | export declare const stdout: ConsoleListener; 18 | export declare const stderr: ConsoleListener; 19 | export {}; 20 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/test/api/deploy-stack.test.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/test/api/exec.test.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | -------------------------------------------------------------------------------- /deployment/cdk-solution-helper/node_modules/aws-cdk/test/api/fake-cloudformation-stack.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | import { CloudFormation } from 'aws-sdk'; 3 | import { CloudFormationStack, Template } from '../../lib/api/util/cloudformation'; 4 | export interface FakeCloudFormationStackProps { 5 | readonly stackName: string; 6 | readonly stackId: string; 7 | } 8 | export declare class FakeCloudformationStack extends CloudFormationStack { 9 | readonly cfnMock: jest.Mocked; 10 | private readonly props; 11 | private __template; 12 | constructor(props: FakeCloudFormationStackProps); 13 | setTemplate(template: Template): void; 14 | template(): Promise