#S3からSagemakerへsftpでファイル移送したい
できるのかさっぱり分からなかったし、調べものしても分からなかったので調べた結果だけ残しておく。
SageMakerからs3を参照するとかなら簡単なんだけどSageMakerインスタンスにデータをコピーするってできるのかしら。
初心者の初心者による自分向けメモです。
#備忘録
##sftpの解説から何何攻撃で深堀り
###sftp(SSH file transfer protocol)
ホスト間で対話形式のファイル転送をするときはFTP (File Transfer Protocol)が利用されてきたけど、通信内容が暗号化されないという問題。SFTPを使えばより安全だよ。指定されたホスト(SSHサーバー)にログインして、getとかputとか書くことで色々できるよ。
(参考:https://www.atmarkit.co.jp/ait/articles/1505/20/news004.html)
(参考:https://www.itmedia.co.jp/enterprise/articles/0706/06/news010_2.html)
(参考:https://dezanari.com/ssh-sftp/#toc3)
###SSH (Secure Shell)
初歩の初歩だけど空で説明できないのでメモメモ。ネットワークに接続された機器を遠隔操作し管理するための手段。各種サーバー機器はほとんどの場合操作をする人から離れた場所にあるため、この操作をする人だけが安全にインターネット経由で接続できる手段が必要になる。ログイン認証にはパスワード認証方式と公開鍵認証方式がある。
(参考:https://www.kagoya.jp/howto/rentalserver/ssh/)
###Shell
初歩の初歩だけど同じくメモメモ。人からの入力とコンピュータからの出力をそれぞれに伝える役割。シェルがエラーしてクラッシュした時に、OSの中核であるカーネルへの影響を小さくするなど、貝殻(shell)の役割もある。CUIをベースとするコマンドラインシェルを一般的にさすが、windowsのスタートメニューやタスクバーなどの機能をもつExploererもグラフィカルシェルといってShellの一つ。そうなんだ!!
(参考:https://recruit.cct-inc.co.jp/tecblog/os/shell/)
###カーネル(Kernel)
jupyter notebookとか使ってなんとなくは知ってるけど説明できないのでメモメモ。OSとしてメモリ管理・プロセス管理・スケジューリングと割り込み・デバイス管理などの機能をおつプログラム。カーネルはコンピュータの各コンポーネント (CPU, Memory, Disk, NIC, 等) を制御する、つまり機械を制御するために動作します。一方でシェルは人間が使うことが前提のアプリケーション。なるほどおおおおお
(参考:https://milestone-of-se.nesuke.com/sv-basic/architecture/windows-linux-kernel-and-shell/)
###ftp (File Transfer Protocol)
ファイル移送のためのプロトコル。windowsに標準インストールされているコマンドプロンプトでのFTPクライアントを使えばラクラク操作可能。サーバー側の設定は必要だけど、ftp 192.168.0.1みたいなことを書くことで接続可能。
(参考:https://www.infraexpert.com/study/tcpip22.5.html)
###192.168.x.x
よく見るけどなんでよく見るんだっけこれ、となりかかったのでメモメモ。192.168.0.0~192.168.255.255はプライベート・アドレス領域だよ。全部グローバルアドレスにするとIPアドレス足らな過ぎてやばいよ。
(参考:https://xtech.nikkei.com/it/free/NNW/NETHOT/20040624/146335/)
##SageMaker周り
###AWS Transfer Family
Amazon S3 との間で直接ファイル転送を実行できるサービスSecure File Transfer Protocol (SFTP)、File Transfer Protocol over SSL (FTPS)、および File Transfer Protocol (FTP) をサポート。既存の認証システムと連携し、Amazon Route 53 を使用した DNS ルーティングを提供することにより、ファイル転送ワークフローを AWS にシームレスに移行できるようにします。
(参考:https://aws.amazon.com/jp/aws-transfer-family/?whats-new-cards.sort-by=item.additionalFields.postDateTime&whats-new-cards.sort-order=desc)
(参考:https://dev.classmethod.jp/articles/aws-transfer-for-ftp-and-ftps-in-addition-to-existing-sftp/)
###AWS CLIからSagemakerを触る
boto3を使わずともpythonで書けるらしい。知らなんだ
(参考:https://qiita.com/leomaro7/items/a524121f366764819a98)
(参考:https://qiita.com/KC_NN/items/fc4e39e7b5bd36453a0b)
###AWS Transfer Familyを使わずともAWS CLIで出来る説
pythonのsagemakerパッケージを使えば、read_csvをした後にローカルで保存すれば実質上の移送はできそう。画像データとかもできるのかしら?
(参考:https://www.it-swarm-ja.tech/ja/python/s3%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92aws-sagemaker%E3%83%8E%E3%83%BC%E3%83%88%E3%83%96%E3%83%83%E3%82%AF%E3%81%AB%E3%83%AD%E3%83%BC%E3%83%89%E3%81%99%E3%82%8B/836580572/)
###SagemakerのVPC設定周り
デフォルトでもSageMaker Service ManagedのVPCに起動するの知らなかった。VPCのカスタムとインターネット接続の有無とで構成が変わるらしい。
(参考:https://dev.classmethod.jp/articles/sagemaker-network-vpc/)
(参考:https://dev.classmethod.jp/articles/sagemaker-restrict-access/)
###ENI (Elastic Network Interface)
ENIは、物理的な環境におけるNIC(Network Interface Card)のことです。NICの場合は、サーバーに複数枚挿すことで、サーバーが担う複数の役割に応じてIPアドレスを複数持たせたり、異なるセグメント間で1台のサーバーを動作させたりすることができました。ネットワークのインターフェースと聞くだけで何となく納得感。
(参考:https://business.ntt-east.co.jp/content/cloudsolution/column-14.html#:~:text=ENI%E3%81%AF%E3%80%81%E7%89%A9%E7%90%86%E7%9A%84%E3%81%AA,Interface%20Card%EF%BC%89%E3%81%AE%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82&text=NIC%E3%82%92%E6%B4%BB%E7%94%A8%E3%81%97%E3%81%A6,%E7%89%A9%E7%90%86%E7%9A%84%E3%81%AA%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%A7%E3%81%99%E3%80%82)
#所感
英語略字多すぎィっ