MatlabCompilerで作成したスタンドアローンアプリでのAWS S3へのデータアクセス方法について
Ältere Kommentare anzeigen
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
am 12 Mär. 2025
メッセージボックスだけではエラーの原因の特定ができないので、
catch ME
msgbox(ME.message)
end
のようにエラー情報の内容を表示するようにしてみてはいかがでしょうか。
和哉
am 12 Mär. 2025
和哉
am 13 Mär. 2025
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
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
となります。
Akzeptierte Antwort
Weitere Antworten (0)
Kategorien
Mehr zu インストールとライセンスの紹介 finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!