├── 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:
- **US-East (N. Virginia)**
- **US-West (Oregon)** — R2022b or later only
- **Europe (Ireland)**
- **Asia Pacific (Tokyo)**
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 | 
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*:- 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.
- Log in with the username ```manager``` and the password you specified while creating the stack.
62 | - *If using an existing network license manager*:- 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.
- Log in with the username and password configured when initially deploying this License Manager.
- 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** | - ```MatlabProductionServerResourcesStack```
- ```MatlabProductionServerCustomParamLambdaFunctionStack```
| - ```MatlabProductionServerResourcesStack```
- ```MatlabProductionServerLicenseServerStack```
- ```MatlabProductionServerCustomParamLambdaFunctionStack```
|
84 | | **New VPC** | Not recommended | - ```MatlabProductionServerResourcesStack```
- ```MatlabProductionServerLicenseServerStack```
- ```MatlabProductionServerVPCStack```
- ```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:- **US-East (N. Virginia)**
- **US-West (Oregon)**
- **Europe (Ireland)**
- **Asia Pacific (Tokyo)**
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
- This is the public IP address, which can be found by searching for "what is my ip address" on the web. The mask determines the number of IP addresses to include.
- A mask of 32 is a single IP address.
- If you need a range of IP addresses, use a [CIDR calculator](https://www.ipaddressguide.com/cidr).
- To determine which address is appropriate, contact your IT administrator.
|
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: - Log in to the AWS Console.
- Navigate to the VPC dashboard and select your VPC.
- Click the **CIDR blocks** tab.
- 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.- The username is **manager**.
- For the password, enter the password that you entered in the **Dashboard Login** section while creating the stack.
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:- **US-East (N. Virginia)**
- **US-West (Oregon)**
- **Europe (Ireland)**
- **Asia Pacific (Tokyo)**
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
- This is the public IP address, which can be found by searching for "what is my ip address" on the web. The mask determines the number of IP addresses to include.
- A mask of 32 is a single IP address.
- If you need a range of IP addresses, use a [CIDR calculator](https://www.ipaddressguide.com/cidr).
- To determine which address is appropriate, contact your IT administrator.
|
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: - Log in to the AWS Console.
- Navigate to the VPC dashboard and select your VPC.
- Click the **CIDR blocks** tab.
- 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.- The username is **manager**.
- For the password, enter the password that you entered in the **Dashboard Login** section while creating the stack.
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:- **US-East (N. Virginia)**
- **US-West (Oregon)**
- **Europe (Ireland)**
- **Asia Pacific (Tokyo)**
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
- This is the public IP address, which can be found by searching for "what is my ip address" on the web. The mask determines the number of IP addresses to include.
- A mask of 32 is a single IP address.
- If you need a range of IP addresses, use a [CIDR calculator](https://www.ipaddressguide.com/cidr).
- To determine which address is appropriate, contact your IT administrator.
|
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: - Log in to the AWS Console.
- Navigate to the VPC dashboard and select your VPC.
- Click the **CIDR blocks** tab.
- 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.- The username is **manager**.
- For the password, enter the password that you entered in the **Dashboard Login** section while creating the stack.
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 |
--------------------------------------------------------------------------------