主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

在 AWS 上运行使用 MATLAB Compiler SDK 创建的微服务

此示例展示了如何创建微服务 Docker® 映像并将其部署到 Amazon Web Services (AWS®) 上。通过 MATLAB® Compiler SDK™ 创建的微服务镜像提供一个可用于访问 MATLAB 代码的 HTTP/HTTPS 端点。

您可以先将 MATLAB 函数打包成可部署存档,然后创建包含该存档和最小 MATLAB Runtime 包的 Docker 镜像。然后,您可以在 Docker 中运行该镜像,并使用任何 MATLAB Production Server™ 客户端 API 调用该服务。

示例文件列表

  • simpInterest.m

要下载示例文件,请在 MATLAB 命令行窗口中键入以下内容。

openExample("compilersdk/AWSMicroserviceExample", workDir=pwd)

前提条件

创建 MATLAB 函数

从 MATLAB 桌面创建一个 MATLAB 函数。对于此示例,使用以下代码编写一个名为 simpInterest.m 的函数。

function i = simpInterest(p,r,t)
    i = p * (1 + (r * t)) - p;
end

创建可部署存档

使用 compiler.build.productionServerArchive 函数将 simpInterest.m 函数打包成可部署存档。将构建信息保存为 compiler.build.Results 对象 results

results = compiler.build.productionServerArchive("simpInterest.m","ArchiveName","financetools","Verbose","on")

将可部署存档打包到微服务 Docker 映像

使用您创建的 results 对象将可部署存档打包到微服务 Docker 映像中。

compiler.package.microserviceDockerImage(results,"ImageName","financetools")

该函数会在名为 financetoolsmicroserviceDockerImage 的文件夹中生成以下文件:

  • applicationFilesForMATLABCompiler/financetools.ctf - 可部署存档文件

  • Dockerfile - Docker 文件,指定运行时选项

  • GettingStarted.txt - 包含部署信息的文本文件

通过输入 financetools 来验证 docker images 映像是否已创建。

有关详细信息,请参阅 MATLABCompiler SDK创建微服务 Docker 镜像

创建 AWS Elastic Container Registry 存储库

转到您的 AWS 控制台并在搜索栏中输入 Elastic Container Registry。从结果中选择 Elastic Container Registries 服务。点击创建存储库并填写常规设置。

  • 可见性设置 - 选择“私人”或“公开”。

  • 存储库名称 - 将其命名为与您在上一步中创建的图像相同的名称。

在此示例中,注册表名为 financetools,并设置为公开可见性。

将微服务 Docker 的镜像上传至 AWS 弹性容器注册表

导航到您新创建的存储库并点击查看推送命令。这将打开一个名为 financetools 的推送命令的命令行窗口,其中包含有关如何将您的微服务映像推送到您的存储库的说明。

然后,获取一个认证令牌,并使用该令牌对您的 Docker 客户端进行认证,使其能够访问您的注册表。弹出窗口显示的命令中预先填充了适当的可见性、区域和存储库 ID。复制该命令并在命令行窗口中运行它。该命令应类似于以下内容。

aws ecr-<visibility> get-login-password --region <your_region> | docker login --username AWS --password-stdin <visibility>.ecr.aws/<your_repository_id>

使用容器注册表为微服务 Docker 镜像打上标记,具体操作请按照推送 financetools 的命令弹出窗口中步骤 3 提供的命令执行。例如:

docker tag financetools:latest public.ecr.aws/l8f7j0c7/financetools:latest

通过执行弹出窗口中标题为推送 financetools 的命令的步骤 4 中提供的命令,上传微服务 Docker 的镜像。例如:

docker push public.ecr.aws/l8f7j0c7/financetools:latest

这需要几分钟时间,因为微服务 Docker 的镜像正在上传到云端。完成后,您的 Docker 镜像将作为一个仓库显示在 AWS 弹性容器注册表中。

运行微服务 Docker 镜像

您可以在 AWS 上使用以下选项之一运行微服务 Docker 映像:

  • AWS Fargate

  • Amazon EC2®

  • AWS App Runner

  • 亚马逊弹性容器服务

  • Amazon Elastic Kubernetes® 服务

对于此示例,使用 AWS App Runner 选项,它允许您运行单个容器。

要将其作为 AWS App Runner 运行:

从 AWS 控制台中搜索“AWS App Runner”并创建一个新的 App Runner 服务。

源和部署选项卡中,完成部署设置部分。

工程详细信息

  • 存储库类型 - Container registry

  • 提供方 - 适当选择。

  • 容器映像 URI - 粘贴 URI 或点击浏览以选择您的映像。

部署设置

  • 部署触发器 - Manual

  • ECR 访问角色 - 使用默认或适当选择。

点击下一步。完成服务设置部分。

服务设置

  • 服务名称 - financetools

  • 虚拟 CPU 和内存 - 1 vCPU & 2 GB.

  • 端口 - 9910

  • 自动缩放配置 - 使用默认配置。

健康检查

  • 协议:HTTP

  • 路径:/api/health

安全

  • AWS KMS 密钥:使用默认值。

网络

  • 传入网络流量:适当选择,此示例使用 Public endpoint

  • 传出网络流量:适当选择,此示例使用 Public access

点击下一步。点击创建并部署以创建 AWS App Runner 服务。

一旦部署了 AWS App Runner 服务,您就可以使用服务概述页面上的 Default domain 向其发出请求。

向 AWS App Runner 中运行的微服务发出请求

使用命令行工具或 UI(例如 Postman)向微服务发出请求。以 JSON 格式传入本金、利息、时间三个输入变量。

POST /financetools/simpInterest HTTP/1.1
Host: https://4kxqyz9md2.us-east-1.awsapprunner.com/financetools/simpInterest
Content-Type: application/json
Content-Length: 42
{"nargout": 1, "rhs": [21000, 0.043, 12] }

主机 URI 的格式为 Default_domain/container_image_name/matlab_function_name

使用 curl 发出请求(替换为您自己的默认域前缀)。

curl --location 'https://4kxqyz9md2.us-east-1.awsapprunner.com/financetools/simpInterest' \
--header 'Content-Type: application/json' \
--data '{"nargout": 1, "rhs": [21000, 0.043, 12] }'

您会收到 JSON 格式的单利金额。

{"lhs":[{"mwdata":[10836],"mwsize":[1,1],"mwtype":"double"}]}

另请参阅

|

主题

外部网站