MatlabComp​ilerで作成したス​タンドアローンアプリ​でのAWS S3へのデータアクセス方法について

MATLAB から Amazon S3 バケットにアクセスして、S3 上にあるバケットの存在確認およびファイルのデータを取得するスクリプトを作成しました。
MATLAB上での実行では問題なく動作し成功のメッセージボックスがでることを確認しましたが、このスクリプトをMATLAB Compilerでスタンドアローンアプリにすると失敗のメッセージボックスが出力されてしまいました。
何が原因か教えてください。
% AWSの設定
awsAccessKey = '**********';
awsSecretKey = '**********';
setenv('AWS_ACCESS_KEY_ID', awsAccessKey);
setenv('AWS_SECRET_ACCESS_KEY', awsSecretKey);
setenv('AWS_DEFAULT_REGION','ap-northeast-1');
% バケットの存在確認
if isfolder("S3上のバケットパス")
msgbox("isfolder成功")
else
msgbox("isfolder失敗")
end
% S3上にあるファイルのデータを取得
try
testData = readmatrix("S3上のファイルパス");
if ~isempty(testData)
msgbox("readmatrix成功")
else
msgbox("readmatrix失敗")
end
catch
msgbox("readmatrix失敗")
end

7 Kommentare

Kojiro Saito
Kojiro Saito am 12 Mär. 2025
メッセージボックスだけではエラーの原因の特定ができないので、
catch ME
msgbox(ME.message)
end
のようにエラー情報の内容を表示するようにしてみてはいかがでしょうか。
和哉
和哉 am 12 Mär. 2025
コメントありがとうございます。
catch MEを用いてエラー情報の内容を表示したところ以下のメッセージボックスが出力されました。
MATLAB上での実行では問題ないため、ファイル名が間違っているということはないと思います。
何か原因分かりましたらご回答お願いいたします。
和哉
和哉 am 13 Mär. 2025
上記エラーの件、MATLAB Runtimeの更新により解決することができました。
当方、RuntimeにはMATLABCompilerで作成したアプリインストーラーにて同時にWebからダウンロードされる2GBほどのものを使用していましたが、今回はこれをMATLAB Runtimeのサイトからインストールできる10GBほどのフルパッケージ?のRuntimeに更新したところクラウド接続がスタンドアロンアプリでも実行できることを確認しました。
クラウド接続に必要なRuntimeの機能が不足していたのかと思いますが、Runtimeのインストール時に追加する機能を選択するなどは可能なのでしょうか?10GBではファイルサイズが重くこれを最適化できればと考えています。
Kojiro Saito
Kojiro Saito am 13 Mär. 2025
@和哉さん
MATLAB RuntimeのWebページからダウンロードできるインストーラーでは、全てのコンポーネントがインストールされるためファイルサイズが大きくなってしまいます。
スタンドアロンアプリのアプリを作成する際に「for_testing」フォルダーに「requiredMCRProducts.txt」というファイルが作成され、これに書かれている35002などの番号が必要なコンポーネントになります。
スタンドアロンアプリを作って最初にインストールした際と、その後でコードを追加されたりしてコンポーネント番号が今の場合だと増えている可能性はありませんでしょうか? その場合、一度MATLAB Runtimeをアンインストールし、再度スタンドアロンアプリのインストーラー (MyAppInstaller_web.exe)を実行することで必要なコンポーネントのみをインストールすることができます。
和哉
和哉 am 13 Mär. 2025
教えていただきありがとうございます。
コード編集前のコンポーネント番号がどれだけあったかは分かりませんので増えたかどうかは判断できませんが、一度Runtimeをアンインストールして再度スタンドアロンアプリのインストーラーを実行してみたところ、より少ないファイルサイズのRuntimeでアプリが実行できることを確認しました。
コード編集後にRuntimeの更新は行っていませんでしたので、クラウド接続が上手くいっていなかった時はそれが原因でコンポーネントが不足していたのではないかと思います。解決しました、ありがとうございます。
参考までに聞かせていただきたいのですが、「requiredMCRProducts.txt」を見たところ「35002 35003 35010」といった番号がありました。これはそれぞれどのようなコンポーネントなのでしょうか?分かりましたら今後のために教えていただけると助かります。
Kojiro Saito
Kojiro Saito am 13 Mär. 2025
公式ではなくユーザーさんの調査結果になりますが (参考:https://jp.mathworks.com/matlabcentral/answers/780072)、下記のコマンドでコンポーネント番号からコンポーネント情報を調べることができます。
pcmn = matlab.depfun.internal.ProductComponentModuleNavigator;
pcmn.productInfo(35000)
「35002 35003 35010」はそれぞれ
35002 Graphics
35003 Non Interactive MATLAB
35010 Numerics
となります。
和哉
和哉 am 14 Mär. 2025
Bearbeitet: 和哉 am 14 Mär. 2025
ご返事ありがとうございます。
以前こちらの件、一度Runtimeをアンインストールしてスタンドアロンアプリのインストーラを再度実行したことで解決したとお返事しましたが、Runtimeのアンインストールが上手くいっていなかったようでやはりスタンドアロンアプリでインストールされるRuntimeでは上手く実行できませんでした。訂正します、申し訳ありません。
そこでお聞きしたいのですが、AWSのバケットに対してReadMatrixやisdir関数を使う場合(AWSとの接続を行う場合)にはどのようなコンポーネントが必要になるか分かりますでしょうか?
やはり「35002 35003 35010」の3つのコンポーネントでは足りないのではないかと思っています。
大変お手数ですが、ご回答いただければと思います。

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Kojiro Saito
Kojiro Saito am 15 Mär. 2025
Verschoben: Kojiro Saito am 18 Mär. 2025

0 Stimmen

コンポーネント35000 (MATLAB Runtime - Core)を含めるようにしてMATLAB Runtimeのインストーラーを作ってみてはいかがでしょうか。
compiler.runtime.download % 4.4 GBのダウンロードなので少々時間が掛かります
compiler.internal.buildinstallagent(35000, 35002, 35003, 35010) % requiredMCRProducts.txtに入っていない35000を追加
MATLAB Runtimeのインストーラーが
C:\Users\ユーザー名\AppData\Local\MathWorks\installAgent\R2024b\win64\InstallAgent_f00000000000000000.zip
のようなファイル名で作成されますので、Zipを配布先のマシンにコピーし、解凍してsetup.exeを実行してMATLAB Runtimeをインストールします。
その後で「for_redistribution」にある「MyAppInstaller_web.exe」でスタンドアロンアプリのインストールを実行します。MATLAB Runtimeのインストールはスキップされます。

2 Kommentare

和哉
和哉 am 18 Mär. 2025
Verschoben: Kojiro Saito am 18 Mär. 2025
ご教授いただきありがとうございます。
上記していただいたように、コンポーネント35000 (MATLAB Runtime - Core)を含めたMATLAB Runtimeでインストールし直してみたところ、スタンドアロンアプリを実行できることを確認しました、ありがとうございました。
Kojiro Saito
Kojiro Saito am 18 Mär. 2025
Verschoben: Kojiro Saito am 18 Mär. 2025
@和哉さん
確認ありがとうございました。解決して良かったです。
一旦上記のコメントを回答に移動させますので、回答の採用 (accept)の処理を実行いただけますでしょうか。
コンパイル時にコンポーネント35000がrequiredMCRProducts.txtに含まれていないのはそもそも挙動として不自然なので、こちらはバグ報告しておきます。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Produkte

Version

R2024a

Gefragt:

am 12 Mär. 2025

Verschoben:

am 18 Mär. 2025

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!