├── healthcheck ├── refarch_testtools │ ├── __init__.py │ └── deploy.py ├── requirements.txt ├── README.md ├── test_healthcheck_new_vnet.py └── test_healthcheck_existing_vpc.py ├── releases ├── R2023b │ ├── images │ │ └── mps_ref_arch_aws_diagram.png │ ├── templates │ │ ├── templateURL.txt │ │ ├── mps-aws-refarch-new-vpc-cf.yml │ │ └── mps-aws-refarch-existing-vpc-cf.yml │ ├── LICENSE.md │ └── README.md ├── R2024a │ ├── images │ │ └── mps_ref_arch_aws_diagram.png │ ├── templates │ │ ├── templateURL.txt │ │ ├── mps-aws-refarch-new-vpc-cf.yml │ │ └── mps-aws-refarch-existing-vpc-cf.yml │ ├── LICENSE.md │ └── README.md ├── R2024b │ ├── images │ │ └── mps_ref_arch_aws_diagram.png │ ├── templates │ │ ├── templateURL.txt │ │ ├── mps-aws-refarch-new-vpc-cf.yml │ │ └── mps-aws-refarch-existing-vpc-cf.yml │ ├── LICENSE.md │ └── README.md ├── R2025a │ ├── images │ │ └── mps_ref_arch_aws_diagram.png │ ├── templates │ │ ├── templateURL.txt │ │ └── mps-aws-refarch-new-vpc-cf.yml │ └── LICENSE.md ├── R2025b │ ├── images │ │ └── mps_ref_arch_aws_diagram.png │ ├── templates │ │ ├── templateURL.txt │ │ └── mps-aws-refarch-new-vpc-cf.yml │ └── LICENSE.md └── release-notes.md ├── SECURITY.md ├── .github └── workflows │ ├── delete_workflow_runs_every_30_days.yml │ ├── healthcheck-app-newVpc-Ubuntu-Mon.yml │ ├── healthcheck-app-newVpc-Win-Wed.yml │ ├── healthcheck-app-existingVpc-Ubuntu-Tue.yml │ └── healthcheck-app-existingVpc-Win-Thurs.yml ├── LICENSE.md ├── README.md └── UPGRADES.md /healthcheck/refarch_testtools/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /healthcheck/requirements.txt: -------------------------------------------------------------------------------- 1 | boto3==1.39.1 2 | botocore==1.39.1 3 | paramiko==3.5.1 4 | requests==2.32.4 -------------------------------------------------------------------------------- /releases/R2023b/images/mps_ref_arch_aws_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-ref-arch/matlab-production-server-on-aws/HEAD/releases/R2023b/images/mps_ref_arch_aws_diagram.png -------------------------------------------------------------------------------- /releases/R2024a/images/mps_ref_arch_aws_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-ref-arch/matlab-production-server-on-aws/HEAD/releases/R2024a/images/mps_ref_arch_aws_diagram.png -------------------------------------------------------------------------------- /releases/R2024b/images/mps_ref_arch_aws_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-ref-arch/matlab-production-server-on-aws/HEAD/releases/R2024b/images/mps_ref_arch_aws_diagram.png -------------------------------------------------------------------------------- /releases/R2025a/images/mps_ref_arch_aws_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-ref-arch/matlab-production-server-on-aws/HEAD/releases/R2025a/images/mps_ref_arch_aws_diagram.png -------------------------------------------------------------------------------- /releases/R2025b/images/mps_ref_arch_aws_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mathworks-ref-arch/matlab-production-server-on-aws/HEAD/releases/R2025b/images/mps_ref_arch_aws_diagram.png -------------------------------------------------------------------------------- /releases/R2023b/templates/templateURL.txt: -------------------------------------------------------------------------------- 1 | https://matlab-production-server-templates.s3.amazonaws.com/r2023b_mps_refarch/mps-aws-refarch-new-vpc-cf.yml 2 | https://matlab-production-server-templates.s3.amazonaws.com/r2023b_mps_refarch/mps-aws-refarch-existing-vpc-cf.yml -------------------------------------------------------------------------------- /releases/R2024a/templates/templateURL.txt: -------------------------------------------------------------------------------- 1 | https://matlab-production-server-templates.s3.amazonaws.com/r2024a_mps_refarch/mps-aws-refarch-new-vpc-cf.yml 2 | https://matlab-production-server-templates.s3.amazonaws.com/r2024a_mps_refarch/mps-aws-refarch-existing-vpc-cf.yml -------------------------------------------------------------------------------- /releases/R2024b/templates/templateURL.txt: -------------------------------------------------------------------------------- 1 | https://matlab-production-server-templates.s3.amazonaws.com/r2024b_mps_refarch/mps-aws-refarch-new-vpc-cf.yml 2 | https://matlab-production-server-templates.s3.amazonaws.com/r2024b_mps_refarch/mps-aws-refarch-existing-vpc-cf.yml -------------------------------------------------------------------------------- /releases/R2025a/templates/templateURL.txt: -------------------------------------------------------------------------------- 1 | https://matlab-production-server-templates.s3.amazonaws.com/r2025a_mps_refarch/mps-aws-refarch-new-vpc-cf.yml 2 | https://matlab-production-server-templates.s3.amazonaws.com/r2025a_mps_refarch/mps-aws-refarch-existing-vpc-cf.yml -------------------------------------------------------------------------------- /releases/R2025b/templates/templateURL.txt: -------------------------------------------------------------------------------- 1 | https://matlab-production-server-templates.s3.amazonaws.com/r2025b_mps_refarch/mps-aws-refarch-new-vpc-cf.yml 2 | https://matlab-production-server-templates.s3.amazonaws.com/r2025b_mps_refarch/mps-aws-refarch-existing-vpc-cf.yml -------------------------------------------------------------------------------- /healthcheck/README.md: -------------------------------------------------------------------------------- 1 | # MPS_RefArch_AWS_HealthCheck 2 | This section of repository is to contain the tests for health check of published MATLAB Production Server Ref Arch AWS health check. 3 | It will be scheduled to run everyday and confirm that the deployment can be done successfully and links that we have published to github are in good health. 4 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | Reporting Security Vulnerabilities 2 | ================================== 3 | If you believe you have discovered a security vulnerability, please report it to 4 | security@mathworks.com instead of GitHub. Please see 5 | [MathWorks Vulnerability Disclosure Policy for Security Researchers](https://www.mathworks.com/company/aboutus/policies_statements/vulnerability-disclosure-policy.html) 6 | for additional information. -------------------------------------------------------------------------------- /.github/workflows/delete_workflow_runs_every_30_days.yml: -------------------------------------------------------------------------------- 1 | name: Delete old workflow runs 2 | on: 3 | schedule: 4 | - cron: '0 13 18 * *' 5 | # Run monthly, at 13:00 on the 18th day of every month. 6 | 7 | jobs: 8 | del_runs: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Delete workflow runs 12 | uses: Mattraks/delete-workflow-runs@v2 13 | with: 14 | token: ${{ github.token }} 15 | repository: ${{ github.repository }} 16 | retain_days: 10 17 | keep_minimum_runs: 2 18 | -------------------------------------------------------------------------------- /releases/release-notes.md: -------------------------------------------------------------------------------- 1 | ## Release Notes for MATLAB Production Server on AWS 2 | 3 | ### R2025b 4 | - You can now deploy MATLAB Production Server R2025b using the Amazon Web Services reference architecture. 5 | - Starting November 2025, Linux servers use Ubuntu 24.04 for improved performance and security. 6 | 7 | ### R2025a 8 | - You can now deploy MATLAB Production Server R2025a using the Amazon Web Services reference architecture. 9 | 10 | ### R2024b 11 | - You can now deploy MATLAB Production Server R2024b using the Amazon Web Services reference architecture. -------------------------------------------------------------------------------- /.github/workflows/healthcheck-app-newVpc-Ubuntu-Mon.yml: -------------------------------------------------------------------------------- 1 | # This workflow will install Python dependencies, run tests and lint with a single version of Python 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions 3 | name: MATLAB Production Server Ref Arch AWS new VPC Health Check Test us-west on Ubuntu 4 | 5 | on: 6 | workflow_dispatch: 7 | push: 8 | schedule: 9 | - cron: '0 15 * * 1' 10 | permissions: 11 | id-token: write 12 | contents: read 13 | jobs: 14 | build: 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: Set up Python 3.13 20 | uses: actions/setup-python@v2 21 | with: 22 | python-version: '3.13' 23 | - name: Configure AWS credentials via OIDC 24 | uses: aws-actions/configure-aws-credentials@v4 25 | with: 26 | role-to-assume: ${{ secrets.oidc_role_arn }} 27 | aws-region: us-west-2 28 | role-duration-seconds: 7200 29 | - name: Install dependencies 30 | run: | 31 | python -m pip install --upgrade pip 32 | pip install flake8 pytest 33 | pip install -r ./healthcheck/requirements.txt 34 | 35 | - name: Lint with flake8 36 | run: | 37 | # stop the build if there are Python syntax errors or undefined names 38 | flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics 39 | # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide 40 | flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics 41 | - name: MPS Ref Arch AWS new VPC Health Check Test us-west on Ubuntu 42 | run: | 43 | cd healthcheck 44 | python test_healthcheck_new_vnet.py ${{ secrets.OIDCKeyPairNameOregon }} ${{ secrets.lmpassword }} ${{ secrets.OIDCSSLCertificateARNOregon }} "us-west-2" "Ubuntu" 45 | 46 | -------------------------------------------------------------------------------- /.github/workflows/healthcheck-app-newVpc-Win-Wed.yml: -------------------------------------------------------------------------------- 1 | # This workflow will install Python dependencies, run tests and lint with a single version of Python 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions 3 | name: MATLAB Production Server Ref Arch AWS new VPC Health Check Test ap-northeast on Windows 4 | 5 | on: 6 | workflow_dispatch: 7 | schedule: 8 | - cron: '0 15 * * 3' 9 | permissions: 10 | id-token: write 11 | contents: read 12 | jobs: 13 | build: 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - uses: actions/checkout@v2 18 | - name: Set up Python 3.13 19 | uses: actions/setup-python@v2 20 | with: 21 | python-version: '3.13' 22 | - name: Configure AWS credentials via OIDC 23 | uses: aws-actions/configure-aws-credentials@v4 24 | with: 25 | role-to-assume: ${{ secrets.oidc_role_arn }} 26 | aws-region: ap-northeast-1 27 | role-duration-seconds: 7200 28 | - name: Install dependencies 29 | run: | 30 | python -m pip install --upgrade pip 31 | pip install flake8 pytest 32 | pip install -r ./healthcheck/requirements.txt 33 | 34 | - name: Lint with flake8 35 | run: | 36 | # stop the build if there are Python syntax errors or undefined names 37 | flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics 38 | # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide 39 | flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics 40 | - name: MPS Ref Arch AWS new VPC Health Check Test ap-northeast on Windows 41 | run: | 42 | cd healthcheck 43 | python test_healthcheck_new_vnet.py ${{ secrets.OIDCKeyPairNameTokyo }} ${{ secrets.lmpassword }} ${{ secrets.OIDCSSLCertificateARNTokyo }} "ap-northeast-1" "Windows" 44 | 45 | -------------------------------------------------------------------------------- /.github/workflows/healthcheck-app-existingVpc-Ubuntu-Tue.yml: -------------------------------------------------------------------------------- 1 | # This workflow will install Python dependencies, run tests and lint with a single version of Python 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions 3 | name: MATLAB Production Server Ref Arch AWS existing VPC Health Check Test eu-west on Ubuntu 4 | 5 | on: 6 | workflow_dispatch: 7 | schedule: 8 | - cron: '0 15 * * 2' 9 | permissions: 10 | id-token: write 11 | contents: read 12 | jobs: 13 | build: 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - uses: actions/checkout@v2 18 | - name: Set up Python 3.13 19 | uses: actions/setup-python@v2 20 | with: 21 | python-version: '3.13' 22 | - name: Configure AWS credentials via OIDC 23 | uses: aws-actions/configure-aws-credentials@v4 24 | with: 25 | role-to-assume: ${{ secrets.oidc_role_arn }} 26 | aws-region: eu-west-1 27 | role-duration-seconds: 7200 28 | - name: Install dependencies 29 | run: | 30 | python -m pip install --upgrade pip 31 | pip install flake8 pytest 32 | pip install -r ./healthcheck/requirements.txt 33 | 34 | - name: Lint with flake8 35 | run: | 36 | # stop the build if there are Python syntax errors or undefined names 37 | flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics 38 | # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide 39 | flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics 40 | - name: MPS Ref Arch AWS existing VPC Health Check Test eu-west on Ubuntu 41 | run: | 42 | cd healthcheck 43 | python test_healthcheck_existing_vpc.py ${{ secrets.OIDCKeyPairNameIreland }} ${{ secrets.lmpassword }} ${{ secrets.OIDCSSLCertificateARNIreland }} "eu-west-1" "Ubuntu" 44 | 45 | -------------------------------------------------------------------------------- /.github/workflows/healthcheck-app-existingVpc-Win-Thurs.yml: -------------------------------------------------------------------------------- 1 | # This workflow will install Python dependencies, run tests and lint with a single version of Python 2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions 3 | name: MATLAB Production Server Ref Arch AWS existing VPC Health Check Test us-east on Windows 4 | 5 | on: 6 | workflow_dispatch: 7 | schedule: 8 | - cron: '0 15 * * 4' 9 | permissions: 10 | id-token: write 11 | contents: read 12 | jobs: 13 | build: 14 | runs-on: ubuntu-latest 15 | 16 | steps: 17 | - uses: actions/checkout@v4 18 | - name: Set up Python 3.13 19 | uses: actions/setup-python@v4 20 | with: 21 | python-version: '3.13' 22 | - name: Configure AWS credentials via OIDC 23 | uses: aws-actions/configure-aws-credentials@v4 24 | with: 25 | role-to-assume: ${{ secrets.oidc_role_arn }} 26 | aws-region: us-east-1 27 | role-duration-seconds: 7200 28 | - name: Install dependencies 29 | run: | 30 | python -m pip install --upgrade pip 31 | pip install flake8 pytest 32 | pip install -r ./healthcheck/requirements.txt 33 | 34 | - name: Lint with flake8 35 | run: | 36 | # stop the build if there are Python syntax errors or undefined names 37 | flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics 38 | # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide 39 | flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics 40 | - name: MPS Ref Arch AWS existing VPC Health Check Test us-east on Windows 41 | run: | 42 | cd healthcheck 43 | python test_healthcheck_existing_vpc.py ${{ secrets.OIDCKeyPairNameVirginia }} ${{ secrets.lmpassword }} ${{ secrets.OIDCSSLCertificateARNVirginia }} "us-east-1" "Windows" 44 | 45 | -------------------------------------------------------------------------------- /healthcheck/refarch_testtools/deploy.py: -------------------------------------------------------------------------------- 1 | """ 2 | Copyright 2022 The MathWorks, Inc. 3 | 4 | Test tool for deploying the AWS stack 5 | """ 6 | 7 | import datetime 8 | import logging 9 | 10 | import boto3 11 | from botocore.exceptions import WaiterError 12 | 13 | _logger = logging.getLogger("deploy") 14 | logging.basicConfig(level=logging.INFO) 15 | 16 | def deploy_stack(template_url, template_parameters, region, stack_base_name="refArchTest", extra_parameters={}): 17 | stack_name = _create_stack_name(stack_base_name) 18 | _logger.info(f"Deploying stack {stack_name}") 19 | 20 | cloudformation = boto3.resource("cloudformation", region_name=region) 21 | stack = cloudformation.create_stack( 22 | StackName=stack_name, 23 | TemplateURL=template_url, 24 | Parameters=template_parameters, 25 | Capabilities=["CAPABILITY_IAM", "CAPABILITY_AUTO_EXPAND"]) 26 | 27 | try: 28 | _wait_for_create_complete(cloudformation, stack) 29 | stack.reload() 30 | 31 | return stack 32 | except WaiterError as e: 33 | raise 34 | 35 | def _wait_for_create_complete(cloudformation, stack): 36 | cf_client = cloudformation.meta.client 37 | creation_waiter = cf_client.get_waiter("stack_create_complete") 38 | creation_waiter.wait(StackName=stack.stack_name) 39 | 40 | 41 | def delete_stack(stack): 42 | stack.delete() 43 | 44 | deletion_waiter = stack.meta.client.get_waiter("stack_delete_complete") 45 | deletion_waiter.wait(StackName=stack.stack_name) 46 | 47 | 48 | def get_stack_output_value(stack, outputKey): 49 | output = next(output for output in stack.outputs if output["OutputKey"] == outputKey) 50 | return output["OutputValue"] 51 | 52 | 53 | def _create_stack_name(name_base): 54 | return name_base + "-" + datetime.datetime.utcnow().strftime("%Y%m%dT%H%M%S") 55 | 56 | 57 | def log(): 58 | _logger.info("info") 59 | _logger.debug("debug") 60 | _logger.error("error") 61 | _logger.critical("critical") 62 | _logger.warning("warning") 63 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MATHWORKS CLOUD REFERENCE ARCHITECTURE LICENSE 2 | 3 | The files in this GitHub repository refer to commercial software products and services, virtual machine images, and related materials of The MathWorks, Inc. (“MathWorks Programs”). MathWorks Programs are separately licensed under the MathWorks Software License Agreement, available in the desktop installation of the MathWorks Programs or in the virtual machine image. The files in this GitHub repository may also refer to third-party software licensed under separate terms provided by such third parties. 4 | 5 | The following license terms apply only to the files in this GitHub repository, including files in this folder and its subfolders, and do not apply to MathWorks Programs. References to “software” and “code” in the following license terms refer to the files in this GitHub repository. 6 | 7 | Copyright (c) 2020, The MathWorks, Inc. 8 | All rights reserved. 9 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 10 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 12 | 3. In all cases, the software is, and all modifications and derivatives of the software shall be, licensed to you solely for use in conjunction with MathWorks products and service offerings. 13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 14 | -------------------------------------------------------------------------------- /releases/R2024a/LICENSE.md: -------------------------------------------------------------------------------- 1 | MATHWORKS CLOUD REFERENCE ARCHITECTURE LICENSE 2 | 3 | The files in this GitHub repository refer to commercial software products and services, virtual machine images, and related materials of The MathWorks, Inc. (“MathWorks Programs”). MathWorks Programs are separately licensed under the MathWorks Software License Agreement, available in the desktop installation of the MathWorks Programs or in the virtual machine image. The files in this GitHub repository may also refer to third-party software licensed under separate terms provided by such third parties. 4 | 5 | The following license terms apply only to the files in this GitHub repository, including files in this folder and its subfolders, and do not apply to MathWorks Programs. References to “software” and “code” in the following license terms refer to the files in this GitHub repository. 6 | 7 | Copyright (c) 2022, The MathWorks, Inc. 8 | All rights reserved. 9 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 10 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 12 | 3. In all cases, the software is, and all modifications and derivatives of the software shall be, licensed to you solely for use in conjunction with MathWorks products and service offerings. 13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 14 | -------------------------------------------------------------------------------- /releases/R2024b/LICENSE.md: -------------------------------------------------------------------------------- 1 | MATHWORKS CLOUD REFERENCE ARCHITECTURE LICENSE 2 | 3 | The files in this GitHub repository refer to commercial software products and services, virtual machine images, and related materials of The MathWorks, Inc. (“MathWorks Programs”). MathWorks Programs are separately licensed under the MathWorks Software License Agreement, available in the desktop installation of the MathWorks Programs or in the virtual machine image. The files in this GitHub repository may also refer to third-party software licensed under separate terms provided by such third parties. 4 | 5 | The following license terms apply only to the files in this GitHub repository, including files in this folder and its subfolders, and do not apply to MathWorks Programs. References to “software” and “code” in the following license terms refer to the files in this GitHub repository. 6 | 7 | Copyright (c) 2022, The MathWorks, Inc. 8 | All rights reserved. 9 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 10 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 12 | 3. In all cases, the software is, and all modifications and derivatives of the software shall be, licensed to you solely for use in conjunction with MathWorks products and service offerings. 13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 14 | -------------------------------------------------------------------------------- /releases/R2025a/LICENSE.md: -------------------------------------------------------------------------------- 1 | MATHWORKS CLOUD REFERENCE ARCHITECTURE LICENSE 2 | 3 | The files in this GitHub repository refer to commercial software products and services, virtual machine images, and related materials of The MathWorks, Inc. (“MathWorks Programs”). MathWorks Programs are separately licensed under the MathWorks Software License Agreement, available in the desktop installation of the MathWorks Programs or in the virtual machine image. The files in this GitHub repository may also refer to third-party software licensed under separate terms provided by such third parties. 4 | 5 | The following license terms apply only to the files in this GitHub repository, including files in this folder and its subfolders, and do not apply to MathWorks Programs. References to “software” and “code” in the following license terms refer to the files in this GitHub repository. 6 | 7 | Copyright (c) 2022, The MathWorks, Inc. 8 | All rights reserved. 9 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 10 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 12 | 3. In all cases, the software is, and all modifications and derivatives of the software shall be, licensed to you solely for use in conjunction with MathWorks products and service offerings. 13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 14 | -------------------------------------------------------------------------------- /releases/R2025b/LICENSE.md: -------------------------------------------------------------------------------- 1 | MATHWORKS CLOUD REFERENCE ARCHITECTURE LICENSE 2 | 3 | The files in this GitHub repository refer to commercial software products and services, virtual machine images, and related materials of The MathWorks, Inc. (“MathWorks Programs”). MathWorks Programs are separately licensed under the MathWorks Software License Agreement, available in the desktop installation of the MathWorks Programs or in the virtual machine image. The files in this GitHub repository may also refer to third-party software licensed under separate terms provided by such third parties. 4 | 5 | The following license terms apply only to the files in this GitHub repository, including files in this folder and its subfolders, and do not apply to MathWorks Programs. References to “software” and “code” in the following license terms refer to the files in this GitHub repository. 6 | 7 | Copyright (c) 2022, The MathWorks, Inc. 8 | All rights reserved. 9 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 10 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 12 | 3. In all cases, the software is, and all modifications and derivatives of the software shall be, licensed to you solely for use in conjunction with MathWorks products and service offerings. 13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 14 | -------------------------------------------------------------------------------- /releases/R2023b/LICENSE.md: -------------------------------------------------------------------------------- 1 | MATHWORKS CLOUD REFERENCE ARCHITECTURE LICENSE 2 | 3 | The files in this GitHub repository refer to commercial software products and services, virtual machine images, and related materials of The MathWorks, Inc. (“MathWorks Programs”). MathWorks Programs are separately licensed under the MathWorks Software License Agreement, available in the desktop installation of the MathWorks Programs or in the virtual machine image. The files in this GitHub repository may also refer to third-party software licensed under separate terms provided by such third parties. 4 | 5 | The following license terms apply only to the files in this GitHub repository, including files in this folder and its subfolders, and do not apply to MathWorks Programs. References to “software” and “code” in the following license terms refer to the files in this GitHub repository. 6 | 7 | Copyright (c) 2022, The MathWorks, Inc. 8 | All rights reserved. 9 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 10 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 11 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 12 | 3. In all cases, the software is, and all modifications and derivatives of the software shall be, licensed to you solely for use in conjunction with MathWorks products and service offerings. 13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 14 | -------------------------------------------------------------------------------- /healthcheck/test_healthcheck_new_vnet.py: -------------------------------------------------------------------------------- 1 | # Health check Test for MATLAB Production Server Reference Architecture AWS on Linux where new VPC is created. 2 | # Copyright 2022 The MathWorks, Inc. 3 | 4 | import refarch_testtools.deploy as deploy 5 | import sys 6 | import re 7 | import requests 8 | import datetime 9 | import urllib 10 | import random 11 | from datetime import date 12 | 13 | def main(keypairname, password, SSLCertificateARN, region, platform): 14 | # Reference architectures in production. 15 | ref_arch_name = 'matlab-production-server-on-aws' 16 | ipAddress = requests.get("https://api.ipify.org").text + "/32" 17 | parameters = [{'ParameterKey': 'KeyPairName', 'ParameterValue': keypairname}, 18 | {'ParameterKey': 'SSLCertificateARN', 'ParameterValue': SSLCertificateARN}, 19 | {'ParameterKey': 'ClientIPAddress', 'ParameterValue': ipAddress}, 20 | {'ParameterKey': 'WorkerSystem', 'ParameterValue': platform}, 21 | {'ParameterKey': 'Username', 'ParameterValue': 'admin'}, 22 | {'ParameterKey': 'Password', 'ParameterValue': password}, 23 | {'ParameterKey': 'ConfirmPassword', 'ParameterValue': password}] 24 | parameters1 = [{'ParameterKey': 'KeyPairName', 'ParameterValue': keypairname}, 25 | {'ParameterKey': 'SSLCertificateARN', 'ParameterValue': SSLCertificateARN}, 26 | {'ParameterKey': 'ClientIPAddress', 'ParameterValue': ipAddress}, 27 | {'ParameterKey': 'WorkerSystem', 'ParameterValue': platform}, 28 | {'ParameterKey': 'Password', 'ParameterValue': password}, 29 | {'ParameterKey': 'ConfirmPassword', 'ParameterValue': password}] 30 | 31 | # Find latest MATLAB release from Github page and get template url text 32 | res = requests.get(f"https://github.com/mathworks-ref-arch/{ref_arch_name}/blob/master/releases/") 33 | 34 | latest_releases = [ 35 | re.findall(r"releases/(R\d{4}[ab]\b)", res.text)[-1], 36 | re.findall(r"releases/(R\d{4}[ab]\b)", res.text)[-2] 37 | ] 38 | for i in range(2): 39 | matlab_release = latest_releases[i] 40 | print("Testing Health Check Release: " + matlab_release + "\n") 41 | github_base_dir = "https://raw.githubusercontent.com/mathworks-ref-arch" 42 | template_url_path = f"{github_base_dir}/{ref_arch_name}/master/releases/{matlab_release}/templates/templateURL.txt" 43 | file = urllib.request.urlopen(template_url_path) 44 | template_url = file.readline().decode("utf-8").rstrip() 45 | 46 | stack_name = "mps-refarch-health-check-" + matlab_release + date.today().strftime('%m-%d-%Y') + str(random.randint(1,101)) 47 | ct = datetime.datetime.now() 48 | print("Date time before deployment of stack:-", ct) 49 | 50 | try: 51 | print("deploying the stack") 52 | 53 | if matlab_release == "R2021a" : 54 | stack = deploy.deploy_stack(template_url, parameters1, region, stack_name) 55 | else : 56 | stack = deploy.deploy_stack(template_url, parameters, region, stack_name) 57 | 58 | print("success deploying the stack") 59 | except Exception as e: 60 | raise (e) 61 | finally: 62 | # delete the stack 63 | print("deleting the stack") 64 | deploy.delete_stack(stack) 65 | print("success deleting the stack" + "\n") 66 | ct = datetime.datetime.now() 67 | print("Date time after deployment and deletion of stack:-", ct) 68 | 69 | if __name__ == '__main__': 70 | main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5]) 71 | -------------------------------------------------------------------------------- /healthcheck/test_healthcheck_existing_vpc.py: -------------------------------------------------------------------------------- 1 | # Health check Test for MATLAB Production Server Reference Architecture AWS on Linux where existing VPC is used for stack creation. 2 | # Copyright 2022-23 The MathWorks, Inc. 3 | 4 | import refarch_testtools.deploy as deploy 5 | import sys 6 | import re 7 | import requests 8 | import datetime 9 | import urllib 10 | import random 11 | from datetime import date 12 | import time 13 | 14 | def main(keypairname, password, SSLCertificateARN, region, platform): 15 | 16 | # Reference architectures in production. 17 | ref_arch_name = 'matlab-production-server-on-aws' 18 | ipAddress = requests.get("https://api.ipify.org").text + "/32" 19 | vpc_parameters = [{"ParameterKey": "AllowPublicIP", 20 | "ParameterValue": "Yes"}] 21 | 22 | # Deploy a stack for creating VPC with 2 subnets 23 | existing_template_url = "https://matlab-production-server-templates.s3.amazonaws.com/mw-aws-payg-vpc-stack-cf.yml" 24 | existingstack = deploy.deploy_stack(existing_template_url, vpc_parameters, region, "existingvpc") 25 | time.sleep(90) 26 | vpc_id = deploy.get_stack_output_value(existingstack, 'VPCID') 27 | vpc_cidr = deploy.get_stack_output_value(existingstack, 'VPCCIDR') 28 | subnet1 = deploy.get_stack_output_value(existingstack, 'Subnet1') 29 | subnet2 = deploy.get_stack_output_value(existingstack, 'Subnet2') 30 | vpc_parameters = {'ExistingVPC' : vpc_id, 'ExistingVPCAddress' : vpc_cidr, 31 | 'ExistingSubnet1': subnet1, 'ExistingSubnet2': subnet2} 32 | 33 | # Find latest MATLAB release from Github page and get template url text 34 | res = requests.get(f"https://github.com/mathworks-ref-arch/{ref_arch_name}/blob/master/releases/") 35 | 36 | latest_releases = [ 37 | re.findall(r"releases/(R\d{4}[ab]\b)", res.text)[-1], 38 | re.findall(r"releases/(R\d{4}[ab]\b)", res.text)[-2] 39 | ] 40 | 41 | for i in range(2): 42 | matlab_release = latest_releases[i] 43 | print("Testing Health Check Release: " + matlab_release + "\n") 44 | if matlab_release == 'R2023a': 45 | parameters = [{'ParameterKey': 'KeyPairName', 'ParameterValue': keypairname}, 46 | {'ParameterKey': 'SSLCertificateARN', 'ParameterValue': SSLCertificateARN}, 47 | {'ParameterKey': 'ClientIPAddress', 'ParameterValue': ipAddress}, 48 | {'ParameterKey': 'WorkerSystem', 'ParameterValue': platform}, 49 | {'ParameterKey': 'Username', 'ParameterValue': 'admin'}, 50 | {'ParameterKey': 'Password', 'ParameterValue': password}, 51 | {'ParameterKey': 'ConfirmPassword', 'ParameterValue': password}, 52 | {"ParameterKey": "ExistingVPC","ParameterValue": vpc_id}, 53 | {"ParameterKey": "ExistingVPCAddress","ParameterValue": vpc_cidr}, 54 | {"ParameterKey": "ExistingSubnet1","ParameterValue": subnet1}, 55 | {"ParameterKey": "ExistingSubnet2","ParameterValue": subnet2}] 56 | else: 57 | parameters = [{'ParameterKey': 'KeyPairName', 'ParameterValue': keypairname}, 58 | {'ParameterKey': 'SSLCertificateARN', 'ParameterValue': SSLCertificateARN}, 59 | {'ParameterKey': 'ClientIPAddress', 'ParameterValue': ipAddress}, 60 | {'ParameterKey': 'WorkerSystem', 'ParameterValue': platform}, 61 | {'ParameterKey': 'Username', 'ParameterValue': 'admin'}, 62 | {'ParameterKey': 'Password', 'ParameterValue': password}, 63 | {'ParameterKey': 'ConfirmPassword', 'ParameterValue': password}, 64 | {"ParameterKey": "ExistingVPC","ParameterValue": vpc_id}, 65 | {"ParameterKey": "ExistingSubnet1","ParameterValue": subnet1}, 66 | {"ParameterKey": "ExistingSubnet2","ParameterValue": subnet2}] 67 | github_base_dir = "https://raw.githubusercontent.com/mathworks-ref-arch" 68 | template_url_path = f"{github_base_dir}/{ref_arch_name}/master/releases/{matlab_release}/templates/templateURL.txt" 69 | file = urllib.request.urlopen(template_url_path) 70 | template_url = file.read().decode("utf-8").rstrip() 71 | split_template_url = template_url.split("\n") 72 | existing_vpc_template_url = split_template_url[1] 73 | 74 | stack_name = "mps-refarch-health-check-" + matlab_release + date.today().strftime('%m-%d-%Y') + str(random.randint(1,101)) 75 | ct = datetime.datetime.now() 76 | print("Date time before deployment of stack: ", ct) 77 | try: 78 | stack = deploy.deploy_stack(existing_vpc_template_url, parameters, region, stack_name) 79 | ct = datetime.datetime.now() 80 | print("Date time after deployment of stack: ", ct) 81 | except Exception as e: 82 | raise (e) 83 | finally: 84 | # delete the stack 85 | print("deleting the stack : ", matlab_release) 86 | deploy.delete_stack(stack) 87 | print("success deleting the stack"+ "\n") 88 | ct = datetime.datetime.now() 89 | 90 | print("deleting the existing VPC stack") 91 | # delete the existing VPC 92 | deploy.delete_stack(existingstack) 93 | print("success deleting the existing VPC stack") 94 | ct = datetime.datetime.now() 95 | print("Date time after deletion of stacks:-", ct) 96 | 97 | if __name__ == "__main__": 98 | main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4], sys.argv[5]) 99 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MATLAB Production Server on Amazon Web Services 2 | 3 | # Requirements 4 | 5 | Before starting, you need the following: 6 | 7 | - A MATLAB® Production Server™ license that meets these conditions: 8 | - Linked to a MathWorks Account. 9 | - Concurrent license type. To check your license type, see [MathWorks License Center](https://www.mathworks.com/licensecenter/). 10 | - Configured to use a network license manager on the virtual network. By default, the deployment of MATLAB Production Server includes a network license manager, but you can also use an existing license manager. In either case, activate or move the license after deployment. For details, see [Configure MATLAB Production Server License for Use on the Cloud](https://www.mathworks.com/help/mps/server/configure-matlab-production-server-license-for-use-on-the-cloud.html). 11 | - An Amazon Web Services™ (AWS) account. If you do not have an account, create one at https://aws.amazon.com by following the on-screen instructions. 12 | 13 | If you do not have a license, please contact your MathWorks representative [here](https://www.mathworks.com/company/aboutus/contact_us/contact_sales.html) or [request a trial license](https://www.mathworks.com/campaigns/products/trials.html?prodcode=PR). 14 | 15 | # Costs 16 | You are responsible for the cost of the AWS services used when you create cloud resources using this guide. Resource settings, such as instance type, affect the cost of deployment. For cost estimates, see the pricing pages for each AWS service you will be using. Prices are subject to change. 17 | 18 | 19 | # Introduction 20 | Use this guide to automate running MATLAB Production Server 21 | on the Amazon Web Services (AWS) Cloud using an AWS CloudFormation template. 22 | The template is a JSON file that defines the resources required to deploy and manage MATLAB Production 23 | Server on AWS. Once deployed, you can manage the server using the 24 | MATLAB Production Server dashboard—a web-based interface to 25 | configure and manage server instances on the cloud. For more information, see [Manage MATLAB Production Server Using the Dashboard](https://www.mathworks.com/help/mps/server/manage-matlab-production-server-using-the-dashboard.html). 26 | For information about the architecture of this solution, see [Architecture and Resources](#architecture-and-resources). For information about AWS templates, see [Working with AWS CloudFormation Templates](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html).
27 | 28 | The default MATLAB Production Server deployment template uses the Network License Manager for MATLAB reference architecture to manage MATLAB Production Server licenses. The template for using an exisitng VPC for the deployment provides an option to either deploy the Network License Manager or use your own license server. For more information about the Network License Manager for MATLAB reference architecture, see [Network License Manager for MATLAB on Amazon Web Services](https://github.com/mathworks-ref-arch/license-manager-for-matlab-on-aws). 29 | 30 | # Prepare Your AWS Account 31 | 1. In the top navigation of your AWS account, select the region where you want to deploy MATLAB Production Server. You must select one of these supported regions: 32 | 1. Create a [key pair](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) in that region. The key pair is necessary because it is the only way to connect to the instance as an administrator. 33 | 1. If necessary, [request a service limit increase](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase) for the Amazon EC2 instance type or VPCs. You might need to do this if you already have existing deployments that use that instance type or you think you might exceed the [default limit](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-resource-limits.html) with this deployment. 34 | 35 | # Deploy Reference Architecture for Your Release 36 | To deploy the reference architecture, select your MATLAB Production Server release from the table and follow the instructions to deploy the server using the provided template. A deployment of MATLAB Production Server supports MATLAB Runtime versions up to six releases back. 37 | | Release | Supported MATLAB Runtime Versions | Status | 38 | | ------- | --------------------------------- | ------ | 39 | | [R2025b](releases/R2025b/README.md) | R2025b, R2025a, R2024b, R2024a, R2023b, R2023a | ✅ Template available. | 40 | | [R2025a](releases/R2025a/README.md) | R2025a, R2024b, R2024a, R2023b, R2023a, R2022b | ✅ Template available. | 41 | | [R2024b](releases/R2024b/README.md) | R2024b, R2024a, R2023b, R2023a, R2022b, R2022a | ✅ Template available. | 42 | | [R2024a](releases/R2024a/README.md) | R2024a, R2023b, R2023a, R2022b, R2022a, R2021b | ⚠️ Template will be removed in September 2026. | 43 | | [R2023b](releases/R2023b/README.md) | R2023b, R2023a, R2022b, R2022a, R2021b, R2021a | ⚠️ Template will be removed in March 2026. | 44 | 45 | > **Note**: MathWorks provides templates for only the six most recent releases of MATLAB Production Server. Earlier templates are removed and are no longer supported. 46 | # Architecture and Resources 47 | Deploying this reference architecture creates several resources in your 48 | resource group. 49 | 50 | 51 | ![Architecture](/releases/R2025b/images/mps_ref_arch_aws_diagram.png?raw=true) 52 | 53 | *Architecture on AWS* 54 | 55 | ### Resources 56 | 57 | | Resource Type | Number of Resources | Description | 58 | |----------------------------------------------------------------------------|---------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 59 | | AWS EC2 Instance | 2 | This resource consists of two virtual machines (VMs): | 60 | | Auto Scaling Group | 1 | Manages the number of identical VMs to be deployed. Each VM runs an instance of MATLAB Production Server which in turn runs multiple MATLAB workers. | 61 | | Load Balancer | 2 | Provides routing and load balancing services to MATLAB Production Server instances. The MATLAB Production Server Dashboard retrieves the HTTPS endpoint for making requests to the server from the load balancer resource.

| 62 | | S3 Bucket | 1 | S3 storage bucket created during the creation of the stack. This resource stores the applications deployed to the reference architecture. | 63 | | Virtual Private Cloud (VPC) | 1 | Enables resources to communicate with each other. | 64 | | Redis ElastiCache | 1 | Enables caching of data between calls to MATLAB code running on a server instance. | 65 | | CloudWatch | 1 | Enables viewing of logs. | 66 | 67 | # FAQ 68 | 69 | ## Why do requests to the server fail with errors such as “untrusted certificate” or “security exception”? 70 | These errors occur either when CORS is not enabled on the server or when the server endpoint uses a self-signed certificate. 71 | 72 | If you are making an AJAX request to the server, make sure that CORS is enabled in the server configuration. You can enable CORS by editing the property `CORS Allowed Origins` property in the **Settings** tab of the dashboard. 73 | 74 | Also, some HTTP libraries and JavaScript AJAX calls will reject a request originating from a server that uses a self-signed certificate. You may need to manually override the default security behavior of the client application. Alternatively, you can add a new HTTPS endpoint to the application gateway. For more information, see [Change SSL Certificate](https://www.mathworks.com/help/mps/server/manage-aws-resources-reference-architecture.html#mw_51d64616-777c-4e15-af40-ab3d8dcc418f). 75 | 76 | 77 | ## How do I allow multiple IP address ranges access to the dashboard? 78 | The deployment template allows you to enter only one range of IP addresses that can access the dashboard. After the deployment is complete, you can allow additional IP ranges access to the dashboard. For details, see 79 | [Update security group rules](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-security-groups.html#updating-security-group-rules) in the AWS documentation. 80 | 81 | The name of the security group to update is ``` matlab-production-server-cloud-stack-elb-1-sg```. Edit inbound rules to add additional IP address ranges in CIDR format for the ```HTTPS``` type. 82 | 83 | ## How do I upgrade an existing deployment to a newer MATLAB version? 84 | Use the instructions at this link to upgrade an existing deployment to a newer MATLAB version: [Upgrading an Existing Deployment](UPGRADES.md). 85 | 86 | # Enhancement Request 87 | Provide suggestions for additional features or capabilities using this link: https://www.mathworks.com/solutions/cloud.html. 88 | 89 | # Technical Support 90 | If you require assistance or have a request for additional features or capabilities, please contact [MathWorks Technical Support](https://www.mathworks.com/support/contact_us.html). 91 | 92 | -------------------------------------------------------------------------------- /releases/R2023b/templates/mps-aws-refarch-new-vpc-cf.yml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: '2010-09-09' 2 | Description: MATLAB Production Server R2023b with new VPC 3 | Parameters: 4 | KeyPairName: 5 | Type: AWS::EC2::KeyPair::KeyName 6 | Description: Enter the key pair name to use for all EC2 instances. If you do not have a key pair, create one in the EC2 console >> Network & Security >> Key Pairs. 7 | ConstraintDescription: Must be the name of an existing EC2 Key Pair. 8 | ClientIPAddress: 9 | Description: >- 10 | Allowed IP addresses that can connect to the MATLAB Production Server VM(s) and the dashboard VM. Specify the range in CIDR notation in the format IP Address/Suffix, where Suffix is an integer between 11 | 0 and 32. Example: 10.0.0.1/24. 12 | Type: String 13 | MinLength: 9 14 | MaxLength: 18 15 | AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2}) 16 | ConstraintDescription: Must be a valid IP in CIDR notation of the form x.x.x.x/x 17 | AllowPublicIP: 18 | Description: Specify whether the deployed solution should use public IP addresses. 19 | Type: String 20 | AllowedValues: 21 | - 'Yes' 22 | - 'No' 23 | Default: 'Yes' 24 | NumWorkerNodes: 25 | Description: Each MATLAB Production Server instance runs on a VM. Specify the number of VMs to run server instances. 26 | Type: Number 27 | Default: 2 28 | MinValue: 1 29 | MaxValue: 24 30 | WorkerInstanceType: 31 | Description: >- 32 | Specify the EC2 instance type to use for a server VM. Each server VM runs multiple MATLAB workers. The default number of workers is 4. Choosing a VM size where the number of vCPUs on a VM matches 33 | the number of workers is recommended. For more information on Amazon EC2 instance types and sizes, see https://aws.amazon.com/ec2/instance-types/ 34 | Default: m6i.xlarge 35 | Type: String 36 | AllowedValues: 37 | - m6i.xlarge 38 | - m6i.2xlarge 39 | - m6i.4xlarge 40 | - m6i.8xlarge 41 | - m6i.12xlarge 42 | - m6i.16xlarge 43 | - m6i.24xlarge 44 | - m6i.metal 45 | - m6a.xlarge 46 | - m6a.xlarge 47 | - m6a.2xlarge 48 | - m6a.4xlarge 49 | - m6a.8xlarge 50 | - m6a.12xlarge 51 | - m6a.16xlarge 52 | - m6a.24xlarge 53 | - m6a.metal 54 | - c6i.xlarge 55 | - c6i.2xlarge 56 | - c6i.4xlarge 57 | - c6i.8xlarge 58 | - c6i.12xlarge 59 | - c6i.16xlarge 60 | - c6i.24xlarge 61 | - c6i.32xlarge 62 | - c6i.metal 63 | - c6a.xlarge 64 | - c6a.2xlarge 65 | - c6a.4xlarge 66 | - c6a.8xlarge 67 | - c6a.12xlarge 68 | - c6a.16xlarge 69 | - c6a.24xlarge 70 | - c6a.32xlarge 71 | - c6a.48xlarge 72 | - c6a.metal 73 | - r6i.xlarge 74 | - r6i.2xlarge 75 | - r6i.4xlarge 76 | - r6i.8xlarge 77 | - r6i.12xlarge 78 | - r6i.16xlarge 79 | - r6i.24xlarge 80 | - r6i.32xlarge 81 | - r6i.metal 82 | - r6a.xlarge 83 | - r6a.2xlarge 84 | - r6a.4xlarge 85 | - r6a.8xlarge 86 | - r6a.12xlarge 87 | - r6a.16xlarge 88 | - r6a.24xlarge 89 | - r6a.32xlarge 90 | - r6a.48xlarge 91 | - r6a.metal 92 | ConstraintDescription: Specify worker instance type. 93 | WorkerSystem: 94 | Description: Choose between Windows (Windows Server) and Linux (Ubuntu). 95 | Type: String 96 | AllowedValues: 97 | - Ubuntu 98 | - Windows 99 | SSLCertificateARN: 100 | Description: Enter the ARN to use for HTTPS connections to the server and dashboard. The ARN you provide must match an existing certificate in the AWS Certificate Manager. 101 | Type: String 102 | AllowedPattern: arn:[\w+=/,.@-]+:[\w+=/,.@-]+:[\w+=/,.@-]*:[0-9]+:[\w+=,.@-]+(/[\w+=,.@-]+)* 103 | ConstraintDescription: Must be a valid certificate ARN of the form arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012 104 | EnablePersistence: 105 | Description: Specify whether you want to deploy ElastiCache for Redis that lets you use the persistence functionality on the server. 106 | Type: String 107 | AllowedValues: 108 | - 'Yes' 109 | - 'No' 110 | Default: 'No' 111 | Username: 112 | Description: Specify the administrator username to log in to the MATLAB Production Server dashboard. 113 | Type: String 114 | AllowedPattern: ^[^'\s\$]*$ 115 | ConstraintDescription: Must not contain whitespace, single quote or $ sign 116 | Password: 117 | Description: Specify the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard. 118 | Type: String 119 | AllowedPattern: ^[^'\s\$]*$ 120 | ConstraintDescription: Must not contain whitespace, single quote or $ sign 121 | NoEcho: true 122 | ConfirmPassword: 123 | Description: Reenter the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard. 124 | Type: String 125 | NoEcho: true 126 | Metadata: 127 | AWS::CloudFormation::Interface: 128 | ParameterGroups: 129 | - Label: 130 | default: Server 131 | Parameters: 132 | - NumWorkerNodes 133 | - WorkerInstanceType 134 | - WorkerSystem 135 | - EnablePersistence 136 | - Label: 137 | default: Dashboard Login 138 | Parameters: 139 | - Username 140 | - Password 141 | - ConfirmPassword 142 | - Label: 143 | default: Network 144 | Parameters: 145 | - KeyPairName 146 | - ClientIPAddress 147 | - AllowPublicIP 148 | - SSLCertificateARN 149 | ParameterLabels: 150 | KeyPairName: 151 | default: Name of Existing Key Pair 152 | NumWorkerNodes: 153 | default: Number of Server VMs 154 | SSLCertificateARN: 155 | default: ARN of SSL Certificate 156 | WorkerInstanceType: 157 | default: Server VM Type 158 | WorkerSystem: 159 | default: Choose between Windows (Windows Server) and Linux (Ubuntu). 160 | Username: 161 | default: Username for Dashboard 162 | Password: 163 | default: Password for MATLAB Production Server and License Server dashboards 164 | ConfirmPassword: 165 | default: Confirm Password for MATLAB Production Server and License Server dashboards 166 | ClientIPAddress: 167 | default: Allow Connections from IP Address 168 | AllowPublicIP: 169 | default: Make Solution Available over Internet 170 | EnablePersistence: 171 | default: Create ElastiCache for Redis 172 | Rules: 173 | matchPasswords: 174 | Assertions: 175 | - Assert: !Equals 176 | - !Ref 'Password' 177 | - !Ref 'ConfirmPassword' 178 | AssertDescription: Passwords do not match 179 | Conditions: 180 | DoPublicIP: !Equals 181 | - 'Yes' 182 | - !Ref 'AllowPublicIP' 183 | Mappings: 184 | VarMap: 185 | NestedTemplateURLs: 186 | vpsStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2023b_mps_refarch/mw-aws-refarch-vpc-stack-cf.yml 187 | productionServerStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2023b_mps_refarch/mw-aws-refarch-cf.yml 188 | Outputs: 189 | MATLABProductionServerAdminVM: 190 | Description: Admin VM that hosts MATLAB Production Server dashboard 191 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVM' 192 | MatlabProductionServerLicenseServer: 193 | Description: Address of the network license manager for MATLAB dashboard 194 | Value: !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerAddress' 195 | MATLABProductionServerApplicationsBucket: 196 | Description: S3 Bucket for MATLAB Production Server applications (CTF files) 197 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerApplicationsBucket' 198 | MATLABProductionServerDashboardURL: 199 | Description: URL to access MATLAB Production Server dashboard 200 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardURL' 201 | MATLABProductionServerFunctionExecutionURL: 202 | Description: MATLAB Execution Endpoint 203 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerFunctionExecutionURL' 204 | MATLABProductionServerAdminVMLogGroup: 205 | Description: CloudWatch log group for admin VM 206 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVMLogGroup' 207 | MATLABProductionServerWorkerVMLogGroup: 208 | Description: CloudWatch log group for worker VM 209 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerWorkerVMLogGroup' 210 | MATLABProductionServerAutoScalingGroup: 211 | Description: Auto Scaling Group for managing the number of server VMs 212 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAutoScalingGroup' 213 | MATLABProductionServerCloudStackCacheClusterAddress: 214 | Description: Hostname of Redis cache cluster 215 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterAddress' 216 | MATLABProductionServerCloudStackCacheClusterPort: 217 | Description: Port number of Redis cache cluster 218 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterPort' 219 | MATLABProductionServerLoadBalancer: 220 | Description: Load balancer to change SSL certificate for MATLAB execution endpoint 221 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerLoadBalancer' 222 | MATLABProductionServerDashboardLoadBalancer: 223 | Description: Load balancer to change SSL certificate for MATLAB Production Server dashboard 224 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardLoadBalancer' 225 | Resources: 226 | MatlabProductionServerVPCStack: 227 | Type: AWS::CloudFormation::Stack 228 | Properties: 229 | TemplateURL: !FindInMap 230 | - VarMap 231 | - NestedTemplateURLs 232 | - vpsStackURL 233 | Parameters: 234 | AllowPublicIP: !Ref 'AllowPublicIP' 235 | MatlabProductionServerLicenseServerStack: 236 | Type: AWS::CloudFormation::Stack 237 | Properties: 238 | TemplateURL: https://network-license-manager-for-matlab-on-aws.s3.amazonaws.com/R2023b/license-manager-template.json 239 | Parameters: 240 | VPC: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCID' 241 | Subnet: !GetAtt 'MatlabProductionServerVPCStack.Outputs.PublicSubnet' 242 | ClientIPAddress: !If 243 | - DoPublicIP 244 | - !Ref 'ClientIPAddress' 245 | - !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCCIDR' 246 | ServerInstanceType: t2.micro 247 | SSHKeyName: !Ref 'KeyPairName' 248 | Password: !Ref 'Password' 249 | ConfirmPassword: !Ref 'ConfirmPassword' 250 | MatlabProductionServerResourcesStack: 251 | DependsOn: 252 | - MatlabProductionServerVPCStack 253 | Type: AWS::CloudFormation::Stack 254 | Properties: 255 | TemplateURL: !FindInMap 256 | - VarMap 257 | - NestedTemplateURLs 258 | - productionServerStackURL 259 | Parameters: 260 | ExistingVPC: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCID' 261 | ExistingVPCAddress: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCCIDR' 262 | ExistingSubnet1: !GetAtt 'MatlabProductionServerVPCStack.Outputs.Subnet1' 263 | ExistingSubnet2: !GetAtt 'MatlabProductionServerVPCStack.Outputs.Subnet2' 264 | KeyPairName: !Ref 'KeyPairName' 265 | ClientIPAddress: !Ref 'ClientIPAddress' 266 | AllowPublicIP: !Ref 'AllowPublicIP' 267 | SSLCertificateARN: !Ref 'SSLCertificateARN' 268 | NumWorkerNodes: !Ref 'NumWorkerNodes' 269 | WorkerInstanceType: !Ref 'WorkerInstanceType' 270 | WorkerSystem: !Ref 'WorkerSystem' 271 | EnablePersistence: !Ref 'EnablePersistence' 272 | Username: !Ref 'Username' 273 | Password: !Ref 'Password' 274 | ConfirmPassword: !Ref 'ConfirmPassword' 275 | LicenseServerSecurityGroup: !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.SecurityGroup' 276 | LicenseServerPrivateDNS: !Join 277 | - '' 278 | - - 27000 279 | - '@' 280 | - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerPrivateDNS' 281 | -------------------------------------------------------------------------------- /releases/R2024a/templates/mps-aws-refarch-new-vpc-cf.yml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: '2010-09-09' 2 | Description: MATLAB Production Server R2024a with new VPC 3 | Parameters: 4 | KeyPairName: 5 | Type: AWS::EC2::KeyPair::KeyName 6 | Description: Enter the key pair name to use for all EC2 instances. If you do not have a key pair, create one in the EC2 console >> Network & Security >> Key Pairs. 7 | ConstraintDescription: Must be the name of an existing EC2 Key Pair. 8 | ClientIPAddress: 9 | Description: >- 10 | Allowed IP addresses that can connect to the MATLAB Production Server VM(s) and the dashboard VM. Specify the range in CIDR notation in the format IP Address/Suffix, where Suffix is an integer between 11 | 0 and 32. Example: 10.0.0.1/24. 12 | Type: String 13 | MinLength: 9 14 | MaxLength: 18 15 | AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2}) 16 | ConstraintDescription: Must be a valid IP in CIDR notation of the form x.x.x.x/x 17 | AllowPublicIP: 18 | Description: Specify whether the deployed solution should use public IP addresses. 19 | Type: String 20 | AllowedValues: 21 | - 'Yes' 22 | - 'No' 23 | Default: 'Yes' 24 | NumWorkerNodes: 25 | Description: Each MATLAB Production Server instance runs on a VM. Specify the number of VMs to run server instances. 26 | Type: Number 27 | Default: 2 28 | MinValue: 1 29 | MaxValue: 24 30 | WorkerInstanceType: 31 | Description: >- 32 | Specify the EC2 instance type to use for a server VM. Each server VM runs multiple MATLAB workers. The default number of workers is 4. Choosing a VM size where the number of vCPUs on a VM matches 33 | the number of workers is recommended. For more information on Amazon EC2 instance types and sizes, see https://aws.amazon.com/ec2/instance-types/ 34 | Default: m6i.xlarge 35 | Type: String 36 | AllowedValues: 37 | - m6i.xlarge 38 | - m6i.2xlarge 39 | - m6i.4xlarge 40 | - m6i.8xlarge 41 | - m6i.12xlarge 42 | - m6i.16xlarge 43 | - m6i.24xlarge 44 | - m6i.metal 45 | - m6a.xlarge 46 | - m6a.xlarge 47 | - m6a.2xlarge 48 | - m6a.4xlarge 49 | - m6a.8xlarge 50 | - m6a.12xlarge 51 | - m6a.16xlarge 52 | - m6a.24xlarge 53 | - m6a.metal 54 | - c6i.xlarge 55 | - c6i.2xlarge 56 | - c6i.4xlarge 57 | - c6i.8xlarge 58 | - c6i.12xlarge 59 | - c6i.16xlarge 60 | - c6i.24xlarge 61 | - c6i.32xlarge 62 | - c6i.metal 63 | - c6a.xlarge 64 | - c6a.2xlarge 65 | - c6a.4xlarge 66 | - c6a.8xlarge 67 | - c6a.12xlarge 68 | - c6a.16xlarge 69 | - c6a.24xlarge 70 | - c6a.32xlarge 71 | - c6a.48xlarge 72 | - c6a.metal 73 | - r6i.xlarge 74 | - r6i.2xlarge 75 | - r6i.4xlarge 76 | - r6i.8xlarge 77 | - r6i.12xlarge 78 | - r6i.16xlarge 79 | - r6i.24xlarge 80 | - r6i.32xlarge 81 | - r6i.metal 82 | - r6a.xlarge 83 | - r6a.2xlarge 84 | - r6a.4xlarge 85 | - r6a.8xlarge 86 | - r6a.12xlarge 87 | - r6a.16xlarge 88 | - r6a.24xlarge 89 | - r6a.32xlarge 90 | - r6a.48xlarge 91 | - r6a.metal 92 | ConstraintDescription: Specify worker instance type. 93 | WorkerSystem: 94 | Description: Choose between Windows (Windows Server) and Linux (Ubuntu). 95 | Type: String 96 | AllowedValues: 97 | - Ubuntu 98 | - Windows 99 | SSLCertificateARN: 100 | Description: Enter the ARN to use for HTTPS connections to the server and dashboard. The ARN you provide must match an existing certificate in the AWS Certificate Manager. 101 | Type: String 102 | AllowedPattern: arn:[\w+=/,.@-]+:[\w+=/,.@-]+:[\w+=/,.@-]*:[0-9]+:[\w+=,.@-]+(/[\w+=,.@-]+)* 103 | ConstraintDescription: Must be a valid certificate ARN of the form arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012 104 | EnablePersistence: 105 | Description: Specify whether you want to deploy ElastiCache for Redis that lets you use the persistence functionality on the server. 106 | Type: String 107 | AllowedValues: 108 | - 'Yes' 109 | - 'No' 110 | Default: 'No' 111 | Username: 112 | Description: Specify the administrator username to log in to the MATLAB Production Server dashboard. 113 | Type: String 114 | AllowedPattern: ^[^'\s\$]*$ 115 | ConstraintDescription: Must not contain whitespace, single quote or $ sign 116 | Password: 117 | Description: Specify the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard. 118 | Type: String 119 | AllowedPattern: ^[^'\s\$]*$ 120 | ConstraintDescription: Must not contain whitespace, single quote or $ sign 121 | NoEcho: true 122 | ConfirmPassword: 123 | Description: Reenter the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard. 124 | Type: String 125 | NoEcho: true 126 | Metadata: 127 | AWS::CloudFormation::Interface: 128 | ParameterGroups: 129 | - Label: 130 | default: Server 131 | Parameters: 132 | - NumWorkerNodes 133 | - WorkerInstanceType 134 | - WorkerSystem 135 | - EnablePersistence 136 | - Label: 137 | default: Dashboard Login 138 | Parameters: 139 | - Username 140 | - Password 141 | - ConfirmPassword 142 | - Label: 143 | default: Network 144 | Parameters: 145 | - KeyPairName 146 | - ClientIPAddress 147 | - AllowPublicIP 148 | - SSLCertificateARN 149 | ParameterLabels: 150 | KeyPairName: 151 | default: Name of Existing Key Pair 152 | NumWorkerNodes: 153 | default: Number of Server VMs 154 | SSLCertificateARN: 155 | default: ARN of SSL Certificate 156 | WorkerInstanceType: 157 | default: Server VM Type 158 | WorkerSystem: 159 | default: Choose between Windows (Windows Server) and Linux (Ubuntu). 160 | Username: 161 | default: Username for Dashboard 162 | Password: 163 | default: Password for MATLAB Production Server and License Server dashboards 164 | ConfirmPassword: 165 | default: Confirm Password for MATLAB Production Server and License Server dashboards 166 | ClientIPAddress: 167 | default: Allow Connections from IP Address 168 | AllowPublicIP: 169 | default: Make Solution Available over Internet 170 | EnablePersistence: 171 | default: Create ElastiCache for Redis 172 | Rules: 173 | matchPasswords: 174 | Assertions: 175 | - Assert: !Equals 176 | - !Ref 'Password' 177 | - !Ref 'ConfirmPassword' 178 | AssertDescription: Passwords do not match 179 | Conditions: 180 | DoPublicIP: !Equals 181 | - 'Yes' 182 | - !Ref 'AllowPublicIP' 183 | Mappings: 184 | VarMap: 185 | NestedTemplateURLs: 186 | vpsStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2024a_mps_refarch/mw-aws-refarch-vpc-stack-cf.yml 187 | productionServerStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2024a_mps_refarch/mw-aws-refarch-cf.yml 188 | Outputs: 189 | MATLABProductionServerAdminVM: 190 | Description: Admin VM that hosts MATLAB Production Server dashboard 191 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVM' 192 | MatlabProductionServerLicenseServer: 193 | Description: Address of the network license manager for MATLAB dashboard 194 | Value: !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerAddress' 195 | MATLABProductionServerApplicationsBucket: 196 | Description: S3 Bucket for MATLAB Production Server applications (CTF files) 197 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerApplicationsBucket' 198 | MATLABProductionServerDashboardURL: 199 | Description: URL to access MATLAB Production Server dashboard 200 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardURL' 201 | MATLABProductionServerFunctionExecutionURL: 202 | Description: MATLAB Execution Endpoint 203 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerFunctionExecutionURL' 204 | MATLABProductionServerAdminVMLogGroup: 205 | Description: CloudWatch log group for admin VM 206 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVMLogGroup' 207 | MATLABProductionServerWorkerVMLogGroup: 208 | Description: CloudWatch log group for worker VM 209 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerWorkerVMLogGroup' 210 | MATLABProductionServerAutoScalingGroup: 211 | Description: Auto Scaling Group for managing the number of server VMs 212 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAutoScalingGroup' 213 | MATLABProductionServerCloudStackCacheClusterAddress: 214 | Description: Hostname of Redis cache cluster 215 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterAddress' 216 | MATLABProductionServerCloudStackCacheClusterPort: 217 | Description: Port number of Redis cache cluster 218 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterPort' 219 | MATLABProductionServerLoadBalancer: 220 | Description: Load balancer to change SSL certificate for MATLAB execution endpoint 221 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerLoadBalancer' 222 | MATLABProductionServerDashboardLoadBalancer: 223 | Description: Load balancer to change SSL certificate for MATLAB Production Server dashboard 224 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardLoadBalancer' 225 | Resources: 226 | MatlabProductionServerVPCStack: 227 | Type: AWS::CloudFormation::Stack 228 | Properties: 229 | TemplateURL: !FindInMap 230 | - VarMap 231 | - NestedTemplateURLs 232 | - vpsStackURL 233 | Parameters: 234 | AllowPublicIP: !Ref 'AllowPublicIP' 235 | MatlabProductionServerLicenseServerStack: 236 | Type: AWS::CloudFormation::Stack 237 | Properties: 238 | TemplateURL: https://network-license-manager-for-matlab-on-aws.s3.amazonaws.com/R2024a/license-manager-template.json 239 | Parameters: 240 | VPC: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCID' 241 | Subnet: !GetAtt 'MatlabProductionServerVPCStack.Outputs.PublicSubnet' 242 | ClientIPAddress: !If 243 | - DoPublicIP 244 | - !Ref 'ClientIPAddress' 245 | - !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCCIDR' 246 | ServerInstanceType: t2.micro 247 | SSHKeyName: !Ref 'KeyPairName' 248 | Password: !Ref 'Password' 249 | ConfirmPassword: !Ref 'ConfirmPassword' 250 | MatlabProductionServerResourcesStack: 251 | DependsOn: 252 | - MatlabProductionServerVPCStack 253 | Type: AWS::CloudFormation::Stack 254 | Properties: 255 | TemplateURL: !FindInMap 256 | - VarMap 257 | - NestedTemplateURLs 258 | - productionServerStackURL 259 | Parameters: 260 | ExistingVPC: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCID' 261 | ExistingVPCAddress: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCCIDR' 262 | ExistingSubnet1: !GetAtt 'MatlabProductionServerVPCStack.Outputs.Subnet1' 263 | ExistingSubnet2: !GetAtt 'MatlabProductionServerVPCStack.Outputs.Subnet2' 264 | KeyPairName: !Ref 'KeyPairName' 265 | ClientIPAddress: !Ref 'ClientIPAddress' 266 | AllowPublicIP: !Ref 'AllowPublicIP' 267 | SSLCertificateARN: !Ref 'SSLCertificateARN' 268 | NumWorkerNodes: !Ref 'NumWorkerNodes' 269 | WorkerInstanceType: !Ref 'WorkerInstanceType' 270 | WorkerSystem: !Ref 'WorkerSystem' 271 | EnablePersistence: !Ref 'EnablePersistence' 272 | Username: !Ref 'Username' 273 | Password: !Ref 'Password' 274 | ConfirmPassword: !Ref 'ConfirmPassword' 275 | LicenseServerSecurityGroup: !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.SecurityGroup' 276 | LicenseServerPrivateDNS: !Join 277 | - '' 278 | - - 27000 279 | - '@' 280 | - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerPrivateDNS' 281 | -------------------------------------------------------------------------------- /releases/R2024b/templates/mps-aws-refarch-new-vpc-cf.yml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: '2010-09-09' 2 | Description: MATLAB Production Server R2024b with new VPC 3 | Parameters: 4 | KeyPairName: 5 | Type: AWS::EC2::KeyPair::KeyName 6 | Description: Enter the key pair name to use for all EC2 instances. If you do not have a key pair, create one in the EC2 console >> Network & Security >> Key Pairs. 7 | ConstraintDescription: Must be the name of an existing EC2 Key Pair. 8 | ClientIPAddress: 9 | Description: >- 10 | Allowed IP addresses that can connect to the MATLAB Production Server VM(s) and the dashboard VM. Specify the range in CIDR notation in the format IP Address/Suffix, where Suffix is an integer between 11 | 0 and 32. Example: 10.0.0.1/24. 12 | Type: String 13 | MinLength: 9 14 | MaxLength: 18 15 | AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2}) 16 | ConstraintDescription: Must be a valid IP in CIDR notation of the form x.x.x.x/x 17 | AllowPublicIP: 18 | Description: Specify whether the deployed solution should use public IP addresses. 19 | Type: String 20 | AllowedValues: 21 | - 'Yes' 22 | - 'No' 23 | Default: 'Yes' 24 | NumWorkerNodes: 25 | Description: Each MATLAB Production Server instance runs on a VM. Specify the number of VMs to run server instances. 26 | Type: Number 27 | Default: 2 28 | MinValue: 1 29 | MaxValue: 24 30 | WorkerInstanceType: 31 | Description: >- 32 | Specify the EC2 instance type to use for a server VM. Each server VM runs multiple MATLAB workers. The default number of workers is 4. Choosing a VM size where the number of vCPUs on a VM matches 33 | the number of workers is recommended. For more information on Amazon EC2 instance types and sizes, see https://aws.amazon.com/ec2/instance-types/ 34 | Default: m6i.xlarge 35 | Type: String 36 | AllowedValues: 37 | - m6i.xlarge 38 | - m6i.2xlarge 39 | - m6i.4xlarge 40 | - m6i.8xlarge 41 | - m6i.12xlarge 42 | - m6i.16xlarge 43 | - m6i.24xlarge 44 | - m6i.metal 45 | - m6a.xlarge 46 | - m6a.xlarge 47 | - m6a.2xlarge 48 | - m6a.4xlarge 49 | - m6a.8xlarge 50 | - m6a.12xlarge 51 | - m6a.16xlarge 52 | - m6a.24xlarge 53 | - m6a.metal 54 | - c6i.xlarge 55 | - c6i.2xlarge 56 | - c6i.4xlarge 57 | - c6i.8xlarge 58 | - c6i.12xlarge 59 | - c6i.16xlarge 60 | - c6i.24xlarge 61 | - c6i.32xlarge 62 | - c6i.metal 63 | - c6a.xlarge 64 | - c6a.2xlarge 65 | - c6a.4xlarge 66 | - c6a.8xlarge 67 | - c6a.12xlarge 68 | - c6a.16xlarge 69 | - c6a.24xlarge 70 | - c6a.32xlarge 71 | - c6a.48xlarge 72 | - c6a.metal 73 | - r6i.xlarge 74 | - r6i.2xlarge 75 | - r6i.4xlarge 76 | - r6i.8xlarge 77 | - r6i.12xlarge 78 | - r6i.16xlarge 79 | - r6i.24xlarge 80 | - r6i.32xlarge 81 | - r6i.metal 82 | - r6a.xlarge 83 | - r6a.2xlarge 84 | - r6a.4xlarge 85 | - r6a.8xlarge 86 | - r6a.12xlarge 87 | - r6a.16xlarge 88 | - r6a.24xlarge 89 | - r6a.32xlarge 90 | - r6a.48xlarge 91 | - r6a.metal 92 | ConstraintDescription: Specify worker instance type. 93 | WorkerSystem: 94 | Description: Choose between Windows (Windows Server) and Linux (Ubuntu). 95 | Type: String 96 | AllowedValues: 97 | - Ubuntu 98 | - Windows 99 | SSLCertificateARN: 100 | Description: Enter the ARN to use for HTTPS connections to the server and dashboard. The ARN you provide must match an existing certificate in the AWS Certificate Manager. 101 | Type: String 102 | AllowedPattern: arn:[\w+=/,.@-]+:[\w+=/,.@-]+:[\w+=/,.@-]*:[0-9]+:[\w+=,.@-]+(/[\w+=,.@-]+)* 103 | ConstraintDescription: Must be a valid certificate ARN of the form arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012 104 | EnablePersistence: 105 | Description: Specify whether you want to deploy ElastiCache for Redis that lets you use the persistence functionality on the server. 106 | Type: String 107 | AllowedValues: 108 | - 'Yes' 109 | - 'No' 110 | Default: 'No' 111 | Username: 112 | Description: Specify the administrator username to log in to the MATLAB Production Server dashboard. 113 | Type: String 114 | AllowedPattern: ^[^'\s\$]*$ 115 | ConstraintDescription: Must not contain whitespace, single quote or $ sign 116 | Password: 117 | Description: Specify the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard. 118 | Type: String 119 | AllowedPattern: ^[^'\s\$]*$ 120 | ConstraintDescription: Must not contain whitespace, single quote or $ sign 121 | NoEcho: true 122 | ConfirmPassword: 123 | Description: Reenter the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard. 124 | Type: String 125 | NoEcho: true 126 | Metadata: 127 | AWS::CloudFormation::Interface: 128 | ParameterGroups: 129 | - Label: 130 | default: Server 131 | Parameters: 132 | - NumWorkerNodes 133 | - WorkerInstanceType 134 | - WorkerSystem 135 | - EnablePersistence 136 | - Label: 137 | default: Dashboard Login 138 | Parameters: 139 | - Username 140 | - Password 141 | - ConfirmPassword 142 | - Label: 143 | default: Network 144 | Parameters: 145 | - KeyPairName 146 | - ClientIPAddress 147 | - AllowPublicIP 148 | - SSLCertificateARN 149 | ParameterLabels: 150 | KeyPairName: 151 | default: Name of Existing Key Pair 152 | NumWorkerNodes: 153 | default: Number of Server VMs 154 | SSLCertificateARN: 155 | default: ARN of SSL Certificate 156 | WorkerInstanceType: 157 | default: Server VM Type 158 | WorkerSystem: 159 | default: Choose between Windows (Windows Server) and Linux (Ubuntu). 160 | Username: 161 | default: Username for Dashboard 162 | Password: 163 | default: Password for MATLAB Production Server and License Server dashboards 164 | ConfirmPassword: 165 | default: Confirm Password for MATLAB Production Server and License Server dashboards 166 | ClientIPAddress: 167 | default: Allow Connections from IP Address 168 | AllowPublicIP: 169 | default: Make Solution Available over Internet 170 | EnablePersistence: 171 | default: Create ElastiCache for Redis 172 | Rules: 173 | matchPasswords: 174 | Assertions: 175 | - Assert: !Equals 176 | - !Ref 'Password' 177 | - !Ref 'ConfirmPassword' 178 | AssertDescription: Passwords do not match 179 | Conditions: 180 | DoPublicIP: !Equals 181 | - 'Yes' 182 | - !Ref 'AllowPublicIP' 183 | Mappings: 184 | VarMap: 185 | NestedTemplateURLs: 186 | vpsStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2024b_mps_refarch/mw-aws-refarch-vpc-stack-cf.yml 187 | productionServerStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2024b_mps_refarch/mw-aws-refarch-cf.yml 188 | Outputs: 189 | MATLABProductionServerAdminVM: 190 | Description: Admin VM that hosts MATLAB Production Server dashboard 191 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVM' 192 | MatlabProductionServerLicenseServer: 193 | Description: Address of the network license manager for MATLAB dashboard 194 | Value: !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerAddress' 195 | MATLABProductionServerApplicationsBucket: 196 | Description: S3 Bucket for MATLAB Production Server applications (CTF files) 197 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerApplicationsBucket' 198 | MATLABProductionServerDashboardURL: 199 | Description: URL to access MATLAB Production Server dashboard 200 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardURL' 201 | MATLABProductionServerFunctionExecutionURL: 202 | Description: MATLAB Execution Endpoint 203 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerFunctionExecutionURL' 204 | MATLABProductionServerAdminVMLogGroup: 205 | Description: CloudWatch log group for admin VM 206 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVMLogGroup' 207 | MATLABProductionServerWorkerVMLogGroup: 208 | Description: CloudWatch log group for worker VM 209 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerWorkerVMLogGroup' 210 | MATLABProductionServerAutoScalingGroup: 211 | Description: Auto Scaling Group for managing the number of server VMs 212 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAutoScalingGroup' 213 | MATLABProductionServerCloudStackCacheClusterAddress: 214 | Description: Hostname of Redis cache cluster 215 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterAddress' 216 | MATLABProductionServerCloudStackCacheClusterPort: 217 | Description: Port number of Redis cache cluster 218 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterPort' 219 | MATLABProductionServerLoadBalancer: 220 | Description: Load balancer to change SSL certificate for MATLAB execution endpoint 221 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerLoadBalancer' 222 | MATLABProductionServerDashboardLoadBalancer: 223 | Description: Load balancer to change SSL certificate for MATLAB Production Server dashboard 224 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardLoadBalancer' 225 | Resources: 226 | MatlabProductionServerVPCStack: 227 | Type: AWS::CloudFormation::Stack 228 | Properties: 229 | TemplateURL: !FindInMap 230 | - VarMap 231 | - NestedTemplateURLs 232 | - vpsStackURL 233 | Parameters: 234 | AllowPublicIP: !Ref 'AllowPublicIP' 235 | MatlabProductionServerLicenseServerStack: 236 | Type: AWS::CloudFormation::Stack 237 | Properties: 238 | TemplateURL: https://network-license-manager-for-matlab-on-aws.s3.amazonaws.com/R2024b/license-manager-template.json 239 | Parameters: 240 | VPC: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCID' 241 | Subnet: !GetAtt 'MatlabProductionServerVPCStack.Outputs.PublicSubnet' 242 | ClientIPAddress: !If 243 | - DoPublicIP 244 | - !Ref 'ClientIPAddress' 245 | - !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCCIDR' 246 | ServerInstanceType: t2.micro 247 | SSHKeyName: !Ref 'KeyPairName' 248 | Password: !Ref 'Password' 249 | ConfirmPassword: !Ref 'ConfirmPassword' 250 | MatlabProductionServerResourcesStack: 251 | DependsOn: 252 | - MatlabProductionServerVPCStack 253 | Type: AWS::CloudFormation::Stack 254 | Properties: 255 | TemplateURL: !FindInMap 256 | - VarMap 257 | - NestedTemplateURLs 258 | - productionServerStackURL 259 | Parameters: 260 | ExistingVPC: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCID' 261 | ExistingVPCAddress: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCCIDR' 262 | ExistingSubnet1: !GetAtt 'MatlabProductionServerVPCStack.Outputs.Subnet1' 263 | ExistingSubnet2: !GetAtt 'MatlabProductionServerVPCStack.Outputs.Subnet2' 264 | KeyPairName: !Ref 'KeyPairName' 265 | ClientIPAddress: !Ref 'ClientIPAddress' 266 | AllowPublicIP: !Ref 'AllowPublicIP' 267 | SSLCertificateARN: !Ref 'SSLCertificateARN' 268 | NumWorkerNodes: !Ref 'NumWorkerNodes' 269 | WorkerInstanceType: !Ref 'WorkerInstanceType' 270 | WorkerSystem: !Ref 'WorkerSystem' 271 | EnablePersistence: !Ref 'EnablePersistence' 272 | Username: !Ref 'Username' 273 | Password: !Ref 'Password' 274 | ConfirmPassword: !Ref 'ConfirmPassword' 275 | LicenseServerSecurityGroup: !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.SecurityGroup' 276 | LicenseServerPrivateDNS: !Join 277 | - '' 278 | - - 27000 279 | - '@' 280 | - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerPrivateDNS' 281 | -------------------------------------------------------------------------------- /releases/R2025a/templates/mps-aws-refarch-new-vpc-cf.yml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: '2010-09-09' 2 | Description: MATLAB Production Server R2025a with new VPC 3 | Parameters: 4 | KeyPairName: 5 | Type: AWS::EC2::KeyPair::KeyName 6 | Description: Enter the key pair name to use for all EC2 instances. If you do not have a key pair, create one in the EC2 console >> Network & Security >> Key Pairs. 7 | ConstraintDescription: Must be the name of an existing EC2 Key Pair. 8 | ClientIPAddress: 9 | Description: >- 10 | Allowed IP addresses that can connect to the MATLAB Production Server VM(s), dashboard VM and MATLAB execution endpoint. Specify the range in CIDR notation in the format IP Address/Suffix, where Suffix is an integer between 11 | 0 and 32. Example: 10.0.0.1/24. 12 | Type: String 13 | MinLength: 9 14 | MaxLength: 18 15 | AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2}) 16 | ConstraintDescription: Must be a valid IP in CIDR notation of the form x.x.x.x/x 17 | AllowPublicIP: 18 | Description: Specify whether the deployed solution should use public IP addresses. 19 | Type: String 20 | AllowedValues: 21 | - 'Yes' 22 | - 'No' 23 | Default: 'Yes' 24 | NumWorkerNodes: 25 | Description: Each MATLAB Production Server instance runs on a VM. Specify the number of VMs to run server instances. 26 | Type: Number 27 | Default: 2 28 | MinValue: 1 29 | MaxValue: 24 30 | WorkerInstanceType: 31 | Description: >- 32 | Specify the EC2 instance type to use for a server VM. Each server VM runs multiple MATLAB workers. The default number of workers is 4. Choosing a VM size where the number of vCPUs on a VM matches 33 | the number of workers is recommended. For more information on Amazon EC2 instance types and sizes, see https://aws.amazon.com/ec2/instance-types/ 34 | Default: m6i.xlarge 35 | Type: String 36 | AllowedValues: 37 | - m6i.xlarge 38 | - m6i.2xlarge 39 | - m6i.4xlarge 40 | - m6i.8xlarge 41 | - m6i.12xlarge 42 | - m6i.16xlarge 43 | - m6i.24xlarge 44 | - m6i.metal 45 | - m6a.xlarge 46 | - m6a.xlarge 47 | - m6a.2xlarge 48 | - m6a.4xlarge 49 | - m6a.8xlarge 50 | - m6a.12xlarge 51 | - m6a.16xlarge 52 | - m6a.24xlarge 53 | - m6a.metal 54 | - c6i.xlarge 55 | - c6i.2xlarge 56 | - c6i.4xlarge 57 | - c6i.8xlarge 58 | - c6i.12xlarge 59 | - c6i.16xlarge 60 | - c6i.24xlarge 61 | - c6i.32xlarge 62 | - c6i.metal 63 | - c6a.xlarge 64 | - c6a.2xlarge 65 | - c6a.4xlarge 66 | - c6a.8xlarge 67 | - c6a.12xlarge 68 | - c6a.16xlarge 69 | - c6a.24xlarge 70 | - c6a.32xlarge 71 | - c6a.48xlarge 72 | - c6a.metal 73 | - r6i.xlarge 74 | - r6i.2xlarge 75 | - r6i.4xlarge 76 | - r6i.8xlarge 77 | - r6i.12xlarge 78 | - r6i.16xlarge 79 | - r6i.24xlarge 80 | - r6i.32xlarge 81 | - r6i.metal 82 | - r6a.xlarge 83 | - r6a.2xlarge 84 | - r6a.4xlarge 85 | - r6a.8xlarge 86 | - r6a.12xlarge 87 | - r6a.16xlarge 88 | - r6a.24xlarge 89 | - r6a.32xlarge 90 | - r6a.48xlarge 91 | - r6a.metal 92 | ConstraintDescription: Specify worker instance type. 93 | WorkerSystem: 94 | Description: Choose between Windows (Windows Server) and Linux (Ubuntu). 95 | Type: String 96 | AllowedValues: 97 | - Ubuntu 98 | - Windows 99 | SSLCertificateARN: 100 | Description: Enter the ARN to use for HTTPS connections to the server and dashboard. The ARN you provide must match an existing certificate in the AWS Certificate Manager. 101 | Type: String 102 | AllowedPattern: arn:[\w+=/,.@-]+:[\w+=/,.@-]+:[\w+=/,.@-]*:[0-9]+:[\w+=,.@-]+(/[\w+=,.@-]+)* 103 | ConstraintDescription: Must be a valid certificate ARN of the form arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012 104 | EnablePersistence: 105 | Description: Specify whether you want to deploy ElastiCache for Redis that lets you use the persistence functionality on the server. 106 | Type: String 107 | AllowedValues: 108 | - 'Yes' 109 | - 'No' 110 | Default: 'No' 111 | Username: 112 | Description: Specify the administrator username to log in to the MATLAB Production Server dashboard. 113 | Type: String 114 | AllowedPattern: ^[^'\s\$]*$ 115 | ConstraintDescription: Must not contain whitespace, single quote or $ sign 116 | Password: 117 | Description: Specify the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard. 118 | Type: String 119 | AllowedPattern: ^[^'\s\$]*$ 120 | ConstraintDescription: Must not contain whitespace, single quote or $ sign 121 | NoEcho: true 122 | ConfirmPassword: 123 | Description: Reenter the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard. 124 | Type: String 125 | NoEcho: true 126 | Metadata: 127 | AWS::CloudFormation::Interface: 128 | ParameterGroups: 129 | - Label: 130 | default: Server 131 | Parameters: 132 | - NumWorkerNodes 133 | - WorkerInstanceType 134 | - WorkerSystem 135 | - EnablePersistence 136 | - Label: 137 | default: Dashboard Login 138 | Parameters: 139 | - Username 140 | - Password 141 | - ConfirmPassword 142 | - Label: 143 | default: Network 144 | Parameters: 145 | - KeyPairName 146 | - ClientIPAddress 147 | - AllowPublicIP 148 | - SSLCertificateARN 149 | ParameterLabels: 150 | KeyPairName: 151 | default: Name of Existing Key Pair 152 | NumWorkerNodes: 153 | default: Number of Server VMs 154 | SSLCertificateARN: 155 | default: ARN of SSL Certificate 156 | WorkerInstanceType: 157 | default: Server VM Type 158 | WorkerSystem: 159 | default: Choose between Windows (Windows Server) and Linux (Ubuntu). 160 | Username: 161 | default: Username for Dashboard 162 | Password: 163 | default: Password for MATLAB Production Server and License Server dashboards 164 | ConfirmPassword: 165 | default: Confirm Password for MATLAB Production Server and License Server dashboards 166 | ClientIPAddress: 167 | default: Allow Connections from IP Address 168 | AllowPublicIP: 169 | default: Make Solution Available over Internet 170 | EnablePersistence: 171 | default: Create ElastiCache for Redis 172 | Rules: 173 | matchPasswords: 174 | Assertions: 175 | - Assert: !Equals 176 | - !Ref 'Password' 177 | - !Ref 'ConfirmPassword' 178 | AssertDescription: Passwords do not match 179 | Conditions: 180 | DoPublicIP: !Equals 181 | - 'Yes' 182 | - !Ref 'AllowPublicIP' 183 | Mappings: 184 | VarMap: 185 | NestedTemplateURLs: 186 | vpsStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2025a_mps_refarch/mw-aws-refarch-vpc-stack-cf.yml 187 | productionServerStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2025a_mps_refarch/mw-aws-refarch-cf.yml 188 | Outputs: 189 | MATLABProductionServerAdminVM: 190 | Description: Admin VM that hosts MATLAB Production Server dashboard 191 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVM' 192 | MatlabProductionServerLicenseServer: 193 | Description: Address of the network license manager for MATLAB dashboard 194 | Value: !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerAddress' 195 | MATLABProductionServerApplicationsBucket: 196 | Description: S3 Bucket for MATLAB Production Server applications (CTF files) 197 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerApplicationsBucket' 198 | MATLABProductionServerDashboardURL: 199 | Description: URL to access MATLAB Production Server dashboard 200 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardURL' 201 | MATLABProductionServerFunctionExecutionURL: 202 | Description: MATLAB Execution Endpoint 203 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerFunctionExecutionURL' 204 | MATLABProductionServerAdminVMLogGroup: 205 | Description: CloudWatch log group for admin VM 206 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVMLogGroup' 207 | MATLABProductionServerWorkerVMLogGroup: 208 | Description: CloudWatch log group for worker VM 209 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerWorkerVMLogGroup' 210 | MATLABProductionServerAutoScalingGroup: 211 | Description: Auto Scaling Group for managing the number of server VMs 212 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAutoScalingGroup' 213 | MATLABProductionServerCloudStackCacheClusterAddress: 214 | Description: Hostname of Redis cache cluster 215 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterAddress' 216 | MATLABProductionServerCloudStackCacheClusterPort: 217 | Description: Port number of Redis cache cluster 218 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterPort' 219 | MATLABProductionServerLoadBalancer: 220 | Description: Load balancer to change SSL certificate for MATLAB execution endpoint 221 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerLoadBalancer' 222 | MATLABProductionServerDashboardLoadBalancer: 223 | Description: Load balancer to change SSL certificate for MATLAB Production Server dashboard 224 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardLoadBalancer' 225 | Resources: 226 | MatlabProductionServerVPCStack: 227 | Type: AWS::CloudFormation::Stack 228 | Properties: 229 | TemplateURL: !FindInMap 230 | - VarMap 231 | - NestedTemplateURLs 232 | - vpsStackURL 233 | Parameters: 234 | AllowPublicIP: !Ref 'AllowPublicIP' 235 | MatlabProductionServerLicenseServerStack: 236 | Type: AWS::CloudFormation::Stack 237 | Properties: 238 | TemplateURL: https://network-license-manager-for-matlab-on-aws.s3.amazonaws.com/R2025a/license-manager-template.json 239 | Parameters: 240 | VPC: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCID' 241 | Subnet: !GetAtt 'MatlabProductionServerVPCStack.Outputs.PublicSubnet' 242 | ClientIPAddress: !If 243 | - DoPublicIP 244 | - !Ref 'ClientIPAddress' 245 | - !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCCIDR' 246 | ServerInstanceType: t2.micro 247 | SSHKeyName: !Ref 'KeyPairName' 248 | Password: !Ref 'Password' 249 | ConfirmPassword: !Ref 'ConfirmPassword' 250 | MatlabProductionServerResourcesStack: 251 | DependsOn: 252 | - MatlabProductionServerVPCStack 253 | Type: AWS::CloudFormation::Stack 254 | Properties: 255 | TemplateURL: !FindInMap 256 | - VarMap 257 | - NestedTemplateURLs 258 | - productionServerStackURL 259 | Parameters: 260 | ExistingVPC: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCID' 261 | ExistingVPCAddress: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCCIDR' 262 | ExistingSubnet1: !GetAtt 'MatlabProductionServerVPCStack.Outputs.Subnet1' 263 | ExistingSubnet2: !GetAtt 'MatlabProductionServerVPCStack.Outputs.Subnet2' 264 | KeyPairName: !Ref 'KeyPairName' 265 | ClientIPAddress: !Ref 'ClientIPAddress' 266 | AllowPublicIP: !Ref 'AllowPublicIP' 267 | SSLCertificateARN: !Ref 'SSLCertificateARN' 268 | NumWorkerNodes: !Ref 'NumWorkerNodes' 269 | WorkerInstanceType: !Ref 'WorkerInstanceType' 270 | WorkerSystem: !Ref 'WorkerSystem' 271 | EnablePersistence: !Ref 'EnablePersistence' 272 | Username: !Ref 'Username' 273 | Password: !Ref 'Password' 274 | ConfirmPassword: !Ref 'ConfirmPassword' 275 | LicenseServerSecurityGroup: !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.SecurityGroup' 276 | LicenseServerPrivateDNS: !Join 277 | - '' 278 | - - 27000 279 | - '@' 280 | - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerPrivateDNS' 281 | -------------------------------------------------------------------------------- /releases/R2025b/templates/mps-aws-refarch-new-vpc-cf.yml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: '2010-09-09' 2 | Description: MATLAB Production Server R2025b with new VPC 3 | Parameters: 4 | KeyPairName: 5 | Type: AWS::EC2::KeyPair::KeyName 6 | Description: Enter the key pair name to use for all EC2 instances. If you do not have a key pair, create one in the EC2 console >> Network & Security >> Key Pairs. 7 | ConstraintDescription: Must be the name of an existing EC2 Key Pair. 8 | ClientIPAddress: 9 | Description: >- 10 | Allowed IP addresses that can connect to the MATLAB Production Server VM(s), dashboard VM and MATLAB execution endpoint. Specify the range in CIDR notation in the format IP Address/Suffix, where Suffix is an integer between 11 | 0 and 32. Example: 10.0.0.1/24. 12 | Type: String 13 | MinLength: 9 14 | MaxLength: 18 15 | AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2}) 16 | ConstraintDescription: Must be a valid IP in CIDR notation of the form x.x.x.x/x 17 | AllowPublicIP: 18 | Description: Specify whether the deployed solution should use public IP addresses. 19 | Type: String 20 | AllowedValues: 21 | - 'Yes' 22 | - 'No' 23 | Default: 'Yes' 24 | NumWorkerNodes: 25 | Description: Each MATLAB Production Server instance runs on a VM. Specify the number of VMs to run server instances. 26 | Type: Number 27 | Default: 2 28 | MinValue: 1 29 | MaxValue: 24 30 | WorkerInstanceType: 31 | Description: >- 32 | Specify the EC2 instance type to use for a server VM. Each server VM runs multiple MATLAB workers. The default number of workers is 4. Choosing a VM size where the number of vCPUs on a VM matches 33 | the number of workers is recommended. For more information on Amazon EC2 instance types and sizes, see https://aws.amazon.com/ec2/instance-types/ 34 | Default: m6i.xlarge 35 | Type: String 36 | AllowedValues: 37 | - m6i.xlarge 38 | - m6i.2xlarge 39 | - m6i.4xlarge 40 | - m6i.8xlarge 41 | - m6i.12xlarge 42 | - m6i.16xlarge 43 | - m6i.24xlarge 44 | - m6i.metal 45 | - m6a.xlarge 46 | - m6a.xlarge 47 | - m6a.2xlarge 48 | - m6a.4xlarge 49 | - m6a.8xlarge 50 | - m6a.12xlarge 51 | - m6a.16xlarge 52 | - m6a.24xlarge 53 | - m6a.metal 54 | - c6i.xlarge 55 | - c6i.2xlarge 56 | - c6i.4xlarge 57 | - c6i.8xlarge 58 | - c6i.12xlarge 59 | - c6i.16xlarge 60 | - c6i.24xlarge 61 | - c6i.32xlarge 62 | - c6i.metal 63 | - c6a.xlarge 64 | - c6a.2xlarge 65 | - c6a.4xlarge 66 | - c6a.8xlarge 67 | - c6a.12xlarge 68 | - c6a.16xlarge 69 | - c6a.24xlarge 70 | - c6a.32xlarge 71 | - c6a.48xlarge 72 | - c6a.metal 73 | - r6i.xlarge 74 | - r6i.2xlarge 75 | - r6i.4xlarge 76 | - r6i.8xlarge 77 | - r6i.12xlarge 78 | - r6i.16xlarge 79 | - r6i.24xlarge 80 | - r6i.32xlarge 81 | - r6i.metal 82 | - r6a.xlarge 83 | - r6a.2xlarge 84 | - r6a.4xlarge 85 | - r6a.8xlarge 86 | - r6a.12xlarge 87 | - r6a.16xlarge 88 | - r6a.24xlarge 89 | - r6a.32xlarge 90 | - r6a.48xlarge 91 | - r6a.metal 92 | ConstraintDescription: Specify worker instance type. 93 | WorkerSystem: 94 | Description: Choose between Windows (Windows Server) and Linux (Ubuntu). 95 | Type: String 96 | AllowedValues: 97 | - Ubuntu 98 | - Windows 99 | SSLCertificateARN: 100 | Description: Enter the ARN to use for HTTPS connections to the server and dashboard. The ARN you provide must match an existing certificate in the AWS Certificate Manager. 101 | Type: String 102 | AllowedPattern: arn:[\w+=/,.@-]+:[\w+=/,.@-]+:[\w+=/,.@-]*:[0-9]+:[\w+=,.@-]+(/[\w+=,.@-]+)* 103 | ConstraintDescription: Must be a valid certificate ARN of the form arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012 104 | EnablePersistence: 105 | Description: Specify whether you want to deploy ElastiCache for Redis that lets you use the persistence functionality on the server. 106 | Type: String 107 | AllowedValues: 108 | - 'Yes' 109 | - 'No' 110 | Default: 'No' 111 | Username: 112 | Description: Specify the administrator username to log in to the MATLAB Production Server dashboard. 113 | Type: String 114 | AllowedPattern: ^[^'\s\$]*$ 115 | ConstraintDescription: Must not contain whitespace, single quote or $ sign 116 | Password: 117 | Description: Specify the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard. 118 | Type: String 119 | AllowedPattern: ^[^'\s\$]*$ 120 | ConstraintDescription: Must not contain whitespace, single quote or $ sign 121 | NoEcho: true 122 | ConfirmPassword: 123 | Description: Reenter the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard. 124 | Type: String 125 | NoEcho: true 126 | Metadata: 127 | AWS::CloudFormation::Interface: 128 | ParameterGroups: 129 | - Label: 130 | default: Server 131 | Parameters: 132 | - NumWorkerNodes 133 | - WorkerInstanceType 134 | - WorkerSystem 135 | - EnablePersistence 136 | - Label: 137 | default: Dashboard Login 138 | Parameters: 139 | - Username 140 | - Password 141 | - ConfirmPassword 142 | - Label: 143 | default: Network 144 | Parameters: 145 | - KeyPairName 146 | - ClientIPAddress 147 | - AllowPublicIP 148 | - SSLCertificateARN 149 | ParameterLabels: 150 | KeyPairName: 151 | default: Name of Existing Key Pair 152 | NumWorkerNodes: 153 | default: Number of Server VMs 154 | SSLCertificateARN: 155 | default: ARN of SSL Certificate 156 | WorkerInstanceType: 157 | default: Server VM Type 158 | WorkerSystem: 159 | default: Choose between Windows (Windows Server) and Linux (Ubuntu). 160 | Username: 161 | default: Username for Dashboard 162 | Password: 163 | default: Password for MATLAB Production Server and License Server dashboards 164 | ConfirmPassword: 165 | default: Confirm Password for MATLAB Production Server and License Server dashboards 166 | ClientIPAddress: 167 | default: Allow Connections from IP Address 168 | AllowPublicIP: 169 | default: Make Solution Available over Internet 170 | EnablePersistence: 171 | default: Create ElastiCache for Redis 172 | Rules: 173 | matchPasswords: 174 | Assertions: 175 | - Assert: !Equals 176 | - !Ref 'Password' 177 | - !Ref 'ConfirmPassword' 178 | AssertDescription: Passwords do not match 179 | Conditions: 180 | DoPublicIP: !Equals 181 | - 'Yes' 182 | - !Ref 'AllowPublicIP' 183 | Mappings: 184 | VarMap: 185 | NestedTemplateURLs: 186 | vpsStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2025b_mps_refarch/mw-aws-refarch-vpc-stack-cf.yml 187 | productionServerStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2025b_mps_refarch/mw-aws-refarch-cf.yml 188 | Outputs: 189 | MATLABProductionServerAdminVM: 190 | Description: Admin VM that hosts MATLAB Production Server dashboard 191 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVM' 192 | MatlabProductionServerLicenseServer: 193 | Description: Address of the network license manager for MATLAB dashboard 194 | Value: !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerAddress' 195 | MATLABProductionServerApplicationsBucket: 196 | Description: S3 Bucket for MATLAB Production Server applications (CTF files) 197 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerApplicationsBucket' 198 | MATLABProductionServerDashboardURL: 199 | Description: URL to access MATLAB Production Server dashboard 200 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardURL' 201 | MATLABProductionServerFunctionExecutionURL: 202 | Description: MATLAB Execution Endpoint 203 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerFunctionExecutionURL' 204 | MATLABProductionServerAdminVMLogGroup: 205 | Description: CloudWatch log group for admin VM 206 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVMLogGroup' 207 | MATLABProductionServerWorkerVMLogGroup: 208 | Description: CloudWatch log group for worker VM 209 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerWorkerVMLogGroup' 210 | MATLABProductionServerAutoScalingGroup: 211 | Description: Auto Scaling Group for managing the number of server VMs 212 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAutoScalingGroup' 213 | MATLABProductionServerCloudStackCacheClusterAddress: 214 | Description: Hostname of Redis cache cluster 215 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterAddress' 216 | MATLABProductionServerCloudStackCacheClusterPort: 217 | Description: Port number of Redis cache cluster 218 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterPort' 219 | MATLABProductionServerLoadBalancer: 220 | Description: Load balancer to change SSL certificate for MATLAB execution endpoint 221 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerLoadBalancer' 222 | MATLABProductionServerDashboardLoadBalancer: 223 | Description: Load balancer to change SSL certificate for MATLAB Production Server dashboard 224 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardLoadBalancer' 225 | Resources: 226 | MatlabProductionServerVPCStack: 227 | Type: AWS::CloudFormation::Stack 228 | Properties: 229 | TemplateURL: !FindInMap 230 | - VarMap 231 | - NestedTemplateURLs 232 | - vpsStackURL 233 | Parameters: 234 | AllowPublicIP: !Ref 'AllowPublicIP' 235 | MatlabProductionServerLicenseServerStack: 236 | Type: AWS::CloudFormation::Stack 237 | Properties: 238 | TemplateURL: https://network-license-manager-for-matlab-on-aws.s3.amazonaws.com/R2025b/license-manager-template.json 239 | Parameters: 240 | VPC: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCID' 241 | Subnet: !GetAtt 'MatlabProductionServerVPCStack.Outputs.PublicSubnet' 242 | ClientIPAddress: !If 243 | - DoPublicIP 244 | - !Ref 'ClientIPAddress' 245 | - !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCCIDR' 246 | ServerInstanceType: t2.micro 247 | SSHKeyName: !Ref 'KeyPairName' 248 | Password: !Ref 'Password' 249 | ConfirmPassword: !Ref 'ConfirmPassword' 250 | MatlabProductionServerResourcesStack: 251 | DependsOn: 252 | - MatlabProductionServerVPCStack 253 | Type: AWS::CloudFormation::Stack 254 | Properties: 255 | TemplateURL: !FindInMap 256 | - VarMap 257 | - NestedTemplateURLs 258 | - productionServerStackURL 259 | Parameters: 260 | ExistingVPC: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCID' 261 | ExistingVPCAddress: !GetAtt 'MatlabProductionServerVPCStack.Outputs.VPCCIDR' 262 | ExistingSubnet1: !GetAtt 'MatlabProductionServerVPCStack.Outputs.Subnet1' 263 | ExistingSubnet2: !GetAtt 'MatlabProductionServerVPCStack.Outputs.Subnet2' 264 | KeyPairName: !Ref 'KeyPairName' 265 | ClientIPAddress: !Ref 'ClientIPAddress' 266 | AllowPublicIP: !Ref 'AllowPublicIP' 267 | SSLCertificateARN: !Ref 'SSLCertificateARN' 268 | NumWorkerNodes: !Ref 'NumWorkerNodes' 269 | WorkerInstanceType: !Ref 'WorkerInstanceType' 270 | WorkerSystem: !Ref 'WorkerSystem' 271 | EnablePersistence: !Ref 'EnablePersistence' 272 | Username: !Ref 'Username' 273 | Password: !Ref 'Password' 274 | ConfirmPassword: !Ref 'ConfirmPassword' 275 | LicenseServerSecurityGroup: !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.SecurityGroup' 276 | LicenseServerPrivateDNS: !Join 277 | - '' 278 | - - 27000 279 | - '@' 280 | - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerPrivateDNS' 281 | -------------------------------------------------------------------------------- /UPGRADES.md: -------------------------------------------------------------------------------- 1 | # Upgrading an Existing Deployment 2 | 3 | ## Overview 4 | 5 | This page shows you how to upgrade the release of a MATLAB® Production Server™ deployment that is hosted on Amazon Web Services (AWS) and deployed using the reference architecture. 6 | 7 | 8 | ## Prerequisites 9 | 10 | - An existing deployment of MATLAB Production Server, as deployed by the reference architecture. 11 | - A backup of all applications uploaded to your current MATLAB Production Server deployment. You can create this by copying the contents of the S3 bucket containing your application code archives (CTF files) to a secure location. 12 | - (Optional) An existing virtual private cloud (VPC) with the required subnets and ports to deploy MATLAB Production Server to it. For more information on these requirements, navigate to the [reference architecture documentation](https://github.com/mathworks-ref-arch/matlab-production-server-on-aws) for the MATLAB release of your existing deployment. Required subnets and ports are described in "Step 3. Configure Existing VPC" for R2023a and later, or "How do I use an existing VPC to deploy MATLAB Production Server" in the FAQ section for earlier releases. If you already have an existing deployment in this VPC, these requirements should already be met. 13 | 14 | 15 | ## Considerations 16 | 17 | ### URL Compatibility 18 | Your client applications might access MATLAB Production Server applications using the default MATLAB Execution Endpoint URL ```MATLABProductionServerFunctionExecutionURL``` provided in the **Outputs** tab of the root stack. If they do, note that this URL is different for your new deployment. 19 | 20 | You can avoid this issue in future upgrades by setting a custom DNS name for the MATLAB Execution Endpoint load balancer ```MATLABProductionServerLoadBalancer```. See [Configure a custom domain name for your Classic Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/using-domain-names-with-elb.html) for instructions. 21 | 22 | Set a custom DNS name for the MATLAB Production Server dashboard load balancer ```MATLABProductionServerDashboardLoadBalancer``` to preserve this URL as well. 23 | 24 | ### Deployed Applications 25 | MATLAB Production Server supports MATLAB Runtime versions from the six most recent releases. You can migrate applications that were compiled using a supported MATLAB Runtime version to the new MATLAB Production Server deployment: 26 | - If your application is compiled using a supported MATLAB Runtime version, follow [Step 3](UPGRADES.md#step-3-migrate-applications-to-the-new-deployment) of this procedure to migrate it. 27 | - For all other applications, recompile your application using a supported version of MATLAB Runtime. See the [MATLAB Compiler SDK documentation](https://www.mathworks.com/help/compiler_sdk/mps_dev_test/create-a-deployable-archive-for-matlab-production-server.html) for information on how to create deployable archives for MATLAB Production Server. 28 | 29 | See the [MATLAB Production Server on AWS README](https://github.com/mathworks-ref-arch/matlab-production-server-on-aws#deploy-reference-architecture-for-your-release) for a complete list of supported MATLAB Runtime versions for your release. 30 | 31 | ### Server Downtime 32 | Take these measures to help reduce the time MATLAB Production Server and your deployed applications are inaccessible during the upgrade process: 33 | 34 | - **Use a new network license manager for your new deployment.** Doing so allows you to keep both deployments functional while deployed applications and client applications are migrated. Note that to run two instances of MATLAB Production Server simultaneously, you must have two separate license instances. 35 | - **Set a custom URL for your MATLAB execution endpoint.** Doing so allows you to upgrade your MATLAB Production Server deployment without needing to update your client applications. Refer to the [URL Compatibility](#url-compatibility) section above for instructions on setting a custom DNS name for this endpoint. 36 | - **Compile deployed applications using the newest supported MATLAB Runtime version**. MATLAB Production Server supports the six most recent versions of MATLAB Runtime, so applications compiled for existing deployments of recent releases can be immediately migrated to a new deployment without needing to be recompiled. Deployed applications can be updated and redeployed after the upgrade process is complete. 37 | 38 | 39 | ## Upgrade Steps 40 | 41 | ### Step 1. Deploy Newest MATLAB Production Server Release from GitHub CloudFormation Template 42 | When you upgrade the deployment, you can also deploy a new VPC and a new network license manager. This table summarizes the standard workflows. 43 | | | Existing Network License Manager | New Network License Manager | 44 | | --- | ------------ | ------- | 45 | | **Existing VPC** | Deploy the “Existing VPC” template, selecting **No** for **DeployLicenseServer**. | Deploy the “Existing VPC” template, selecting **Yes** for **DeployLicenseServer**. | 46 | | **New VPC** | Not recommended | Deploy the "New VPC" template. | 47 | 48 | 49 | *If using a new VPC*: 50 | 1. In the GitHub repository for [MATLAB Production Server on AWS](https://github.com/mathworks-ref-arch/matlab-production-server-on-aws), go to the [MATLAB release](https://github.com/mathworks-ref-arch/matlab-production-server-on-aws#deploy-reference-architecture-for-your-release) you are deploying. Under “Step 1. Launch Template,” click **Launch Stack**. (For R2023a and later, click the button under **New VPC**.) 51 | 2. Fill out the template fields, then click **Create Stack**. You can monitor the resource creation from the **Stacks** section of the CloudFormation service in the AWS Portal. 52 | 3. Wait for the resource creation process to complete for your deployed stack. 53 | 54 | *If using an existing VPC*: 55 | 1. In the GitHub repository for [MATLAB Production Server on AWS](https://github.com/mathworks-ref-arch/matlab-production-server-on-aws), go to the [MATLAB release](https://github.com/mathworks-ref-arch/matlab-production-server-on-aws#deploy-reference-architecture-for-your-release) you are deploying. Go to the FAQ section and select **Launch Stack** under “How do I use an existing VPC to deploy MATLAB Production Server?” (For R2023a and later, click the button in Step 1 under **Existing VPC**.) 56 | 2. Fill out the template fields as specified in the GitHub documentation for the release you are deploying, then click **Create Stack**. You can monitor the resource creation from the **Stacks** section of the CloudFormation service in the AWS Portal. 57 | 3. Wait for the resource creation process to complete for your deployed stack. 58 | 59 | ### Step 2. Upload License File 60 | 1. Log in to the Network License Manager Dashboard. 61 | - *If using a new network license manager*:
  1. In the **Outputs** tab for your new stack, locate the ```MatlabProductionServerLicenseServer``` key and click the corresponding URL. This takes you to the Network License Manager for MATLAB Dashboard login page.
  2. Log in with the username ```manager``` and the password you specified while creating the stack.
62 | - *If using an existing network license manager*:
  1. In the AWS Console, navigate to the EC2 instance for your network license manager. Locate the public IPv4 DNS for this instance and click the corresponding URL. This takes you to the Network License Manager for MATLAB Dashboard login page.
  2. Log in with the username and password configured when initially deploying this License Manager.
  3. Go to the [reference architecture documentation](https://github.com/mathworks-ref-arch/matlab-production-server-on-aws#deploy-reference-architecture-for-your-release) for the MATLAB release of your new deployment. Follow the additional configuration steps in the “How to use an existing license server in an existing VPC?” subsection, under “How do I use an existing VPC to deploy MATLAB Production Server?” in the FAQ section. (For R2023a and later, follow the steps under "Use Existing License Server in Existing VPC," under "Additional Information.")
63 | 2. Follow the instructions in the dashboard to retrieve and upload the license file. Make sure to choose the release and operating system that match your new deployment. 64 | 3. (Optional) Deactivate the previous license in the MathWorks License Center. 65 | 66 | ### Step 3. Migrate Applications to New Deployment 67 | **Note**: These instructions are for deployed applications compiled using one of the six most recent versions of MATLAB Runtime. For all other applications, refer to [Deployed Applications](UPGRADES.md#deployed-applications). 68 | 69 | 1. Go to the S3 bucket containing the applications for your existing deployment. This can be found in the **Outputs** tab for your existing deployment's stack, with the key ```MATLABProductionServerApplicationsBucket```. 70 | 2. Select all code archives (CTF files) in the **auto_deploy** folder, then select **Actions > Move**. 71 | 3. Set the destination as the **auto_deploy** folder in the S3 bucket for your new deployment. This can be found in **Outputs** tab for your new stack, with the key ```MATLABProductionServerApplicationsBucket```. 72 | 4. Select **Move**. 73 | 74 | ### Step 4. Verify Access to MATLAB Production Server Dashboard and Applications for New Deployment 75 | 1. In the **Outputs** tab for your new stack, locate the ```MatlabProductionServerDashboardURL``` key and click the corresponding URL. This takes you to the dashboard login page. 76 | 2. Log in using the administrator username and password that you specified in the **Dashboard Login** section while creating the stack. 77 | 3. Confirm that the displayed server information matches the version and operating system specified during deployment, and that all deployed applications appear in the **Applications** tab. 78 | 79 | ### Step 5. Delete Unused Resources from Previous Deployment 80 | Deploying MATLAB Production Server from the reference architecture creates a CloudFormation stack in AWS. This root stack deploys up to four nested stacks, which can be viewed from the **Resources** tab for the root stack. Refer to this table for the nested stacks that you can safely delete from your previous deployment. If you want to delete all nested stacks deployed as part of your previous deployment, delete the root stack. 81 | | | Existing Network License Manager | New Network License Manager | 82 | | --- | ------------ | ------- | 83 | | **Existing VPC** |
  1. ```MatlabProductionServerResourcesStack```
  2. ```MatlabProductionServerCustomParamLambdaFunctionStack```
|
  1. ```MatlabProductionServerResourcesStack```
  2. ```MatlabProductionServerLicenseServerStack```
  3. ```MatlabProductionServerCustomParamLambdaFunctionStack```
| 84 | | **New VPC** | Not recommended |
  1. ```MatlabProductionServerResourcesStack```
  2. ```MatlabProductionServerLicenseServerStack```
  3. ```MatlabProductionServerVPCStack```
  4. ```MatlabProductionServerCustomParamLambdaFunctionStack```
| 85 | 86 | Note that when deleting nested stacks, you are prompted to confirm if you want to delete the root stack instead. Do not delete the root stack unless you intend to delete all resources included in your previous deployment. 87 | 88 | A summary of each stack and its contents follows. For more detailed information on the stack resources, refer to the GitHub documentation for your deployment. 89 | - ```MatlabProductionServerResourcesStack``` — Contains all resources specific to MATLAB Production Server. This stack is always deployed, and you can delete it regardless of the configuration used by your new deployment. This stack also has its own nested stack ```MatlabProductionServerLambdaFunctionsStack```, which is deleted when you delete the main stack. 90 | - ```MatlabProductionServerLicenseServerStack``` — Contains the network license manager and related resources. This stack is deployed when you deploy to a new VPC or when you deploy to an existing VPC with the **DeployLicenseServer** field set to **Yes**. You can delete this stack if you are using a new network license manager or a license manager not deployed by this stack. 91 | - ```MatlabProductionServerVPCStack``` — Contains the VPC and related resources. This stack is deployed when you use the standard template. You can delete this stack if you are using a VPC that was not deployed by this stack. 92 | - ```MatlabProductionServerCustomParamLambdaFunctionStack``` (R2023b and later) — Contains a Lambda function used to retrieve the CIDR range of an existing VPC. This stack is deployed when you use the "Existing VPC" template. You can delete this stack regardless of the configuration used by your new deployment. 93 | 94 | See [Working with stacks](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacks.html) for more information on risks and best practices when deleting AWS CloudFormation stacks. -------------------------------------------------------------------------------- /releases/R2023b/README.md: -------------------------------------------------------------------------------- 1 | # MATLAB Production Server on Amazon Web Services - R2023b 2 | 3 | # Deployment Steps 4 | Follow these steps to deploy the R2023b MATLAB Production Server reference architecture on AWS. To deploy reference architectures for other releases, see [Deploy Reference Architecture for Your Release](/README.md?tab=readme-ov-file#deploy-reference-architecture-for-your-release). 5 | ## Step 1. Launch Template 6 | Before launching the template, make sure that you have selected one of these supported AWS regions from the top navigation: 7 | 8 | Then, click the appropriate **Launch Stack** button to launch the stack configuration template for deploying resources onto your AWS account. You can deploy resources onto either a new or existing VPC. 9 | 10 | | Release | New VPC | Existing VPC | 11 | |---------|---------| ------------ | 12 | | R2023b | | | 13 | 14 | The AWS Management Console opens in your web browser. 15 | 16 | ## Step 2. Configure Stack 17 | On the **Create Stack** page, specify these parameters: 18 | 19 | | Parameter Name | Value | 20 | |--------------- | ----- | 21 | | **Stack name** | Choose a name for the stack. After the deployment finishes, this name is displayed in the AWS console.

*Example*: Boston

| 22 | ||**Server**| 23 | | **Number of Server VMs** | Choose the number of AWS instances to start for the server.

*Example*: 6

For example, if you have a 24-worker MATLAB Production Server license and select `m6.xlarge` (4 cores) as the **Number of server VMs**, you need 6 worker nodes to fully use the workers in your license.

You can always underprovision the number instances, in which case you may end up using fewer workers than you are licensed for.

| 24 | | **Server VM Type** | Choose the AWS instance type to use for the server instances. All AWS instance types are supported. For more information, see [Amazon EC2 Instance Types](https://aws.amazon.com/ec2/instance-types/).

*Example*: m6.xlarge

| 25 | | **Server VM Operating System** | Choose between Windows (Windows Server 2022) and Linux (Ubuntu 22) to use for the server instances. | 26 | | **Create ElastiCache for Redis** | Choose whether you want to create a Redis ElastiCache service. Creating this service enables you to use the persistence functionality of the server. Persistence provides a mechanism to cache data between calls to MATLAB code running on a server instance. | 27 | ||**Dashboard Login**| 28 | | **Username for MATLAB Production Server Dashboard** | Specify the administrator username for logging in to the MATLAB Production Server Dashboard. | 29 | | **Password for MATLAB Production Server and License Server Dashboards** | Specify the password to use for logging in to MATLAB Production Server Dashboard and Network License Manager for MATLAB Dashboard. | 30 | | **Confirm Password for MATLAB Production Server and License Server Dashboards** | Reenter the password to use for logging in to the MATLAB Production Server Dashboard and Network License Manager for MATLAB Dashboard. | 31 | | |**Network**| 32 | | **Name of Existing Key Pair** | Select the name of an existing EC2 Key Pair to allow access to all the VMs in the stack. For information about creating an Amazon EC2 key pair, see [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#having-ec2-create-your-key-pair).

*Example*: boston-keypair

| 33 | | **Allow Connections from IP Address** | Specify the IP address range that is allowed to connect to the dashboard that manages the server. The format for this field is IP Address/Mask.

Example: 10.0.0.1/32

| 34 | | **Make Solution Available over Internet** | Choose `Yes` if you want your solution to use public IP addresses. | 35 | | **ARN of SSL Certificate** | Provide the Amazon Resource Name (ARN) of an existing certificate in the AWS Certificate Manager. This certificate enables secure HTTPS communication to the HTTPS server endpoint. For information on creating and uploading a self-signed certificate, see [Create and sign an X509 certificate](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-ssl.html) and [Import SSL Certificate](https://www.mathworks.com/help/mps/server/manage-aws-resources-reference-architecture.html#mw_b0d98763-0e90-48fc-bcc3-ff2755ffe722).

*Example*: `arn:aws:acm:us-east-1:12345:certificate/123456789012`

| 36 | 37 | ## Step 3. Configure Existing VPC 38 | 39 | >**Note**: If you are deploying to a new VPC, skip this step. 40 | 41 | To deploy MATLAB Production Server onto an existing VPC, specify these additional parameters. 42 | 43 | | Parameter Name | Value | 44 | |--------------- | ----- | 45 | ||**Network License Manager**| 46 | | **Deploy License Server** | Specify whether you want to deploy the Network License Manager for MATLAB. This parameter is available only if you use the deployment template for an existing VPC.

Instead of specifying values for the following two parameters, you may choose to configure the License Server manually. For manual configuration steps for using an existing License Server with an existing VPC, see the [Use Existing License Server in Existing VPC](#use-existing-license-server-in-existing-vpc) section.

| 47 | |**IP Address and port number of Existing Network License Manager**|

Optional parameter: Specify the port number and private DNS name or private IP address of the network license manager that has already been deployed to the existing VPC. Specify it in the format *port*@*privateDNSname*, for example, `27000@ip-172-30-1-89.ec2.internal` or `27000@172.30.1.89`. By default, the license manager uses port 27000. Leave this field blank if you are deploying a new network license manager.

| 48 | |**Security Group of Existing Network License Manager**| Optional parameter: Specify the security group of the network license manager that has already been deployed to the existing VPC. Leave this field blank if you are deploying a new network license manager.| 49 | ||**Existing VPC**| 50 | | **Existing VPC ID** | ID of your existing VPC. | 51 | | IP address range of existing VPC | IP address range from the existing VPC. To find the IP address range:
  1. Log in to the AWS Console.
  2. Navigate to the VPC dashboard and select your VPC.
  3. Click the **CIDR blocks** tab.
  4. Get the IP address range listed under **IPv4 CIDR Blocks**.
| 52 | | **Subnet 1 ID** | ID of an existing subnet that will host the dashboard and other resources. | 53 | | **Subnet 2 ID** | ID of an existing subnet that will host the application load balancer. | 54 | 55 | - If Subnet 1 and Subnet 2 are public, then you must connect the EC2 VPC endpoint and the AutoScaling VPC endpoint to the VPC. 56 | - If Subnet 1 and Subnet 2 are private, then you must either deploy a NAT gateway in the VPC, or connect all of these endpoints to the VPC: 57 | - EC2 VPC endpoint 58 | - AutoScaling VPC endpoint 59 | - S3 VPC endpoint 60 | - CloudFormation endpoint 61 | 62 | For more information about creating endpoints, see the [AWS documentation](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint). 63 | 64 | You also need to open these ports in your VPC: 65 | 66 | | Port | Description | 67 | |------|------------ | 68 | | `443` | Required for communicating with the dashboard and the MATLAB execution endpoint. | 69 | | `8000`, `8002`, `9910` | Required for communication between the dashboard and workers within the VPC. These ports do not need to be open to the Internet. | 70 | | `27000`, `50115` | Required for communication between the Network License Manager and the workers. | 71 | | `22`, `3389` | Required for Remote Desktop functionality. This can be used for troubleshooting and debugging. | 72 | 73 | ## Step 4. Create Stack 74 | Review or edit your stack details. You must select the acknowledgements to create IAM resources. Otherwise, the deployment produces a `Requires capabilities : [CAPABILITY_IAM]` error and fails to create resources. 75 | 76 | When you are satisfied with your stack configuration, click **Create stack**. AWS starts creating the resources for your server environment and opens you to the **Events** tab for the stack. 77 | 78 | >**Note**: Resource creation can take up to 20 minutes. After resource creation, it can take up to 15 minutes for the resources to be active. 79 | 80 | ## Step 5. Upload License File 81 | 1. On the **Events** tab for your stack, wait for the status to reach **CREATE\_COMPLETE**. 82 | 1. On the **Outputs** tab, in the row for the `MatlabProductionServerLicenseServer` key, click the corresponding URL listed under **Value** to open the Network License Manager for MATLAB Dashboard login page. 83 | 1. Log in to the Network License Manager for MATLAB Dashboard. 84 | 1. Upload your MATLAB Production Server license by following the instructions in the dashboard. 85 | 86 | 87 | ## Step 6. Connect and Log In to MATLAB Production Server Dashboard 88 | > **Note**: The Internet Explorer web browser is not supported for interacting with the dashboard. 89 | 90 | 1. On the **Outputs** tab for your stack, in the row for the `MatlabProductionServerDashboardURL` key, click the corresponding URL listed under **Value**. This URL is the HTTPS endpoint to the MATLAB Production Server Dashboard and brings you to the dashboard login page. 91 | 1. Log in using the administrator username and password that you specified in the **Dashboard Login** section while creating the stack. For more information on how to use the dashboard, see [Manage MATLAB Production Server Using the Dashboard](https://www.mathworks.com/help/mps/server/manage-matlab-production-server-using-the-dashboard.html). 92 | 93 | You are now ready to use MATLAB Production Server on AWS. 94 | 95 | To run applications on MATLAB Production Server, you need to create applications using MATLAB Compiler SDK. For more information, see [Create Deployable Archive for MATLAB Production Server](https://www.mathworks.com/help/compiler_sdk/mps_dev_test/create-a-deployable-archive-for-matlab-production-server.html). 96 | 97 | # Additional Information 98 | 99 | ## Use Existing License Server in Existing VPC 100 | To manage MATLAB Production Server licenses, you can deploy an existing Network License Manager server for MATLAB instead of deploying a new one. To use an existing license server, on the *Deploy License Server* step of the deployment, select `No`. 101 | 102 | The license manager must be in the same VPC and security group as MATLAB Production Server. You must also add the security group of the server VMs to the security group of the license server. 103 | 1. In the AWS management console, select the stack that you deployed. 104 | 1. In the stack details page, click **Resources**. 105 | 1. In the **Logical ID** named ```SecurityGroup```, click the corresponding URL listed under **Physical ID** to open the security group details. 106 | 1. Click the **Inbound Rules** tab, and then click **Edit Inbound Rules**. 107 | 1. Click **Add Rule**. 108 | 1. In the **Type** dropdown, select ```All TCP```. 109 | 1. Under **Source**, search and add the ```MatlabProductionServerCloudStackElb1Sg``` security group. 110 | 1. Click **Save Rules**. 111 | 112 | You must also add the private IP address of the license server to the `License Server` property in the **Settings** tab of the dashboard. 113 | You can find the IP address of the license server from the AWS management console. 114 | 1. In the AWS management console, navigate to the EC2 dashboard. 115 | 1. Select the license server instance. 116 | 1. In the instance details, copy the value of **Private IPs**. For example: 172.30.1.126 117 | 1. Add the private IP to the `License Server` property. For example: ` 27000@172.30.1.126` 118 | 119 | ## Delete Your Stack 120 | 121 | Once you finish using your stack, to avoid incurring further cost, it is recommended that you delete all resources. 122 | 123 | If you are using an existing license server, and have added the security group of the server VMs to the security group of the license server, you must delete the inbound rules before you delete the stack. 124 | 1. In the AWS management console, select the stack that you deployed. 125 | 1. On the details page your stack, click the **Resources** tab. 126 | 1. In the **Logical ID** named `SecurityGroup`, click the corresponding URL listed under **Physical ID** to open the security group details. 127 | 1. On the **Inbound Rules** tab, click **Edit Inbound Rules**. 128 | 1. For each rule that has the **Source** tag set to `matlab-production-server-cloud-stack-elb-1-sg`, click **Delete Rule**. 129 | 1. Click **Save Rules**. 130 | 131 | To delete the stack, do the following: 132 | 1. Log in to the AWS Console. 133 | 3. Go to the AWS Cloud Formation page and select the stack that you created. 134 | 3. Click **Delete**. 135 | 136 | If you do not want to delete the entire deployment but want to minimize the cost, you can bring the number of instances in the Auto Scaling Group down to 0 and then scale it back up when the need arises. 137 | 138 | ## Get License Server MAC Address 139 | The Network License Manager for MATLAB reference architecture manages the MATLAB Production Server license file. The deployment templates for the MATLAB Production Server reference architecture provide an option to deploy the license manager. You can also use an existing license manager that is located in the same VPC and security group as the MATLAB Production Server instances. For more information about the Network License Manager for MATLAB reference architecture, see [Network License Manager for MATLAB](https://github.com/mathworks-ref-arch/license-manager-for-matlab-on-aws). 140 | 141 | >**NOTE**: For a new license manager deployed with MATLAB Production Server, the license manager MAC address is available only after the deployment to the cloud is complete. For information on deploying the solution, see [Deployment Steps](#deployment-steps). 142 | 143 | To get the MAC address of the license manager: 144 | 1. Log in to the Network License Manager for MATLAB Dashboard. For a license manager deployed with the MATLAB Production Server deployment, use the following credentials:
145 | Username: **manager**
146 | Password: Enter the password that you specified during the deployment process. 147 | 1. Click **Administration** and then **License**. 148 | 1. Copy the license server MAC address displayed at the top. -------------------------------------------------------------------------------- /releases/R2024a/README.md: -------------------------------------------------------------------------------- 1 | # MATLAB Production Server on Amazon Web Services - R2024a 2 | 3 | # Deployment Steps 4 | Follow these steps to deploy the R2024a MATLAB Production Server reference architecture on AWS. To deploy reference architectures for other releases, see [Deploy Reference Architecture for Your Release](/README.md?tab=readme-ov-file#deploy-reference-architecture-for-your-release). 5 | ## Step 1. Launch Template 6 | Before launching the template, make sure that you have selected one of these supported AWS regions from the top navigation: 7 | 8 | Then, click the appropriate **Launch Stack** button to launch the stack configuration template for deploying resources onto your AWS account. You can deploy resources onto either a new or existing VPC. 9 | 10 | | Release | New VPC | Existing VPC | 11 | |---------|---------| ------------ | 12 | | R2024a | | | 13 | 14 | The AWS Management Console opens in your web browser. 15 | 16 | ## Step 2. Configure Stack 17 | On the **Create Stack** page, specify these parameters: 18 | 19 | | Parameter Name | Value | 20 | |--------------- | ----- | 21 | | **Stack name** | Choose a name for the stack. After the deployment finishes, this name is displayed in the AWS console.

*Example*: Boston

| 22 | ||**Server**| 23 | | **Number of Server VMs** | Choose the number of AWS instances to start for the server.

*Example*: 6

For example, if you have a 24-worker MATLAB Production Server license and select `m6.xlarge` (4 cores) as the **Number of server VMs**, you need 6 worker nodes to fully use the workers in your license.

You can always underprovision the number instances, in which case you may end up using fewer workers than you are licensed for.

| 24 | | **Server VM Type** | Choose the AWS instance type to use for the server instances. All AWS instance types are supported. For more information, see [Amazon EC2 Instance Types](https://aws.amazon.com/ec2/instance-types/).

*Example*: m6.xlarge

| 25 | | **Server VM Operating System** | Choose between Windows (Windows Server 2022) and Linux (Ubuntu 22) to use for the server instances. | 26 | | **Create ElastiCache for Redis** | Choose whether you want to create a Redis ElastiCache service. Creating this service enables you to use the persistence functionality of the server. Persistence provides a mechanism to cache data between calls to MATLAB code running on a server instance. | 27 | ||**Dashboard Login**| 28 | | **Username for MATLAB Production Server Dashboard** | Specify the administrator username for logging in to the MATLAB Production Server Dashboard. | 29 | | **Password for MATLAB Production Server and License Server Dashboards** | Specify the password to use for logging in to MATLAB Production Server Dashboard and Network License Manager for MATLAB Dashboard. | 30 | | **Confirm Password for MATLAB Production Server and License Server Dashboards** | Reenter the password to use for logging in to the MATLAB Production Server Dashboard and Network License Manager for MATLAB Dashboard. | 31 | | |**Network**| 32 | | **Name of Existing Key Pair** | Select the name of an existing EC2 Key Pair to allow access to all the VMs in the stack. For information about creating an Amazon EC2 key pair, see [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#having-ec2-create-your-key-pair).

*Example*: boston-keypair

| 33 | | **Allow Connections from IP Address** | Specify the IP address range that is allowed to connect to the dashboard that manages the server. The format for this field is IP Address/Mask.

Example: 10.0.0.1/32

| 34 | | **Make Solution Available over Internet** | Choose `Yes` if you want your solution to use public IP addresses. | 35 | | **ARN of SSL Certificate** | Provide the Amazon Resource Name (ARN) of an existing certificate in the AWS Certificate Manager. This certificate enables secure HTTPS communication to the HTTPS server endpoint. For information on creating and uploading a self-signed certificate, see [Create and sign an X509 certificate](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-ssl.html) and [Import SSL Certificate](https://www.mathworks.com/help/mps/server/manage-aws-resources-reference-architecture.html#mw_b0d98763-0e90-48fc-bcc3-ff2755ffe722).

*Example*: `arn:aws:acm:us-east-1:12345:certificate/123456789012`

| 36 | 37 | ## Step 3. Configure Existing VPC 38 | 39 | >**Note**: If you are deploying to a new VPC, skip this step. 40 | 41 | To deploy MATLAB Production Server onto an existing VPC, specify these additional parameters. 42 | 43 | | Parameter Name | Value | 44 | |--------------- | ----- | 45 | ||**Network License Manager**| 46 | | **Deploy License Server** | Specify whether you want to deploy the Network License Manager for MATLAB. This parameter is available only if you use the deployment template for an existing VPC.

Instead of specifying values for the following two parameters, you may choose to configure the License Server manually. For manual configuration steps for using an existing License Server with an existing VPC, see the [Use Existing License Server in Existing VPC](#use-existing-license-server-in-existing-vpc) section.

| 47 | |**IP Address and port number of Existing Network License Manager**|

Optional parameter: Specify the port number and private DNS name or private IP address of the network license manager that has already been deployed to the existing VPC. Specify it in the format *port*@*privateDNSname*, for example, `27000@ip-172-30-1-89.ec2.internal` or `27000@172.30.1.89`. By default, the license manager uses port 27000. Leave this field blank if you are deploying a new network license manager.

| 48 | |**Security Group of Existing Network License Manager**| Optional parameter: Specify the security group of the network license manager that has already been deployed to the existing VPC. Leave this field blank if you are deploying a new network license manager.| 49 | ||**Existing VPC**| 50 | | **Existing VPC ID** | ID of your existing VPC. | 51 | | IP address range of existing VPC | IP address range from the existing VPC. To find the IP address range:
  1. Log in to the AWS Console.
  2. Navigate to the VPC dashboard and select your VPC.
  3. Click the **CIDR blocks** tab.
  4. Get the IP address range listed under **IPv4 CIDR Blocks**.
| 52 | | **Subnet 1 ID** | ID of an existing subnet that will host the dashboard and other resources. | 53 | | **Subnet 2 ID** | ID of an existing subnet that will host the application load balancer. | 54 | 55 | - If Subnet 1 and Subnet 2 are public, then you must connect the EC2 VPC endpoint and the AutoScaling VPC endpoint to the VPC. 56 | - If Subnet 1 and Subnet 2 are private, then you must either deploy a NAT gateway in the VPC, or connect all of these endpoints to the VPC: 57 | - EC2 VPC endpoint 58 | - AutoScaling VPC endpoint 59 | - S3 VPC endpoint 60 | - CloudFormation endpoint 61 | 62 | For more information about creating endpoints, see the [AWS documentation](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint). 63 | 64 | You also need to open these ports in your VPC: 65 | 66 | | Port | Description | 67 | |------|------------ | 68 | | `443` | Required for communicating with the dashboard and the MATLAB execution endpoint. | 69 | | `8000`, `8002`, `9910` | Required for communication between the dashboard and workers within the VPC. These ports do not need to be open to the Internet. | 70 | | `27000`, `50115` | Required for communication between the Network License Manager and the workers. | 71 | | `22`, `3389` | Required for Remote Desktop functionality. This can be used for troubleshooting and debugging. | 72 | 73 | ## Step 4. Create Stack 74 | Review or edit your stack details. You must select the acknowledgements to create IAM resources. Otherwise, the deployment produces a `Requires capabilities : [CAPABILITY_IAM]` error and fails to create resources. 75 | 76 | When you are satisfied with your stack configuration, click **Create stack**. AWS starts creating the resources for your server environment and opens you to the **Events** tab for the stack. 77 | 78 | >**Note**: Resource creation can take up to 20 minutes. After resource creation, it can take up to 15 minutes for the resources to be active. 79 | 80 | ## Step 5. Upload License File 81 | 1. On the **Events** tab for your stack, wait for the status to reach **CREATE\_COMPLETE**. 82 | 1. On the **Outputs** tab, in the row for the `MatlabProductionServerLicenseServer` key, click the corresponding URL listed under **Value** to open the Network License Manager for MATLAB Dashboard login page. 83 | 1. Log in to the Network License Manager for MATLAB Dashboard. 84 | 1. Upload your MATLAB Production Server license by following the instructions in the dashboard. 85 | 86 | 87 | ## Step 6. Connect and Log In to MATLAB Production Server Dashboard 88 | > **Note**: The Internet Explorer web browser is not supported for interacting with the dashboard. 89 | 90 | 1. On the **Outputs** tab for your stack, in the row for the `MatlabProductionServerDashboardURL` key, click the corresponding URL listed under **Value**. This URL is the HTTPS endpoint to the MATLAB Production Server Dashboard and brings you to the dashboard login page. 91 | 1. Log in using the administrator username and password that you specified in the **Dashboard Login** section while creating the stack. For more information on how to use the dashboard, see [Manage MATLAB Production Server Using the Dashboard](https://www.mathworks.com/help/mps/server/manage-matlab-production-server-using-the-dashboard.html). 92 | 93 | You are now ready to use MATLAB Production Server on AWS. 94 | 95 | To run applications on MATLAB Production Server, you need to create applications using MATLAB Compiler SDK. For more information, see [Create Deployable Archive for MATLAB Production Server](https://www.mathworks.com/help/compiler_sdk/mps_dev_test/create-a-deployable-archive-for-matlab-production-server.html). 96 | 97 | # Additional Information 98 | 99 | ## Use Existing License Server in Existing VPC 100 | To manage MATLAB Production Server licenses, you can use an existing Network License Manager server for MATLAB instead of deploying a new one. To use an existing license server, on the *Deploy License Server* step of the deployment, select `No`. 101 | 102 | The license manager must be in the same VPC and security group as MATLAB Production Server. You must also add the security group of the server VMs to the security group of the license server. 103 | 1. In the AWS management console, select the license manager stack that you deployed. 104 | 1. In the stack details page, click **Resources**. 105 | 1. In the **Logical ID** named ```MWSecurityGroupExternal```, click the corresponding URL listed under **Physical ID** 106 | 1. In the stack details page for ```MWSecurityGroupExternal```, click **Resources**. 107 | 1. In the **Logical ID** named ```SecurityGroup```, click the corresponding URL listed under **Physical ID** to open the security group details. 108 | 1. Click the **Inbound Rules** tab, and then click **Edit Inbound Rules**. 109 | 1. Click **Add Rule**. 110 | 1. In the **Type** dropdown, select ```All TCP```. 111 | 1. Under **Source**, search and add the ```MatlabProductionServerCloudStackElb1Sg``` security group. 112 | 1. Click **Save Rules**. 113 | 114 | You must also add the private IP address of the license server to the `License Server` property in the **Settings** tab of the dashboard. 115 | You can find the IP address of the license server from the AWS management console. 116 | 1. In the AWS management console, navigate to the EC2 dashboard. 117 | 1. Select the license server instance. 118 | 1. In the instance details, copy the value of **Private IPs**. For example: 172.30.1.126 119 | 1. Add the private IP to the `License Server` property. For example: ` 27000@172.30.1.126` 120 | 121 | ## Delete Your Stack 122 | 123 | Once you finish using your stack, to avoid incurring further cost, it is recommended that you delete all resources. 124 | 125 | If you are using an existing license server, and have added the security group of the server VMs to the security group of the license server, you must delete the inbound rules before you delete the stack. 126 | 1. In the AWS management console, select the stack that you deployed. 127 | 1. On the details page your stack, click the **Resources** tab. 128 | 1. In the **Logical ID** named `SecurityGroup`, click the corresponding URL listed under **Physical ID** to open the security group details. 129 | 1. On the **Inbound Rules** tab, click **Edit Inbound Rules**. 130 | 1. For each rule that has the **Source** tag set to `matlab-production-server-cloud-stack-elb-1-sg`, click **Delete Rule**. 131 | 1. Click **Save Rules**. 132 | 133 | To delete the stack, do the following: 134 | 1. Log in to the AWS Console. 135 | 3. Go to the AWS Cloud Formation page and select the stack that you created. 136 | 3. Click **Delete**. 137 | 138 | If you do not want to delete the entire deployment but want to minimize the cost, you can bring the number of instances in the Auto Scaling Group down to 0 and then scale it back up when the need arises. 139 | 140 | ## Get License Server MAC Address 141 | The Network License Manager for MATLAB reference architecture manages the MATLAB Production Server license file. The deployment templates for the MATLAB Production Server reference architecture provide an option to deploy the license manager. You can also use an existing license manager that is located in the same VPC and security group as the MATLAB Production Server instances. For more information about the Network License Manager for MATLAB reference architecture, see [Network License Manager for MATLAB](https://github.com/mathworks-ref-arch/license-manager-for-matlab-on-aws). 142 | 143 | >**NOTE**: For a new license manager deployed with MATLAB Production Server, the license manager MAC address is available only after the deployment to the cloud is complete. For information on deploying the solution, see [Deployment Steps](#deployment-steps). 144 | 145 | To get the MAC address of the license manager: 146 | 1. Log in to the Network License Manager for MATLAB Dashboard. For a license manager deployed with the MATLAB Production Server deployment, use the following credentials:
147 | Username: **manager**
148 | Password: Enter the password that you specified during the deployment process. 149 | 1. Click **Administration** and then **License**. 150 | 1. Copy the license server MAC address displayed at the top. -------------------------------------------------------------------------------- /releases/R2024b/README.md: -------------------------------------------------------------------------------- 1 | # MATLAB Production Server on Amazon Web Services - R2024b 2 | 3 | # Deployment Steps 4 | Follow these steps to deploy the R2024b MATLAB Production Server reference architecture on AWS. To deploy reference architectures for other releases, see [Deploy Reference Architecture for Your Release](/README.md?tab=readme-ov-file#deploy-reference-architecture-for-your-release). 5 | ## Step 1. Launch Template 6 | Before launching the template, make sure that you have selected one of these supported AWS regions from the top navigation: 7 | 8 | Then, click the appropriate **Launch Stack** button to launch the stack configuration template for deploying resources onto your AWS account. You can deploy resources onto either a new or existing VPC. 9 | 10 | | Release | New VPC | Existing VPC | 11 | |---------|---------| ------------ | 12 | | R2024b | | | 13 | 14 | The AWS Management Console opens in your web browser. 15 | 16 | ## Step 2. Configure Stack 17 | On the **Create Stack** page, specify these parameters: 18 | 19 | | Parameter Name | Value | 20 | |--------------- | ----- | 21 | | **Stack name** | Choose a name for the stack. After the deployment finishes, this name is displayed in the AWS console.

*Example*: Boston

| 22 | ||**Server**| 23 | | **Number of Server VMs** | Choose the number of AWS instances to start for the server.

*Example*: 6

For example, if you have a 24-worker MATLAB Production Server license and select `m6.xlarge` (4 cores) as the **Number of server VMs**, you need 6 worker nodes to fully use the workers in your license.

You can always underprovision the number instances, in which case you may end up using fewer workers than you are licensed for.

| 24 | | **Server VM Type** | Choose the AWS instance type to use for the server instances. All AWS instance types are supported. For more information, see [Amazon EC2 Instance Types](https://aws.amazon.com/ec2/instance-types/).

*Example*: m6.xlarge

| 25 | | **Server VM Operating System** | Choose between Windows (Windows Server 2022) and Linux (Ubuntu 22) to use for the server instances. | 26 | | **Create ElastiCache for Redis** | Choose whether you want to create a Redis ElastiCache service. Creating this service enables you to use the persistence functionality of the server. Persistence provides a mechanism to cache data between calls to MATLAB code running on a server instance. | 27 | ||**Dashboard Login**| 28 | | **Username for MATLAB Production Server Dashboard** | Specify the administrator username for logging in to the MATLAB Production Server Dashboard. | 29 | | **Password for MATLAB Production Server and License Server Dashboards** | Specify the password to use for logging in to MATLAB Production Server Dashboard and Network License Manager for MATLAB Dashboard. | 30 | | **Confirm Password for MATLAB Production Server and License Server Dashboards** | Reenter the password to use for logging in to the MATLAB Production Server Dashboard and Network License Manager for MATLAB Dashboard. | 31 | | |**Network**| 32 | | **Name of Existing Key Pair** | Select the name of an existing EC2 Key Pair to allow access to all the VMs in the stack. For information about creating an Amazon EC2 key pair, see [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html#having-ec2-create-your-key-pair).

*Example*: boston-keypair

| 33 | | **Allow Connections from IP Address** | Specify the IP address range that is allowed to connect to the dashboard that manages the server. The format for this field is IP Address/Mask.

Example: 10.0.0.1/32

| 34 | | **Make Solution Available over Internet** | Choose `Yes` if you want your solution to use public IP addresses. | 35 | | **ARN of SSL Certificate** | Provide the Amazon Resource Name (ARN) of an existing certificate in the AWS Certificate Manager. This certificate enables secure HTTPS communication to the HTTPS server endpoint. For information on creating and uploading a self-signed certificate, see [Create and sign an X509 certificate](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-ssl.html) and [Import SSL Certificate](https://www.mathworks.com/help/mps/server/manage-aws-resources-reference-architecture.html#mw_b0d98763-0e90-48fc-bcc3-ff2755ffe722).

*Example*: `arn:aws:acm:us-east-1:12345:certificate/123456789012`

| 36 | 37 | ## Step 3. Configure Existing VPC 38 | 39 | >**Note**: If you are deploying to a new VPC, skip this step. 40 | 41 | To deploy MATLAB Production Server onto an existing VPC, specify these additional parameters. 42 | 43 | | Parameter Name | Value | 44 | |--------------- | ----- | 45 | ||**Network License Manager**| 46 | | **Deploy License Server** | Specify whether you want to deploy the Network License Manager for MATLAB. This parameter is available only if you use the deployment template for an existing VPC.

Instead of specifying values for the following two parameters, you may choose to configure the License Server manually. For manual configuration steps for using an existing License Server with an existing VPC, see the [Use Existing License Server in Existing VPC](#use-existing-license-server-in-existing-vpc) section.

| 47 | |**IP Address and port number of Existing Network License Manager**|

Optional parameter: Specify the port number and private DNS name or private IP address of the network license manager that has already been deployed to the existing VPC. Specify it in the format *port*@*privateDNSname*, for example, `27000@ip-172-30-1-89.ec2.internal` or `27000@172.30.1.89`. By default, the license manager uses port 27000. Leave this field blank if you are deploying a new network license manager.

| 48 | |**Security Group of Existing Network License Manager**| Optional parameter: Specify the security group of the network license manager that has already been deployed to the existing VPC. Leave this field blank if you are deploying a new network license manager.| 49 | ||**Existing VPC**| 50 | | **Existing VPC ID** | ID of your existing VPC. | 51 | | IP address range of existing VPC | IP address range from the existing VPC. To find the IP address range:
  1. Log in to the AWS Console.
  2. Navigate to the VPC dashboard and select your VPC.
  3. Click the **CIDR blocks** tab.
  4. Get the IP address range listed under **IPv4 CIDR Blocks**.
| 52 | | **Subnet 1 ID** | ID of an existing subnet that will host the dashboard and other resources. | 53 | | **Subnet 2 ID** | ID of an existing subnet that will host the application load balancer. | 54 | 55 | - If Subnet 1 and Subnet 2 are public, then you must connect the EC2 VPC endpoint and the AutoScaling VPC endpoint to the VPC. 56 | - If Subnet 1 and Subnet 2 are private, then you must either deploy a NAT gateway in the VPC, or connect all of these endpoints to the VPC: 57 | - EC2 VPC endpoint 58 | - AutoScaling VPC endpoint 59 | - S3 VPC endpoint 60 | - CloudFormation endpoint 61 | 62 | For more information about creating endpoints, see the [AWS documentation](https://docs.aws.amazon.com/vpc/latest/userguide/vpce-interface.html#create-interface-endpoint). 63 | 64 | You also need to open these ports in your VPC: 65 | 66 | | Port | Description | 67 | |------|------------ | 68 | | `443` | Required for communicating with the dashboard and the MATLAB execution endpoint. | 69 | | `8000`, `8002`, `9910` | Required for communication between the dashboard and workers within the VPC. These ports do not need to be open to the Internet. | 70 | | `27000`, `50115` | Required for communication between the Network License Manager and the workers. | 71 | | `22`, `3389` | Required for Remote Desktop functionality. This can be used for troubleshooting and debugging. | 72 | 73 | ## Step 4. Create Stack 74 | Review or edit your stack details. You must select the acknowledgements to create IAM resources. Otherwise, the deployment produces a `Requires capabilities : [CAPABILITY_IAM]` error and fails to create resources. 75 | 76 | When you are satisfied with your stack configuration, click **Create stack**. AWS starts creating the resources for your server environment and opens you to the **Events** tab for the stack. 77 | 78 | >**Note**: Resource creation can take up to 20 minutes. After resource creation, it can take up to 15 minutes for the resources to be active. 79 | 80 | ## Step 5. Upload License File 81 | 1. On the **Events** tab for your stack, wait for the status to reach **CREATE\_COMPLETE**. 82 | 1. On the **Outputs** tab, in the row for the `MatlabProductionServerLicenseServer` key, click the corresponding URL listed under **Value** to open the Network License Manager for MATLAB Dashboard login page. 83 | 1. Log in to the Network License Manager for MATLAB Dashboard. 84 | 1. Upload your MATLAB Production Server license by following the instructions in the dashboard. 85 | 86 | 87 | ## Step 6. Connect and Log In to MATLAB Production Server Dashboard 88 | > **Note**: The Internet Explorer web browser is not supported for interacting with the dashboard. 89 | 90 | 1. On the **Outputs** tab for your stack, in the row for the `MatlabProductionServerDashboardURL` key, click the corresponding URL listed under **Value**. This URL is the HTTPS endpoint to the MATLAB Production Server Dashboard and brings you to the dashboard login page. 91 | 1. Log in using the administrator username and password that you specified in the **Dashboard Login** section while creating the stack. For more information on how to use the dashboard, see [Manage MATLAB Production Server Using the Dashboard](https://www.mathworks.com/help/mps/server/manage-matlab-production-server-using-the-dashboard.html). 92 | 93 | You are now ready to use MATLAB Production Server on AWS. 94 | 95 | To run applications on MATLAB Production Server, you need to create applications using MATLAB Compiler SDK. For more information, see [Create Deployable Archive for MATLAB Production Server](https://www.mathworks.com/help/compiler_sdk/mps_dev_test/create-a-deployable-archive-for-matlab-production-server.html). 96 | 97 | # Additional Information 98 | 99 | ## Use Existing License Server in Existing VPC 100 | To manage MATLAB Production Server licenses, you can use an existing Network License Manager server for MATLAB instead of deploying a new one. To use an existing license server, on the *Deploy License Server* step of the deployment, select `No`. 101 | 102 | The license manager must be in the same VPC and security group as MATLAB Production Server. You must also add the security group of the server VMs to the security group of the license server. 103 | 1. In the AWS management console, select the license manager stack that you deployed. 104 | 1. In the stack details page, click **Resources**. 105 | 1. In the **Logical ID** named ```MWSecurityGroupExternal```, click the corresponding URL listed under **Physical ID** 106 | 1. In the stack details page for ```MWSecurityGroupExternal```, click **Resources**. 107 | 1. In the **Logical ID** named ```SecurityGroup```, click the corresponding URL listed under **Physical ID** to open the security group details. 108 | 1. Click the **Inbound Rules** tab, and then click **Edit Inbound Rules**. 109 | 1. Click **Add Rule**. 110 | 1. In the **Type** dropdown, select ```All TCP```. 111 | 1. Under **Source**, search and add the ```MatlabProductionServerCloudStackElb1Sg``` security group. 112 | 1. Click **Save Rules**. 113 | 114 | You must also add the private IP address of the license server to the `License Server` property in the **Settings** tab of the dashboard. 115 | You can find the IP address of the license server from the AWS management console. 116 | 1. In the AWS management console, navigate to the EC2 dashboard. 117 | 1. Select the license server instance. 118 | 1. In the instance details, copy the value of **Private IPs**. For example: 172.30.1.126 119 | 1. Add the private IP to the `License Server` property. For example: ` 27000@172.30.1.126` 120 | 121 | ## Delete Your Stack 122 | 123 | Once you finish using your stack, to avoid incurring further cost, it is recommended that you delete all resources. 124 | 125 | If you are using an existing license server, and have added the security group of the server VMs to the security group of the license server, you must delete the inbound rules before you delete the stack. 126 | 1. In the AWS management console, select the stack that you deployed. 127 | 1. On the details page your stack, click the **Resources** tab. 128 | 1. In the **Logical ID** named `SecurityGroup`, click the corresponding URL listed under **Physical ID** to open the security group details. 129 | 1. On the **Inbound Rules** tab, click **Edit Inbound Rules**. 130 | 1. For each rule that has the **Source** tag set to `matlab-production-server-cloud-stack-elb-1-sg`, click **Delete Rule**. 131 | 1. Click **Save Rules**. 132 | 133 | To delete the stack, do the following: 134 | 1. Log in to the AWS Console. 135 | 3. Go to the AWS Cloud Formation page and select the stack that you created. 136 | 3. Click **Delete**. 137 | 138 | If you do not want to delete the entire deployment but want to minimize the cost, you can bring the number of instances in the Auto Scaling Group down to 0 and then scale it back up when the need arises. 139 | 140 | ## Get License Server MAC Address 141 | The Network License Manager for MATLAB reference architecture manages the MATLAB Production Server license file. The deployment templates for the MATLAB Production Server reference architecture provide an option to deploy the license manager. You can also use an existing license manager that is located in the same VPC and security group as the MATLAB Production Server instances. For more information about the Network License Manager for MATLAB reference architecture, see [Network License Manager for MATLAB](https://github.com/mathworks-ref-arch/license-manager-for-matlab-on-aws). 142 | 143 | >**NOTE**: For a new license manager deployed with MATLAB Production Server, the license manager MAC address is available only after the deployment to the cloud is complete. For information on deploying the solution, see [Deployment Steps](#deployment-steps). 144 | 145 | To get the MAC address of the license manager: 146 | 1. Log in to the Network License Manager for MATLAB Dashboard. For a license manager deployed with the MATLAB Production Server deployment, use the following credentials:
147 | Username: **manager**
148 | Password: Enter the password that you specified during the deployment process. 149 | 1. Click **Administration** and then **License**. 150 | 1. Copy the license server MAC address displayed at the top. -------------------------------------------------------------------------------- /releases/R2024a/templates/mps-aws-refarch-existing-vpc-cf.yml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: '2010-09-09' 2 | Description: MATLAB Production Server R2024a with Existing VPC 3 | Parameters: 4 | KeyPairName: 5 | Type: AWS::EC2::KeyPair::KeyName 6 | Description: Enter the key pair name to use for all EC2 instances. If you do not have a key pair, create one in the EC2 console >> Network & Security >> Key Pairs. 7 | ConstraintDescription: Must be the name of an existing EC2 Key Pair. 8 | ClientIPAddress: 9 | Description: >- 10 | Allowed IP addresses that can connect to the MATLAB Production Server VM(s) and the dashboard VM. Specify the range in CIDR notation in the format IP Address/Suffix, where Suffix is an integer between 11 | 0 and 32. Example: 10.0.0.1/24. 12 | Type: String 13 | MinLength: 9 14 | MaxLength: 18 15 | AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2}) 16 | ConstraintDescription: Must be a valid IP in CIDR notation of the form x.x.x.x/x 17 | AllowPublicIP: 18 | Description: Specify whether the deployed solution should use public IP addresses. 19 | Type: String 20 | AllowedValues: 21 | - 'Yes' 22 | - 'No' 23 | Default: 'Yes' 24 | NumWorkerNodes: 25 | Description: Each MATLAB Production Server instance runs on a VM. Specify the number of VMs to run server instances. 26 | Type: Number 27 | Default: 2 28 | MinValue: 1 29 | MaxValue: 24 30 | WorkerInstanceType: 31 | Description: >- 32 | Specify the EC2 instance type to use for a server VM. Each server VM runs multiple MATLAB workers. The default number of workers is 4. Choosing a VM size where the number of vCPUs on a VM matches 33 | the number of workers is recommended. For more information on Amazon EC2 instance types and sizes, see https://aws.amazon.com/ec2/instance-types/ 34 | Default: m6i.xlarge 35 | Type: String 36 | AllowedValues: 37 | - m6i.xlarge 38 | - m6i.2xlarge 39 | - m6i.4xlarge 40 | - m6i.8xlarge 41 | - m6i.12xlarge 42 | - m6i.16xlarge 43 | - m6i.24xlarge 44 | - m6i.metal 45 | - m6a.xlarge 46 | - m6a.xlarge 47 | - m6a.2xlarge 48 | - m6a.4xlarge 49 | - m6a.8xlarge 50 | - m6a.12xlarge 51 | - m6a.16xlarge 52 | - m6a.24xlarge 53 | - m6a.metal 54 | - c6i.xlarge 55 | - c6i.2xlarge 56 | - c6i.4xlarge 57 | - c6i.8xlarge 58 | - c6i.12xlarge 59 | - c6i.16xlarge 60 | - c6i.24xlarge 61 | - c6i.32xlarge 62 | - c6i.metal 63 | - c6a.xlarge 64 | - c6a.2xlarge 65 | - c6a.4xlarge 66 | - c6a.8xlarge 67 | - c6a.12xlarge 68 | - c6a.16xlarge 69 | - c6a.24xlarge 70 | - c6a.32xlarge 71 | - c6a.48xlarge 72 | - c6a.metal 73 | - r6i.xlarge 74 | - r6i.2xlarge 75 | - r6i.4xlarge 76 | - r6i.8xlarge 77 | - r6i.12xlarge 78 | - r6i.16xlarge 79 | - r6i.24xlarge 80 | - r6i.32xlarge 81 | - r6i.metal 82 | - r6a.xlarge 83 | - r6a.2xlarge 84 | - r6a.4xlarge 85 | - r6a.8xlarge 86 | - r6a.12xlarge 87 | - r6a.16xlarge 88 | - r6a.24xlarge 89 | - r6a.32xlarge 90 | - r6a.48xlarge 91 | - r6a.metal 92 | ConstraintDescription: Specify worker instance type. 93 | WorkerSystem: 94 | Description: Choose between Windows (Windows Server) and Linux (Ubuntu). 95 | Type: String 96 | AllowedValues: 97 | - Ubuntu 98 | - Windows 99 | SSLCertificateARN: 100 | Description: Enter the ARN to use for HTTPS connections to the server and dashboard. The ARN you provide must match an existing certificate in the AWS Certificate Manager. 101 | Type: String 102 | AllowedPattern: arn:[\w+=/,.@-]+:[\w+=/,.@-]+:[\w+=/,.@-]*:[0-9]+:[\w+=,.@-]+(/[\w+=,.@-]+)* 103 | ConstraintDescription: Must be a valid certificate ARN of the form arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012 104 | EnablePersistence: 105 | Description: Specify whether you want to deploy ElastiCache for Redis that lets you use the persistence functionality on the server. 106 | Type: String 107 | AllowedValues: 108 | - 'Yes' 109 | - 'No' 110 | Default: 'No' 111 | DeployLicenseServer: 112 | Description: Specify whether you want to deploy the Network License Manager for MATLAB 113 | Type: String 114 | AllowedValues: 115 | - 'Yes' 116 | - 'No' 117 | Default: 'Yes' 118 | ExistingLicenseServer: 119 | Description: >- 120 | Specify the port number and private DNS name or private IP address of the network license manager that has already been deployed to the existing VPC. Specify it in the format @, 121 | for example, 27000@ip-172-30-1-89.ec2.internal or 27000@172.30.1.89. By default, the license manager uses port 27000. Leave this field blank if you are deploying a new network license manager. 122 | Type: String 123 | AllowedPattern: ([0-9]+@[a-zA-Z0-9.\\-]+)? 124 | ConstraintDescription: If specified, must be in the form @ 125 | ExistingLicenseServerSecurityGroup: 126 | Description: Specify the security group of the network license manager that has already been deployed to the existing VPC. Leave this field blank if you are deploying a new network license manager. 127 | Type: String 128 | Default: '' 129 | Username: 130 | Description: Specify the administrator username to log in to the MATLAB Production Server dashboard. 131 | Type: String 132 | AllowedPattern: ^[^'\s]*$ 133 | ConstraintDescription: Must not contain whitespace or single quote 134 | Password: 135 | Description: Specify the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard. 136 | Type: String 137 | AllowedPattern: ^[^'\s\$]*$ 138 | ConstraintDescription: Must not contain whitespace, single quote or $ sign 139 | NoEcho: true 140 | ConfirmPassword: 141 | Description: Reenter the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard. 142 | Type: String 143 | NoEcho: true 144 | ExistingVPC: 145 | Description: ID of your existing VPC where you want to deploy this solution. 146 | Type: AWS::EC2::VPC::Id 147 | ConstraintDescription: Must be the ID of an existing VPC. 148 | Default: '' 149 | ExistingSubnet1: 150 | Description: ID of an existing subnet that will host the dashboard and cloud resources. 151 | Type: AWS::EC2::Subnet::Id 152 | ConstraintDescription: Must be the ID of an existing Subnet. 153 | Default: '' 154 | ExistingSubnet2: 155 | Description: ID of an existing subnet that will host the load balancer. 156 | Type: AWS::EC2::Subnet::Id 157 | ConstraintDescription: Must be the ID of an existing Subnet. 158 | Default: '' 159 | Metadata: 160 | AWS::CloudFormation::Interface: 161 | ParameterGroups: 162 | - Label: 163 | default: Server 164 | Parameters: 165 | - NumWorkerNodes 166 | - WorkerInstanceType 167 | - WorkerSystem 168 | - EnablePersistence 169 | - Label: 170 | default: Dashboard Login 171 | Parameters: 172 | - Username 173 | - Password 174 | - ConfirmPassword 175 | - Label: 176 | default: Network 177 | Parameters: 178 | - KeyPairName 179 | - ClientIPAddress 180 | - AllowPublicIP 181 | - SSLCertificateARN 182 | - Label: 183 | default: Network License Manager 184 | Parameters: 185 | - DeployLicenseServer 186 | - ExistingLicenseServer 187 | - ExistingLicenseServerSecurityGroup 188 | - Label: 189 | default: Existing VPC 190 | Parameters: 191 | - ExistingVPC 192 | - ExistingSubnet1 193 | - ExistingSubnet2 194 | ParameterLabels: 195 | KeyPairName: 196 | default: Name of Existing Key Pair 197 | NumWorkerNodes: 198 | default: Number of Server VMs 199 | SSLCertificateARN: 200 | default: ARN of SSL Certificate 201 | WorkerInstanceType: 202 | default: Server VM Type 203 | WorkerSystem: 204 | default: Choose between Windows (Windows Server) and Linux (Ubuntu) 205 | Username: 206 | default: Username for Dashboard 207 | Password: 208 | default: Password for MATLAB Production Server and License Server dashboards 209 | ConfirmPassword: 210 | default: Confirm Password for MATLAB Production Server and License Server dashboards 211 | ClientIPAddress: 212 | default: Allow Connections from IP Address 213 | AllowPublicIP: 214 | default: Make Solution Available over Internet 215 | EnablePersistence: 216 | default: Create ElastiCache for Redis 217 | DeployLicenseServer: 218 | default: Deploy License Server 219 | ExistingLicenseServer: 220 | default: IP Address and port number of Existing Network License Manager 221 | ExistingLicenseServerSecurityGroup: 222 | default: Security Group of Existing Network License Manager 223 | ExistingVPC: 224 | default: Existing VPC ID 225 | ExistingSubnet1: 226 | default: Subnet 1 ID 227 | ExistingSubnet2: 228 | default: Subnet 2 ID 229 | Rules: 230 | matchPasswords: 231 | Assertions: 232 | - Assert: !Equals 233 | - !Ref 'Password' 234 | - !Ref 'ConfirmPassword' 235 | AssertDescription: Passwords do not match 236 | checkLicenseServerIPAddressProvided: 237 | RuleCondition: !Not 238 | - !Equals 239 | - !Ref 'ExistingLicenseServer' 240 | - '' 241 | Assertions: 242 | - Assert: !Equals 243 | - 'No' 244 | - !Ref 'DeployLicenseServer' 245 | AssertDescription: Cannot deploy a new license server when you provide a port@hostname for an existing license server. 246 | checkSubnetInVPC: 247 | Assertions: 248 | - Assert: !EachMemberEquals 249 | - !ValueOfAll 250 | - AWS::EC2::Subnet::Id 251 | - VpcId 252 | - !Ref 'ExistingVPC' 253 | AssertDescription: Subnet must exist in the VPC you have selected 254 | Conditions: 255 | DoPublicIP: !Equals 256 | - 'Yes' 257 | - !Ref 'AllowPublicIP' 258 | DoDeployLicenseServer: !Equals 259 | - 'Yes' 260 | - !Ref 'DeployLicenseServer' 261 | Mappings: 262 | VarMap: 263 | NestedTemplateURLs: 264 | vpsStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2024a_mps_refarch/mw-aws-refarch-vpc-stack-cf.yml 265 | productionServerStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2024a_mps_refarch/mw-aws-refarch-cf.yml 266 | Outputs: 267 | MATLABProductionServerAdminVM: 268 | Description: Admin VM that hosts MATLAB Production Server dashboard 269 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVM' 270 | MatlabProductionServerLicenseServer: 271 | Description: Address of the MATLAB network license manager dashboard 272 | Value: !If 273 | - DoDeployLicenseServer 274 | - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerAddress' 275 | - License Server was not deployed with this stack 276 | MATLABProductionServerApplicationsBucket: 277 | Description: S3 Bucket for MATLAB Production Server applications (CTF files) 278 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerApplicationsBucket' 279 | MATLABProductionServerDashboardURL: 280 | Description: URL to access MATLAB Production Server dashboard 281 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardURL' 282 | MATLABProductionServerFunctionExecutionURL: 283 | Description: MATLAB Execution Endpoint 284 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerFunctionExecutionURL' 285 | MATLABProductionServerAdminVMLogGroup: 286 | Description: CloudWatch log group for admin VM 287 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVMLogGroup' 288 | MATLABProductionServerWorkerVMLogGroup: 289 | Description: CloudWatch log group for worker VM 290 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerWorkerVMLogGroup' 291 | MATLABProductionServerAutoScalingGroup: 292 | Description: Auto Scaling Group for managing the number of server VMs 293 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAutoScalingGroup' 294 | MATLABProductionServerCloudStackCacheClusterAddress: 295 | Description: Hostname of Redis cache cluster 296 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterAddress' 297 | MATLABProductionServerCloudStackCacheClusterPort: 298 | Description: Port number of Redis cache cluster 299 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterPort' 300 | MATLABProductionServerLoadBalancer: 301 | Description: Load balancer to change SSL certificate for MATLAB execution endpoint 302 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerLoadBalancer' 303 | MATLABProductionServerDashboardLoadBalancer: 304 | Description: Load balancer to change SSL certificate for MATLAB Production Server dashboard 305 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardLoadBalancer' 306 | Resources: 307 | MatlabProductionServerCustomParamLambdaFunctionStack: 308 | Type: AWS::CloudFormation::Stack 309 | Properties: 310 | TemplateURL: https://matlab-production-server-templates.s3.amazonaws.com/r2024a_mps_refarch/CustomParamLambda.yml 311 | Parameters: 312 | ExistingVPC: !Ref 'ExistingVPC' 313 | MatlabProductionServerLicenseServerStack: 314 | Condition: DoDeployLicenseServer 315 | DependsOn: 316 | - MatlabProductionServerCustomParamLambdaFunctionStack 317 | Type: AWS::CloudFormation::Stack 318 | Properties: 319 | TemplateURL: https://network-license-manager-for-matlab-on-aws.s3.amazonaws.com/R2024a/license-manager-template.json 320 | Parameters: 321 | VPC: !Ref 'ExistingVPC' 322 | Subnet: !Ref 'ExistingSubnet1' 323 | ClientIPAddress: !If 324 | - DoPublicIP 325 | - !Ref 'ClientIPAddress' 326 | - !GetAtt 'MatlabProductionServerCustomParamLambdaFunctionStack.Outputs.MatlabProductionServerVPCCIDR' 327 | ServerInstanceType: t2.micro 328 | SSHKeyName: !Ref 'KeyPairName' 329 | Password: !Ref 'Password' 330 | ConfirmPassword: !Ref 'ConfirmPassword' 331 | MatlabProductionServerResourcesStack: 332 | DependsOn: 333 | - MatlabProductionServerCustomParamLambdaFunctionStack 334 | Type: AWS::CloudFormation::Stack 335 | Properties: 336 | TemplateURL: !FindInMap 337 | - VarMap 338 | - NestedTemplateURLs 339 | - productionServerStackURL 340 | Parameters: 341 | ExistingVPC: !Ref 'ExistingVPC' 342 | ExistingVPCAddress: !GetAtt 'MatlabProductionServerCustomParamLambdaFunctionStack.Outputs.MatlabProductionServerVPCCIDR' 343 | ExistingSubnet1: !Ref 'ExistingSubnet1' 344 | ExistingSubnet2: !Ref 'ExistingSubnet2' 345 | KeyPairName: !Ref 'KeyPairName' 346 | ClientIPAddress: !Ref 'ClientIPAddress' 347 | AllowPublicIP: !Ref 'AllowPublicIP' 348 | SSLCertificateARN: !Ref 'SSLCertificateARN' 349 | NumWorkerNodes: !Ref 'NumWorkerNodes' 350 | WorkerInstanceType: !Ref 'WorkerInstanceType' 351 | WorkerSystem: !Ref 'WorkerSystem' 352 | EnablePersistence: !Ref 'EnablePersistence' 353 | Username: !Ref 'Username' 354 | Password: !Ref 'Password' 355 | ConfirmPassword: !Ref 'ConfirmPassword' 356 | LicenseServerSecurityGroup: !If 357 | - DoDeployLicenseServer 358 | - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.SecurityGroup' 359 | - !Ref 'ExistingLicenseServerSecurityGroup' 360 | LicenseServerPrivateDNS: !If 361 | - DoDeployLicenseServer 362 | - !Join 363 | - '' 364 | - - 27000 365 | - '@' 366 | - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerPrivateDNS' 367 | - !Ref 'ExistingLicenseServer' 368 | -------------------------------------------------------------------------------- /releases/R2024b/templates/mps-aws-refarch-existing-vpc-cf.yml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: '2010-09-09' 2 | Description: MATLAB Production Server R2024b with Existing VPC 3 | Parameters: 4 | KeyPairName: 5 | Type: AWS::EC2::KeyPair::KeyName 6 | Description: Enter the key pair name to use for all EC2 instances. If you do not have a key pair, create one in the EC2 console >> Network & Security >> Key Pairs. 7 | ConstraintDescription: Must be the name of an existing EC2 Key Pair. 8 | ClientIPAddress: 9 | Description: >- 10 | Allowed IP addresses that can connect to the MATLAB Production Server VM(s) and the dashboard VM. Specify the range in CIDR notation in the format IP Address/Suffix, where Suffix is an integer between 11 | 0 and 32. Example: 10.0.0.1/24. 12 | Type: String 13 | MinLength: 9 14 | MaxLength: 18 15 | AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2}) 16 | ConstraintDescription: Must be a valid IP in CIDR notation of the form x.x.x.x/x 17 | AllowPublicIP: 18 | Description: Specify whether the deployed solution should use public IP addresses. 19 | Type: String 20 | AllowedValues: 21 | - 'Yes' 22 | - 'No' 23 | Default: 'Yes' 24 | NumWorkerNodes: 25 | Description: Each MATLAB Production Server instance runs on a VM. Specify the number of VMs to run server instances. 26 | Type: Number 27 | Default: 2 28 | MinValue: 1 29 | MaxValue: 24 30 | WorkerInstanceType: 31 | Description: >- 32 | Specify the EC2 instance type to use for a server VM. Each server VM runs multiple MATLAB workers. The default number of workers is 4. Choosing a VM size where the number of vCPUs on a VM matches 33 | the number of workers is recommended. For more information on Amazon EC2 instance types and sizes, see https://aws.amazon.com/ec2/instance-types/ 34 | Default: m6i.xlarge 35 | Type: String 36 | AllowedValues: 37 | - m6i.xlarge 38 | - m6i.2xlarge 39 | - m6i.4xlarge 40 | - m6i.8xlarge 41 | - m6i.12xlarge 42 | - m6i.16xlarge 43 | - m6i.24xlarge 44 | - m6i.metal 45 | - m6a.xlarge 46 | - m6a.xlarge 47 | - m6a.2xlarge 48 | - m6a.4xlarge 49 | - m6a.8xlarge 50 | - m6a.12xlarge 51 | - m6a.16xlarge 52 | - m6a.24xlarge 53 | - m6a.metal 54 | - c6i.xlarge 55 | - c6i.2xlarge 56 | - c6i.4xlarge 57 | - c6i.8xlarge 58 | - c6i.12xlarge 59 | - c6i.16xlarge 60 | - c6i.24xlarge 61 | - c6i.32xlarge 62 | - c6i.metal 63 | - c6a.xlarge 64 | - c6a.2xlarge 65 | - c6a.4xlarge 66 | - c6a.8xlarge 67 | - c6a.12xlarge 68 | - c6a.16xlarge 69 | - c6a.24xlarge 70 | - c6a.32xlarge 71 | - c6a.48xlarge 72 | - c6a.metal 73 | - r6i.xlarge 74 | - r6i.2xlarge 75 | - r6i.4xlarge 76 | - r6i.8xlarge 77 | - r6i.12xlarge 78 | - r6i.16xlarge 79 | - r6i.24xlarge 80 | - r6i.32xlarge 81 | - r6i.metal 82 | - r6a.xlarge 83 | - r6a.2xlarge 84 | - r6a.4xlarge 85 | - r6a.8xlarge 86 | - r6a.12xlarge 87 | - r6a.16xlarge 88 | - r6a.24xlarge 89 | - r6a.32xlarge 90 | - r6a.48xlarge 91 | - r6a.metal 92 | ConstraintDescription: Specify worker instance type. 93 | WorkerSystem: 94 | Description: Choose between Windows (Windows Server) and Linux (Ubuntu). 95 | Type: String 96 | AllowedValues: 97 | - Ubuntu 98 | - Windows 99 | SSLCertificateARN: 100 | Description: Enter the ARN to use for HTTPS connections to the server and dashboard. The ARN you provide must match an existing certificate in the AWS Certificate Manager. 101 | Type: String 102 | AllowedPattern: arn:[\w+=/,.@-]+:[\w+=/,.@-]+:[\w+=/,.@-]*:[0-9]+:[\w+=,.@-]+(/[\w+=,.@-]+)* 103 | ConstraintDescription: Must be a valid certificate ARN of the form arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012 104 | EnablePersistence: 105 | Description: Specify whether you want to deploy ElastiCache for Redis that lets you use the persistence functionality on the server. 106 | Type: String 107 | AllowedValues: 108 | - 'Yes' 109 | - 'No' 110 | Default: 'No' 111 | DeployLicenseServer: 112 | Description: Specify whether you want to deploy the Network License Manager for MATLAB 113 | Type: String 114 | AllowedValues: 115 | - 'Yes' 116 | - 'No' 117 | Default: 'Yes' 118 | ExistingLicenseServer: 119 | Description: >- 120 | Specify the port number and private DNS name or private IP address of the network license manager that has already been deployed to the existing VPC. Specify it in the format @, 121 | for example, 27000@ip-172-30-1-89.ec2.internal or 27000@172.30.1.89. By default, the license manager uses port 27000. Leave this field blank if you are deploying a new network license manager. 122 | Type: String 123 | AllowedPattern: ([0-9]+@[a-zA-Z0-9.\\-]+)? 124 | ConstraintDescription: If specified, must be in the form @ 125 | ExistingLicenseServerSecurityGroup: 126 | Description: Specify the security group of the network license manager that has already been deployed to the existing VPC. Leave this field blank if you are deploying a new network license manager. 127 | Type: String 128 | Default: '' 129 | Username: 130 | Description: Specify the administrator username to log in to the MATLAB Production Server dashboard. 131 | Type: String 132 | AllowedPattern: ^[^'\s]*$ 133 | ConstraintDescription: Must not contain whitespace or single quote 134 | Password: 135 | Description: Specify the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard. 136 | Type: String 137 | AllowedPattern: ^[^'\s\$]*$ 138 | ConstraintDescription: Must not contain whitespace, single quote or $ sign 139 | NoEcho: true 140 | ConfirmPassword: 141 | Description: Reenter the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard. 142 | Type: String 143 | NoEcho: true 144 | ExistingVPC: 145 | Description: ID of your existing VPC where you want to deploy this solution. 146 | Type: AWS::EC2::VPC::Id 147 | ConstraintDescription: Must be the ID of an existing VPC. 148 | Default: '' 149 | ExistingSubnet1: 150 | Description: ID of an existing subnet that will host the dashboard and cloud resources. 151 | Type: AWS::EC2::Subnet::Id 152 | ConstraintDescription: Must be the ID of an existing Subnet. 153 | Default: '' 154 | ExistingSubnet2: 155 | Description: ID of an existing subnet that will host the load balancer. 156 | Type: AWS::EC2::Subnet::Id 157 | ConstraintDescription: Must be the ID of an existing Subnet. 158 | Default: '' 159 | Metadata: 160 | AWS::CloudFormation::Interface: 161 | ParameterGroups: 162 | - Label: 163 | default: Server 164 | Parameters: 165 | - NumWorkerNodes 166 | - WorkerInstanceType 167 | - WorkerSystem 168 | - EnablePersistence 169 | - Label: 170 | default: Dashboard Login 171 | Parameters: 172 | - Username 173 | - Password 174 | - ConfirmPassword 175 | - Label: 176 | default: Network 177 | Parameters: 178 | - KeyPairName 179 | - ClientIPAddress 180 | - AllowPublicIP 181 | - SSLCertificateARN 182 | - Label: 183 | default: Network License Manager 184 | Parameters: 185 | - DeployLicenseServer 186 | - ExistingLicenseServer 187 | - ExistingLicenseServerSecurityGroup 188 | - Label: 189 | default: Existing VPC 190 | Parameters: 191 | - ExistingVPC 192 | - ExistingSubnet1 193 | - ExistingSubnet2 194 | ParameterLabels: 195 | KeyPairName: 196 | default: Name of Existing Key Pair 197 | NumWorkerNodes: 198 | default: Number of Server VMs 199 | SSLCertificateARN: 200 | default: ARN of SSL Certificate 201 | WorkerInstanceType: 202 | default: Server VM Type 203 | WorkerSystem: 204 | default: Choose between Windows (Windows Server) and Linux (Ubuntu) 205 | Username: 206 | default: Username for Dashboard 207 | Password: 208 | default: Password for MATLAB Production Server and License Server dashboards 209 | ConfirmPassword: 210 | default: Confirm Password for MATLAB Production Server and License Server dashboards 211 | ClientIPAddress: 212 | default: Allow Connections from IP Address 213 | AllowPublicIP: 214 | default: Make Solution Available over Internet 215 | EnablePersistence: 216 | default: Create ElastiCache for Redis 217 | DeployLicenseServer: 218 | default: Deploy License Server 219 | ExistingLicenseServer: 220 | default: IP Address and port number of Existing Network License Manager 221 | ExistingLicenseServerSecurityGroup: 222 | default: Security Group of Existing Network License Manager 223 | ExistingVPC: 224 | default: Existing VPC ID 225 | ExistingSubnet1: 226 | default: Subnet 1 ID 227 | ExistingSubnet2: 228 | default: Subnet 2 ID 229 | Rules: 230 | matchPasswords: 231 | Assertions: 232 | - Assert: !Equals 233 | - !Ref 'Password' 234 | - !Ref 'ConfirmPassword' 235 | AssertDescription: Passwords do not match 236 | checkLicenseServerIPAddressProvided: 237 | RuleCondition: !Not 238 | - !Equals 239 | - !Ref 'ExistingLicenseServer' 240 | - '' 241 | Assertions: 242 | - Assert: !Equals 243 | - 'No' 244 | - !Ref 'DeployLicenseServer' 245 | AssertDescription: Cannot deploy a new license server when you provide a port@hostname for an existing license server. 246 | checkSubnetInVPC: 247 | Assertions: 248 | - Assert: !EachMemberEquals 249 | - !ValueOfAll 250 | - AWS::EC2::Subnet::Id 251 | - VpcId 252 | - !Ref 'ExistingVPC' 253 | AssertDescription: Subnet must exist in the VPC you have selected 254 | Conditions: 255 | DoPublicIP: !Equals 256 | - 'Yes' 257 | - !Ref 'AllowPublicIP' 258 | DoDeployLicenseServer: !Equals 259 | - 'Yes' 260 | - !Ref 'DeployLicenseServer' 261 | Mappings: 262 | VarMap: 263 | NestedTemplateURLs: 264 | vpsStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2024b_mps_refarch/mw-aws-refarch-vpc-stack-cf.yml 265 | productionServerStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2024b_mps_refarch/mw-aws-refarch-cf.yml 266 | Outputs: 267 | MATLABProductionServerAdminVM: 268 | Description: Admin VM that hosts MATLAB Production Server dashboard 269 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVM' 270 | MatlabProductionServerLicenseServer: 271 | Description: Address of the MATLAB network license manager dashboard 272 | Value: !If 273 | - DoDeployLicenseServer 274 | - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerAddress' 275 | - License Server was not deployed with this stack 276 | MATLABProductionServerApplicationsBucket: 277 | Description: S3 Bucket for MATLAB Production Server applications (CTF files) 278 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerApplicationsBucket' 279 | MATLABProductionServerDashboardURL: 280 | Description: URL to access MATLAB Production Server dashboard 281 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardURL' 282 | MATLABProductionServerFunctionExecutionURL: 283 | Description: MATLAB Execution Endpoint 284 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerFunctionExecutionURL' 285 | MATLABProductionServerAdminVMLogGroup: 286 | Description: CloudWatch log group for admin VM 287 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVMLogGroup' 288 | MATLABProductionServerWorkerVMLogGroup: 289 | Description: CloudWatch log group for worker VM 290 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerWorkerVMLogGroup' 291 | MATLABProductionServerAutoScalingGroup: 292 | Description: Auto Scaling Group for managing the number of server VMs 293 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAutoScalingGroup' 294 | MATLABProductionServerCloudStackCacheClusterAddress: 295 | Description: Hostname of Redis cache cluster 296 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterAddress' 297 | MATLABProductionServerCloudStackCacheClusterPort: 298 | Description: Port number of Redis cache cluster 299 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterPort' 300 | MATLABProductionServerLoadBalancer: 301 | Description: Load balancer to change SSL certificate for MATLAB execution endpoint 302 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerLoadBalancer' 303 | MATLABProductionServerDashboardLoadBalancer: 304 | Description: Load balancer to change SSL certificate for MATLAB Production Server dashboard 305 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardLoadBalancer' 306 | Resources: 307 | MatlabProductionServerCustomParamLambdaFunctionStack: 308 | Type: AWS::CloudFormation::Stack 309 | Properties: 310 | TemplateURL: https://matlab-production-server-templates.s3.amazonaws.com/r2024b_mps_refarch/CustomParamLambda.yml 311 | Parameters: 312 | ExistingVPC: !Ref 'ExistingVPC' 313 | MatlabProductionServerLicenseServerStack: 314 | Condition: DoDeployLicenseServer 315 | DependsOn: 316 | - MatlabProductionServerCustomParamLambdaFunctionStack 317 | Type: AWS::CloudFormation::Stack 318 | Properties: 319 | TemplateURL: https://network-license-manager-for-matlab-on-aws.s3.amazonaws.com/R2024b/license-manager-template.json 320 | Parameters: 321 | VPC: !Ref 'ExistingVPC' 322 | Subnet: !Ref 'ExistingSubnet1' 323 | ClientIPAddress: !If 324 | - DoPublicIP 325 | - !Ref 'ClientIPAddress' 326 | - !GetAtt 'MatlabProductionServerCustomParamLambdaFunctionStack.Outputs.MatlabProductionServerVPCCIDR' 327 | ServerInstanceType: t2.micro 328 | SSHKeyName: !Ref 'KeyPairName' 329 | Password: !Ref 'Password' 330 | ConfirmPassword: !Ref 'ConfirmPassword' 331 | MatlabProductionServerResourcesStack: 332 | DependsOn: 333 | - MatlabProductionServerCustomParamLambdaFunctionStack 334 | Type: AWS::CloudFormation::Stack 335 | Properties: 336 | TemplateURL: !FindInMap 337 | - VarMap 338 | - NestedTemplateURLs 339 | - productionServerStackURL 340 | Parameters: 341 | ExistingVPC: !Ref 'ExistingVPC' 342 | ExistingVPCAddress: !GetAtt 'MatlabProductionServerCustomParamLambdaFunctionStack.Outputs.MatlabProductionServerVPCCIDR' 343 | ExistingSubnet1: !Ref 'ExistingSubnet1' 344 | ExistingSubnet2: !Ref 'ExistingSubnet2' 345 | KeyPairName: !Ref 'KeyPairName' 346 | ClientIPAddress: !Ref 'ClientIPAddress' 347 | AllowPublicIP: !Ref 'AllowPublicIP' 348 | SSLCertificateARN: !Ref 'SSLCertificateARN' 349 | NumWorkerNodes: !Ref 'NumWorkerNodes' 350 | WorkerInstanceType: !Ref 'WorkerInstanceType' 351 | WorkerSystem: !Ref 'WorkerSystem' 352 | EnablePersistence: !Ref 'EnablePersistence' 353 | Username: !Ref 'Username' 354 | Password: !Ref 'Password' 355 | ConfirmPassword: !Ref 'ConfirmPassword' 356 | LicenseServerSecurityGroup: !If 357 | - DoDeployLicenseServer 358 | - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.SecurityGroup' 359 | - !Ref 'ExistingLicenseServerSecurityGroup' 360 | LicenseServerPrivateDNS: !If 361 | - DoDeployLicenseServer 362 | - !Join 363 | - '' 364 | - - 27000 365 | - '@' 366 | - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerPrivateDNS' 367 | - !Ref 'ExistingLicenseServer' 368 | -------------------------------------------------------------------------------- /releases/R2023b/templates/mps-aws-refarch-existing-vpc-cf.yml: -------------------------------------------------------------------------------- 1 | AWSTemplateFormatVersion: '2010-09-09' 2 | Description: MATLAB Production Server R2023b with Existing VPC 3 | Parameters: 4 | KeyPairName: 5 | Type: AWS::EC2::KeyPair::KeyName 6 | Description: Enter the key pair name to use for all EC2 instances. If you do not have a key pair, create one in the EC2 console >> Network & Security >> Key Pairs. 7 | ConstraintDescription: Must be the name of an existing EC2 Key Pair. 8 | ClientIPAddress: 9 | Description: >- 10 | Allowed IP addresses that can connect to the MATLAB Production Server VM(s) and the dashboard VM. Specify the range in CIDR notation in the format IP Address/Suffix, where Suffix is an integer between 11 | 0 and 32. Example: 10.0.0.1/24. 12 | Type: String 13 | MinLength: 9 14 | MaxLength: 18 15 | AllowedPattern: (\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2}) 16 | ConstraintDescription: Must be a valid IP in CIDR notation of the form x.x.x.x/x 17 | AllowPublicIP: 18 | Description: Specify whether the deployed solution should use public IP addresses. 19 | Type: String 20 | AllowedValues: 21 | - 'Yes' 22 | - 'No' 23 | Default: 'Yes' 24 | NumWorkerNodes: 25 | Description: Each MATLAB Production Server instance runs on a VM. Specify the number of VMs to run server instances. 26 | Type: Number 27 | Default: 2 28 | MinValue: 1 29 | MaxValue: 24 30 | WorkerInstanceType: 31 | Description: >- 32 | Specify the EC2 instance type to use for a server VM. Each server VM runs multiple MATLAB workers. The default number of workers is 4. Choosing a VM size where the number of vCPUs on a VM matches 33 | the number of workers is recommended. For more information on Amazon EC2 instance types and sizes, see https://aws.amazon.com/ec2/instance-types/ 34 | Default: m6i.xlarge 35 | Type: String 36 | AllowedValues: 37 | - m6i.xlarge 38 | - m6i.2xlarge 39 | - m6i.4xlarge 40 | - m6i.8xlarge 41 | - m6i.12xlarge 42 | - m6i.16xlarge 43 | - m6i.24xlarge 44 | - m6i.metal 45 | - m6a.xlarge 46 | - m6a.xlarge 47 | - m6a.2xlarge 48 | - m6a.4xlarge 49 | - m6a.8xlarge 50 | - m6a.12xlarge 51 | - m6a.16xlarge 52 | - m6a.24xlarge 53 | - m6a.metal 54 | - c6i.xlarge 55 | - c6i.2xlarge 56 | - c6i.4xlarge 57 | - c6i.8xlarge 58 | - c6i.12xlarge 59 | - c6i.16xlarge 60 | - c6i.24xlarge 61 | - c6i.32xlarge 62 | - c6i.metal 63 | - c6a.xlarge 64 | - c6a.2xlarge 65 | - c6a.4xlarge 66 | - c6a.8xlarge 67 | - c6a.12xlarge 68 | - c6a.16xlarge 69 | - c6a.24xlarge 70 | - c6a.32xlarge 71 | - c6a.48xlarge 72 | - c6a.metal 73 | - r6i.xlarge 74 | - r6i.2xlarge 75 | - r6i.4xlarge 76 | - r6i.8xlarge 77 | - r6i.12xlarge 78 | - r6i.16xlarge 79 | - r6i.24xlarge 80 | - r6i.32xlarge 81 | - r6i.metal 82 | - r6a.xlarge 83 | - r6a.2xlarge 84 | - r6a.4xlarge 85 | - r6a.8xlarge 86 | - r6a.12xlarge 87 | - r6a.16xlarge 88 | - r6a.24xlarge 89 | - r6a.32xlarge 90 | - r6a.48xlarge 91 | - r6a.metal 92 | ConstraintDescription: Specify worker instance type. 93 | WorkerSystem: 94 | Description: Choose between Windows (Windows Server) and Linux (Ubuntu). 95 | Type: String 96 | AllowedValues: 97 | - Ubuntu 98 | - Windows 99 | SSLCertificateARN: 100 | Description: Enter the ARN to use for HTTPS connections to the server and dashboard. The ARN you provide must match an existing certificate in the AWS Certificate Manager. 101 | Type: String 102 | AllowedPattern: arn:[\w+=/,.@-]+:[\w+=/,.@-]+:[\w+=/,.@-]*:[0-9]+:[\w+=,.@-]+(/[\w+=,.@-]+)* 103 | ConstraintDescription: Must be a valid certificate ARN of the form arn:aws:acm:region:123456789012:certificate/12345678-1234-1234-1234-123456789012 104 | EnablePersistence: 105 | Description: Specify whether you want to deploy ElastiCache for Redis that lets you use the persistence functionality on the server. 106 | Type: String 107 | AllowedValues: 108 | - 'Yes' 109 | - 'No' 110 | Default: 'No' 111 | DeployLicenseServer: 112 | Description: Specify whether you want to deploy the Network License Manager for MATLAB 113 | Type: String 114 | AllowedValues: 115 | - 'Yes' 116 | - 'No' 117 | Default: 'Yes' 118 | ExistingLicenseServer: 119 | Description: >- 120 | Specify the port number and private DNS name or private IP address of the network license manager that has already been deployed to the existing VPC. Specify it in the format @, 121 | for example, 27000@ip-172-30-1-89.ec2.internal or 27000@172.30.1.89. By default, the license manager uses port 27000. Leave this field blank if you are deploying a new network license manager. 122 | Type: String 123 | AllowedPattern: ([0-9]+@[a-zA-Z0-9.\\-]+)? 124 | ConstraintDescription: If specified, must be in the form @ 125 | Default: '' 126 | ExistingLicenseServerSecurityGroup: 127 | Description: Specify the security group of the network license manager that has already been deployed to the existing VPC. Leave this field blank if you are deploying a new network license manager. 128 | Type: String 129 | Default: '' 130 | Username: 131 | Description: Specify the administrator username to log in to the MATLAB Production Server dashboard. 132 | Type: String 133 | AllowedPattern: ^[^'\s]*$ 134 | ConstraintDescription: Must not contain whitespace or single quote 135 | Password: 136 | Description: Specify the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard. 137 | Type: String 138 | AllowedPattern: ^[^'\s\$]*$ 139 | ConstraintDescription: Must not contain whitespace, single quote or $ sign 140 | NoEcho: true 141 | ConfirmPassword: 142 | Description: Reenter the administrator password to log in to the MATLAB Production Server dashboard and MATLAB license server dashboard. 143 | Type: String 144 | NoEcho: true 145 | ExistingVPC: 146 | Description: ID of your existing VPC where you want to deploy this solution. 147 | Type: AWS::EC2::VPC::Id 148 | ConstraintDescription: Must be the ID of an existing VPC. 149 | Default: '' 150 | ExistingSubnet1: 151 | Description: ID of an existing subnet that will host the dashboard and cloud resources. 152 | Type: AWS::EC2::Subnet::Id 153 | ConstraintDescription: Must be the ID of an existing Subnet. 154 | Default: '' 155 | ExistingSubnet2: 156 | Description: ID of an existing subnet that will host the load balancer. 157 | Type: AWS::EC2::Subnet::Id 158 | ConstraintDescription: Must be the ID of an existing Subnet. 159 | Default: '' 160 | Metadata: 161 | AWS::CloudFormation::Interface: 162 | ParameterGroups: 163 | - Label: 164 | default: Server 165 | Parameters: 166 | - NumWorkerNodes 167 | - WorkerInstanceType 168 | - WorkerSystem 169 | - EnablePersistence 170 | - Label: 171 | default: Dashboard Login 172 | Parameters: 173 | - Username 174 | - Password 175 | - ConfirmPassword 176 | - Label: 177 | default: Network 178 | Parameters: 179 | - KeyPairName 180 | - ClientIPAddress 181 | - AllowPublicIP 182 | - SSLCertificateARN 183 | - Label: 184 | default: Network License Manager 185 | Parameters: 186 | - DeployLicenseServer 187 | - ExistingLicenseServer 188 | - ExistingLicenseServerSecurityGroup 189 | - Label: 190 | default: Existing VPC 191 | Parameters: 192 | - ExistingVPC 193 | - ExistingSubnet1 194 | - ExistingSubnet2 195 | ParameterLabels: 196 | KeyPairName: 197 | default: Name of Existing Key Pair 198 | NumWorkerNodes: 199 | default: Number of Server VMs 200 | SSLCertificateARN: 201 | default: ARN of SSL Certificate 202 | WorkerInstanceType: 203 | default: Server VM Type 204 | WorkerSystem: 205 | default: Choose between Windows (Windows Server) and Linux (Ubuntu) 206 | Username: 207 | default: Username for Dashboard 208 | Password: 209 | default: Password for MATLAB Production Server and License Server dashboards 210 | ConfirmPassword: 211 | default: Confirm Password for MATLAB Production Server and License Server dashboards 212 | ClientIPAddress: 213 | default: Allow Connections from IP Address 214 | AllowPublicIP: 215 | default: Make Solution Available over Internet 216 | EnablePersistence: 217 | default: Create ElastiCache for Redis 218 | DeployLicenseServer: 219 | default: Deploy License Server 220 | ExistingLicenseServer: 221 | default: IP Address and port number of Existing Network License Manager 222 | ExistingLicenseServerSecurityGroup: 223 | default: Security Group of Existing Network License Manager 224 | ExistingVPC: 225 | default: Existing VPC ID 226 | ExistingSubnet1: 227 | default: Subnet 1 ID 228 | ExistingSubnet2: 229 | default: Subnet 2 ID 230 | Rules: 231 | matchPasswords: 232 | Assertions: 233 | - Assert: !Equals 234 | - !Ref 'Password' 235 | - !Ref 'ConfirmPassword' 236 | AssertDescription: Passwords do not match 237 | checkLicenseServerIPAddressProvided: 238 | RuleCondition: !Not 239 | - !Equals 240 | - !Ref 'ExistingLicenseServer' 241 | - '' 242 | Assertions: 243 | - Assert: !Equals 244 | - 'No' 245 | - !Ref 'DeployLicenseServer' 246 | AssertDescription: Cannot deploy a new license server when you provide a port@hostname for an existing license server. 247 | checkSubnetInVPC: 248 | Assertions: 249 | - Assert: !EachMemberEquals 250 | - !ValueOfAll 251 | - AWS::EC2::Subnet::Id 252 | - VpcId 253 | - !Ref 'ExistingVPC' 254 | AssertDescription: Subnet must exist in the VPC you have selected 255 | Conditions: 256 | DoPublicIP: !Equals 257 | - 'Yes' 258 | - !Ref 'AllowPublicIP' 259 | DoDeployLicenseServer: !Equals 260 | - 'Yes' 261 | - !Ref 'DeployLicenseServer' 262 | Mappings: 263 | VarMap: 264 | NestedTemplateURLs: 265 | vpsStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2023b_mps_refarch/mw-aws-refarch-vpc-stack-cf.yml 266 | productionServerStackURL: https://matlab-production-server-templates.s3.amazonaws.com/r2023b_mps_refarch/mw-aws-refarch-cf.yml 267 | Outputs: 268 | MATLABProductionServerAdminVM: 269 | Description: Admin VM that hosts MATLAB Production Server dashboard 270 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVM' 271 | MatlabProductionServerLicenseServer: 272 | Description: Address of the MATLAB network license manager dashboard 273 | Value: !If 274 | - DoDeployLicenseServer 275 | - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerAddress' 276 | - License Server was not deployed with this stack 277 | MATLABProductionServerApplicationsBucket: 278 | Description: S3 Bucket for MATLAB Production Server applications (CTF files) 279 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerApplicationsBucket' 280 | MATLABProductionServerDashboardURL: 281 | Description: URL to access MATLAB Production Server dashboard 282 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardURL' 283 | MATLABProductionServerFunctionExecutionURL: 284 | Description: MATLAB Execution Endpoint 285 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerFunctionExecutionURL' 286 | MATLABProductionServerAdminVMLogGroup: 287 | Description: CloudWatch log group for admin VM 288 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAdminVMLogGroup' 289 | MATLABProductionServerWorkerVMLogGroup: 290 | Description: CloudWatch log group for worker VM 291 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerWorkerVMLogGroup' 292 | MATLABProductionServerAutoScalingGroup: 293 | Description: Auto Scaling Group for managing the number of server VMs 294 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerAutoScalingGroup' 295 | MATLABProductionServerCloudStackCacheClusterAddress: 296 | Description: Hostname of Redis cache cluster 297 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterAddress' 298 | MATLABProductionServerCloudStackCacheClusterPort: 299 | Description: Port number of Redis cache cluster 300 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerCloudStackCacheClusterPort' 301 | MATLABProductionServerLoadBalancer: 302 | Description: Load balancer to change SSL certificate for MATLAB execution endpoint 303 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerLoadBalancer' 304 | MATLABProductionServerDashboardLoadBalancer: 305 | Description: Load balancer to change SSL certificate for MATLAB Production Server dashboard 306 | Value: !GetAtt 'MatlabProductionServerResourcesStack.Outputs.MATLABProductionServerDashboardLoadBalancer' 307 | Resources: 308 | MatlabProductionServerCustomParamLambdaFunctionStack: 309 | Type: AWS::CloudFormation::Stack 310 | Properties: 311 | TemplateURL: https://matlab-production-server-templates.s3.amazonaws.com/r2023b_mps_refarch/CustomParamLambda.yml 312 | Parameters: 313 | ExistingVPC: !Ref 'ExistingVPC' 314 | MatlabProductionServerLicenseServerStack: 315 | Condition: DoDeployLicenseServer 316 | DependsOn: 317 | - MatlabProductionServerCustomParamLambdaFunctionStack 318 | Type: AWS::CloudFormation::Stack 319 | Properties: 320 | TemplateURL: https://network-license-manager-for-matlab-on-aws.s3.amazonaws.com/R2023b/license-manager-template.json 321 | Parameters: 322 | VPC: !Ref 'ExistingVPC' 323 | Subnet: !Ref 'ExistingSubnet1' 324 | ClientIPAddress: !If 325 | - DoPublicIP 326 | - !Ref 'ClientIPAddress' 327 | - !GetAtt 'MatlabProductionServerCustomParamLambdaFunctionStack.Outputs.MatlabProductionServerVPCCIDR' 328 | ServerInstanceType: t2.micro 329 | SSHKeyName: !Ref 'KeyPairName' 330 | Password: !Ref 'Password' 331 | ConfirmPassword: !Ref 'ConfirmPassword' 332 | MatlabProductionServerResourcesStack: 333 | DependsOn: 334 | - MatlabProductionServerCustomParamLambdaFunctionStack 335 | Type: AWS::CloudFormation::Stack 336 | Properties: 337 | TemplateURL: !FindInMap 338 | - VarMap 339 | - NestedTemplateURLs 340 | - productionServerStackURL 341 | Parameters: 342 | ExistingVPC: !Ref 'ExistingVPC' 343 | ExistingVPCAddress: !GetAtt 'MatlabProductionServerCustomParamLambdaFunctionStack.Outputs.MatlabProductionServerVPCCIDR' 344 | ExistingSubnet1: !Ref 'ExistingSubnet1' 345 | ExistingSubnet2: !Ref 'ExistingSubnet2' 346 | KeyPairName: !Ref 'KeyPairName' 347 | ClientIPAddress: !Ref 'ClientIPAddress' 348 | AllowPublicIP: !Ref 'AllowPublicIP' 349 | SSLCertificateARN: !Ref 'SSLCertificateARN' 350 | NumWorkerNodes: !Ref 'NumWorkerNodes' 351 | WorkerInstanceType: !Ref 'WorkerInstanceType' 352 | WorkerSystem: !Ref 'WorkerSystem' 353 | EnablePersistence: !Ref 'EnablePersistence' 354 | Username: !Ref 'Username' 355 | Password: !Ref 'Password' 356 | ConfirmPassword: !Ref 'ConfirmPassword' 357 | LicenseServerSecurityGroup: !If 358 | - DoDeployLicenseServer 359 | - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.SecurityGroup' 360 | - !Ref 'ExistingLicenseServerSecurityGroup' 361 | LicenseServerPrivateDNS: !If 362 | - DoDeployLicenseServer 363 | - !Join 364 | - '' 365 | - - 27000 366 | - '@' 367 | - !GetAtt 'MatlabProductionServerLicenseServerStack.Outputs.ServerPrivateDNS' 368 | - !Ref 'ExistingLicenseServer' 369 | --------------------------------------------------------------------------------