#はじめに
WinSCPがAWS S3に対応したので、WinSCPをS3クライアントとした場合の設定について覚書を書いていく
WinSCPのインストール
以下からパッケージをダウンロードする。
https://ja.osdn.net/projects/winscp/
大抵はWinSCP-5.x.x-Setup.exeでいいと思うが、RPAと連携したりする場合はWinSCP-5.x.x-Automation.zipをインストールすると、WinSCPをCOMオブジェクトとして動かせるようになる、補足として、COM登録は以下のコマンドでできる
%WINDIR%\Microsoft.NET\Framework\<version>\RegAsm.exe WinSCPnet.dll /codebase /tlb
WinSCPのコマンドライン
このあたりは、ヘルプに載っている内容なのでさらっと転記しておきます
winscp.exe <保存したセッション名>
winscp.exe [(sftp|ftp|scp)://][ユーザー名[:パスワード]@]ホスト名[:ポート][/開くパス/[ファイル名]]
winscp.exe [mysession] /synchronize [ローカルディレクトリ] [リモートディレクトリ「] [/defaults]
winscp.exe [mysession] /keepuptodate [ローカルディレクトリ] [リモートディレクトリ] [/defaults]
winscp.exe [mysession] /upload ファイル1 ファイル2 ファイル3 ... [/defaults]
winscp.exe [mysession] [/privatekey=<秘密鍵ファイル>] [/hostkey=<鍵の指紋>]
winscp.exe [mysession] [/passive] [/implicit|explicitssl|explicittls]
winscp.exe [mysession] [/timeout=<行>]
winscp.exe [/console] [/script=スクリプトファイル] [/command コマンド1 コマンド2 ...] [/parameter パラメータ1 ...]
winscp.exe /ini=<iniファイル> /log=<ログファイル>
winscp.exe /update
winscp.exe /help
また、WinSCPにはコンソール機能を呼び出す「winscp.com」という実行ファイルも付属しています。winscp.comの基本的なオプションは下記のとおりです。
winscp.com [/script=スクリプトファイル] [/command コマンド1 コマンド2 ...] [/parameter パラメータ1 ...]
winscp.com /ini=<iniファイル> /log=<ログファイル>
winscp.com /help
WinSCPをS3クライアントとして使うための準備
接続先パケットを用意する、ここでは、説明のため以下の名称のバケットを作ったとする
s3://winscp-file-modify
AWS IAMにて、S3に対して必要な権限を付けた、credentialを発行する
※なおアクセス制限については、S3のポリシーで設定することになるので、留意する。
Access key ID = AXXXXXXXXXXXXXXA
Secret access key = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
WinSCPに接続設定を登録する
スクリーンショットのように
転送プロトコル
を Amazon S3
に指定
アクセスキー
とシークレットキー
には、IAMで生成したcredentialの内容を転記する。
次に、設定(D)...
ボタンから 高度なサイトの設定
を開き リモートディレクトリ
に /(s3バケット名)
を指定する
設定が終わったら、保存
ボタンで保存する。セッション名は任意で構わないが、デフォルトはアクセスキー@s3.amazonaws.com
になっている(ここでは次の説明でも使うのでデフォルト名で保存)
通常利用の場合
基本的に通常のWinSCPと同じように、左右のペインのファイル移動でアップロード/ダウンロードができる
※注意点として、/<ルート>
でディレクトリを操作するとバケットが操作できるので注意が必要
/<ルート>
でディレクトリを作成すると、バケットが作成される
/<ルート>
でディレクトリを削除すると、バケットが削除される
/<ルート>
でディレクトリをリネームすると、バケットが別名で生成され、内容がコピーされ、元のパケットが削除される
そのため、バケットの操作はポリシーできちんと縛っておかないと事故のもとになるので注意が必要
WinSCPのコマンドラインからS3にファイルをアップロードする
コマンドラインからバケットにアップロードするには、以下のコマンド、
s3cmdやawscliでインタプリタを別途インストールしたりする必要がないので非常に楽です。
s3をftpみたいな感覚で扱える点が素晴らしい!!
以下のようにすると、セッションに登録されているバケットにアップロードされる
winscp.exe <アクセスキー>@s3.amazonaws.com /upload <ドライブ:\パス\ファイル名> /defaults
さいごに
WindowsのS3のGUIクライアントは有料のものが多く、手軽に扱えるものが少なかったので、WinSCPがS3に対応したのは非常に良かったと思います。