AWS Transfer Family を使ってみた。

案件でSFTP経由でS3にデータをストアすることになったので、
AWSのSFTPサーバのサービスを使ったみました。

これが参考になった。

engineer.retty.me


「create server」 を選択
f:id:onrenkai:20200707135843p:plain

「SFTP」を選択
f:id:onrenkai:20200707140014p:plain

「Service managed」を選択
f:id:onrenkai:20200707140112p:plain

「public accessible」を選択
f:id:onrenkai:20200707140205p:plain

事前に作成したIAMロールを選択
f:id:onrenkai:20200707140607p:plain

最後にreviewで問題なければCreate
f:id:onrenkai:20200707140459p:plain



サーバができたら続いて、ユーザーの追加を行います。
「Add User」をクリック
f:id:onrenkai:20200707140924p:plain

各項目を埋めていく。
Home directoryはS3バケットとなる。
f:id:onrenkai:20200707141742p:plain


SFTP接続用のBashスクリプト(sftp.sh)作ってみた。

#! /bin/bash
set -x

if [ $# -ne 7 ]; then
  echo "expected 6 args..."
  exit 200
fi

SSH_KEY_PAIR=$1
SFTP_USER=$2
SFTP_HOST=$3
ORIG_FILE=$4
PUT_DIR=$5
PUT_PATH=$6
PUT_FILE=$7

iconv -f cp932 -t utf8 $ORIG_FILE > $PUT_PATH

echo "sftp -i $SSH_KEY_PAIR ${SFTP_USER}@${SFTP_HOST}"
echo "ORIG_FILE: $ORIG_FILE"
echo "PUT_DIR: $PUT_DIR"
echo "PUT_FILE: $PUT_FILE"

sftp -i $SSH_KEY_PAIR ${SFTP_USER}@${SFTP_HOST} << !
  cd  $PUT_DIR
  put $PUT_PATH
  ls $PUT_FILE
  bye
!

rm $PUT_PATH

exit 0


実行コマンドは下記

# bash sftp.sh $ssh_key_pair $sftp_user $sftp_host $file_path $sftp_put_dir $temp_file_path $temp_file_name