MATLAB Compiler SDK を使用して作成したマイクロサービスの AWS での実行
この例では、マイクロサービスの 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 Compiler SDK (R2022a 以降) がインストールされていることを確認します。
MATLAB Runtime インストーラーがあることを確認します。インストーラーは MathWorks® の Web サイト https://www.mathworks.com/products/compiler/matlab-runtime.html からダウンロードできます。
MATLAB コマンド ウィンドウで「
[~,msg] = system('docker version')」と入力して、開発マシンで Docker がインストールおよび構成されていることを確認します。WSL を使用する場合は、代わりに'wsl docker version'を使用します。Docker がインストールされていない場合は、Docker の Web サイトの指示に従って、Docker のインストールと設定を行います。https://docs.docker.com/engine/install/ を参照してください。
Windows® でマイクロサービスのイメージをビルドするには、Docker Desktop または Docker on Windows Subsystem for Linux® v2 (WSL2) をインストールする必要があります。Docker Desktop をインストールする場合は、https://docs.docker.com/desktop/setup/install/windows-install/ を参照してください。Docker on WSL2 をインストールする場合は、https://www.mathworks.com/matlabcentral/answers/1758410-how-do-i-install-docker-on-wsl2 を参照してください。
AWS アカウントがあることを確認します。
AWS Command-Line Interface (CLI) がインストールされていることを確認します。詳細については、https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html を参照してください。コマンド
aws configureと資格情報を使用して、AWS CLI を構成する必要があります。
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— デプロイ情報が含まれるテキスト ファイル
「docker images」と入力して、financetools イメージが作成されたことを確認します。
詳細については、MATLAB Compiler SDK のマイクロサービスの Docker イメージの作成を参照してください。
AWS Elastic Container Registry リポジトリの作成
AWS のコンソールに移動し、検索バーに「Elastic Container Registry」と入力します。結果から "Elastic Container Registries" サービスを選択します。[Create Repository] をクリックし、[General settings] を入力します。
Visibility settings — [Private] または [Public] を選択します。
Repository name — 前の手順で作成したイメージと同じ名前を付けます。
この例のレジストリは financetools という名前で、可視性がパブリックに設定されています。
マイクロサービスの Docker イメージの AWS Elastic Container Registry へのアップロード
新規作成したリポジトリに移動し、[View Push Commands] をクリックします。これにより "Push Commands for financetools" というタイトルのコマンド ウィンドウが開き、マイクロサービスのイメージをリポジトリにプッシュする手順が表示されます。
次に、認証トークンを取得し、Docker クライアントをレジストリに認証します。適切な可視性、リージョン、およびリポジトリ ID が事前入力されたコマンドがポップアップ ウィンドウに表示されます。コマンドをコピーして、コマンド ウィンドウで実行します。コマンドは次のようになります。
aws ecr-<visibility> get-login-password --region <your_region> | docker login --username AWS --password-stdin <visibility>.ecr.aws/<your_repository_id>
"Push commands for financetools" ポップアップ ウィンドウの手順 3 で提供されたコマンドを実行し、マイクロサービスの Docker イメージをコンテナー レジストリでタグ付けします。以下に例を示します。
docker tag financetools:latest public.ecr.aws/l8f7j0c7/financetools:latest
"Push commands for financetools" というタイトルのポップアップ ウィンドウの手順 4 で提供されたコマンドを実行して、マイクロサービスの Docker イメージをアップロードします。以下に例を示します。
docker push public.ecr.aws/l8f7j0c7/financetools:latest
マイクロサービスの Docker イメージがクラウドにアップロードされるまで、数分かかります。完了すると、Docker イメージが AWS Elastic Container Registry のリポジトリに表示されます。
マイクロサービスの Docker イメージの実行
AWS で次のいずれかのオプションを使用して、マイクロサービスの Docker イメージを実行できます。
AWS Fargate
Amazon EC2®
AWS App Runner
Amazon Elastic Container Service
Amazon Elastic Kubernetes® Service
この例では、AWS App Runner オプションを使用して単一のコンテナーを実行します。
AWS App Runner として実行するには、次のようにします。
AWS のコンソールから 'AWS App Runner' を検索し、新しい App Runner サービスを作成します。
[Source and deployment] タブで、[Source] セクションと [Deployment settings] セクションを完了します。
プロジェクトの詳細
Repository type —
Container registry。Provider — 適切に選択します。
Container image URI — URI を貼り付けるか、[Browse] をクリックしてイメージを選択します。
デプロイの設定
Deployment Trigger —
Manual。ECR access role — 既定を使用するか、適切に選択します。
[次へ] をクリックします。[Service settings] セクションを完了します。
サービスの設定
Service name —
financetools。Virtual CPU と Virtual Memory —
1 vCPUと2 GB。Port —
9910。Auto scaling configuration — [Default] の構成を使用します。
健全性チェック
Protocol:
HTTP。Path:
/api/health。
セキュリティ
AWS KMS Key: 既定を使用します。
ネットワーク:
Incoming network traffic: 適切に選択します。この例では
Public endpointを使用します。Outgoing network traffic: 適切に選択します。この例では
Public accessを使用します。
[次へ] をクリックします。[Create & deploy] をクリックして、AWS App Runner サービスを作成します。
AWS App Runner サービスがデプロイされたら、[Service overview] ページで Default domain を使用してリクエストを行うことができます。
AWS App Runner で実行中のマイクロサービスへのリクエスト
コマンド ライン ツールまたは Postman などの UI を使用して、マイクロサービスにリクエストを行います。元本、利子、期間の 3 つの入力引数を 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"}]}
参考
compiler.build.productionServerArchive | compiler.package.microserviceDockerImage