メインコンテンツ

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 typeContainer registry

  • Provider — 適切に選択します。

  • Container image URI — URI を貼り付けるか、[Browse] をクリックしてイメージを選択します。

デプロイの設定

  • Deployment TriggerManual

  • ECR access role — 既定を使用するか、適切に選択します。

[次へ] をクリックします。[Service settings] セクションを完了します。

サービスの設定

  • Service namefinancetools

  • Virtual CPU と Virtual Memory1 vCPU2 GB

  • Port9910

  • 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"}]}

参考

|

トピック

外部の Web サイト