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

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일

0 개 추천

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

댓글 수: 4

ryota arai
ryota arai 2020년 8월 2일
具体的には,MATLABで作り出したtest1.txtというテキストファイルをS3のtest3フォルダに送信したいのですが,
array_r1_00001_snapshot_0x1.mat
というファイルが生成され,そのファイルの中には3や5などのtest1.txtに書き込んである数値とは異なる数値が入っています.これは正しいのでしょうか?
PC上に存在するテキストファイルを送信するにはどのようにコードを追加してパスを指定すればMATLABのコードでS3に送信できますか?
なお,お返事を頂きました内容をもとにコードを変更しました.
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
A = 10;
writematrix(A,'test1.txt','Delimiter',';') %test1.txtに10という数値を書き込む
setenv('AWS_ACCESS_KEY_ID', '----------------------------');
setenv('AWS_SECRET_ACCESS_KEY', '----------------------------------------');
ds = tabularTextDatastore('s3://ーーーーーー/test.txt');
tt = tall(ds);
tt = sortrows(rmmissing(tt));
write('s3://ーーーーーーーーーー/test3/',tt);
% データを読み戻すには、関数 datastore を使用
ds = datastore('s3://ーーーーーーーーーー/test3');
tt = tall(ds);
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
以上,何卒お返事の程よろしくお願いいたします.
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

질문:

2020년 7월 23일

댓글:

2020년 8월 5일

Community Treasure Hunt

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

Start Hunting!