MATLAB Answers

MATLABからAW​Sにテキストファイル​を送信したい

3 ビュー (過去 30 日間)
ryota arai
ryota arai 2020 年 7 月 23 日
コメント済み: Kojiro Saito 2020 年 8 月 5 日
MATLABからAWSのAmazonS3にテキストファイルを送信したいと考えています.
AWSでアクセスキー,アクセスシークレットキーを発行し,MATLABのコードに入力し,
上記のサイトをもとに通信しようと考えたのですが,うまくいきません.
そもそもこのサイトが通信するために必要なページなのかも分からなくなってきました.
もし,通信した経験がある方やノウハウをご存じの方がいらっしゃったら教えていただきたいです.
よろしくお願いいたします.

  2 件のコメント

Kojiro Saito
Kojiro Saito 2020 年 7 月 27 日
S3からのデータ読み書きを行うには、上記のドキュメントでの設定が必要になります。
MATLABでどのようなコマンドを実行してどのようなエラーが出ているか、S3に関する部分だけでも抜粋してお教えいただくことはできますでしょうか?
ryota arai
ryota arai 2020 年 7 月 27 日
コードは以下です.
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
filename = 'C:\Users\wellness_root\Downloads\test1.txt';
setenv('AWS_ACCESS_KEY_ID', '-----------------');
setenv('AWS_SECRET_ACCESS_KEY', '------------------------------');
% ds = tabularTextDatastore('s3://wellness1resized/test.txt');
ds = tabularTextDatastore('s3://buckets/wellness1resized/test1/','TreatAsMissing', 'NA', 'SelectedVariableNames', {'ArrDelay'});
tt = ds;
tt = sortrows(rmmissing(tt));
write('s3://wellness1resized/test3/',tt);
% ↑データを書き込むフォルダの指定(空または存在しないフォルダーでなければならない)
% データを読み戻すには、関数 datastore を使用
ds = datastore('s3://wellness1resized/test3');
% ↑AWSに書き込み先とファイル名の指定
tt = tall(ds);
ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
S3にフォルダの作成は出来ているのですが,S3にテキストファイルを送ることが出来ません.
他に調べても全く実現出来そうなヒントなどが見つかりません.よろしくお願いいたします.

サインインしてコメントする。

採用された回答

Kojiro Saito
Kojiro Saito 2020 年 7 月 30 日
関数writeはtall配列を書き込む関数で、datastoreを直接書き込むことができません。
tt = ds;
のところを
tt = tall(ds);
にすればS3にファイルが書き込まれると思います。

  4 件のコメント

表示 1 件の古いコメント
Kojiro Saito
Kojiro Saito 2020 年 8 月 3 日
writeはtall配列のチェックポイントファイルですので、大容量データを前処理などして、後で使い回すときには向いているのですが、テキストファイルを送信する場合だけには不向きです。
こちらがR2020aまでのS3に対応している関数ですが、お使いのバージョンがR2020aなので、copyfileかwritematrix/writetableを使う方法が良いと思います。
下記の方法でいかがでしょうか?
A = 10;
writematrix(A,'test1.txt','Delimiter',';') %test1.txtに10という数値を書き込む
setenv('AWS_ACCESS_KEY_ID', '----------------------------');
setenv('AWS_SECRET_ACCESS_KEY', '----------------------------------------');
% テキストファイルのプッシュ
[status,msg,msgID] = copyfile('test1.txt', 's3://------/test3');
または、writematrixやwritetableで直接S3に書き込む方法もあります。
writematrix(A,'s3://------/test3/test1.txt','Delimiter',';')
ryota arai
ryota arai 2020 年 8 月 4 日
S3に書き込めました!ありがとうございます!!
Kojiro Saito
Kojiro Saito 2020 年 8 月 5 日
良かったです。もしよろしければ回答の採用をしていただけると幸いです。

サインインしてコメントする。

その他の回答 (0 件)

製品


リリース

R2020a

Community Treasure Hunt

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

Start Hunting!