EC2 Instance Connect CLIでEC2インスタンスへのSFTPもできます

2019.06.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは奥です。 先程EC2に対してIAMでログイン制御を行えるEC2 Instance Connectが発表されました。 詳しくはこちらの記事をみていただきたいです。

EC2のSSHアクセスをIAMで制御できるEC2 Instance Connectが発表されました

これだけでも便利ですが、CLIからEC2 Instance Connectを使うためのコマンドである、ec2 instance connect cliにはSFTPの機能もついています。msftpという名前で使えるので今回はこれを紹介したいと思います。

インストール方法

ec2 instance connect cliのインストール時に同包されているので取得済みの方は特に必要なものはありません。 また前提として、aws-cliのインストールがmsshで求められているのでそちらも合わせてインストールしてください。 既にmsshのためにインストールしてる方もいると思いますが、おさらいとして、インストール方法を記載します。

$ aws s3api get-object --bucket ec2-instance-connect --key cli/ec2instanceconnectcli-latest.tar.gz ec2instanceconnectcli-latest.tar.gz
{
    "AcceptRanges": "bytes",
    "LastModified": "Thu, 27 Jun 2019 19:16:19 GMT",
    "ContentLength": 21550,
    "ETag": "\"4f123a5eb28a03e3f62e40e1797e7026\"",
    "VersionId": "n117kEUFch4DbmYprejb_i5jDVP8pbR5",
    "ContentType": "application/x-gzip",
    "Metadata": {}
}

$ sudo pip install ec2instanceconnectcli-latest.tar.gz

簡単ですね。

msftp

実際にhelpをみてどんなものかを確認しましょう。 基本的には、sftpコマンドと同じですが、ホストの指定にインスタンスIDを使用していますね。

msftp --help
usage: 
            msftp [-u aws_profile] [-z availability_zone] [supported sftp flags] target
            target                 => [user@]instance_id[:file ...][:dir[/]] | [user@]hostname[:file ...][:dir[/]]
            [supported sftp flags] => [-P port] [-b batchfile]
        

optional arguments:
  -h, --help           show this help message and exit
  -r , --region        AWS region
  -z , --zone          Availability zone
  -u , --profile       AWS Config Profile
  -t , --instance_id   EC2 Instance ID. Required if target is hostname
  -d, --debug          Turn on debug logging

実際に使ってみるとこんな感じの使用感です。 ec2instanceconnectcliをEC2インスタンスにアップロードしています。

$ msftp i-xxxxxxxxxxxxxxxxx
Connected to ec2-user@xxx.xxx.xxx.xxx.
sftp> put ec2instanceconnectcli-latest.tar.gz
Uploading ec2instanceconnectcli-latest.tar.gz to /home/ec2-user/ec2instanceconnectcli-latest.tar.gz
ec2instanceconnectcli-latest.tar.gz                                                                                                                  100%   21KB 603.6KB/s   00:00    
sftp> quit

サーバにログインしてファイルがアップロードされているかも確認してみます。

mssh i-xxxxxxxxxxxxxxxxx
Last login: Fri Jun 28 02:54:49 2019 from ec2-3-112-23-0.ap-northeast-1.compute.amazonaws.com

       __|  __|_  )
       _|  (     /   Amazon Linux 2 AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-2/
[ec2-user@ip-192-168-0-125 ~]$ ls
ec2instanceconnectcli-latest.tar.gz

無事アップロードされてますね。

さいごに

鍵の管理からある程度解放されそうな予感がするので嬉しい限りですね。