Amazon Web Services ブログ

新発表 – AWS Transfer for SFTP – Amazon S3と連携したマネージドなSFTPサービス

SFTP(Secure File Transfer Protocol) は、長年に渡って使用されてきたデータ処理やパートナー連携の一部として、現在でも多くの組織で利用されています。このようなシステムを「レガシー」という言葉で片付けてしまうのは簡単ですが、現実には、今後も長期間に渡ってSFTPは利用され続けるでしょう。そこで私達は、このようなワークフローを持つお客様が、スムーズかつ、大きな変更を伴わずにクラウド環境に移行できるようなお手伝いをしたいと思います。

AWS Transfer for SFTP

本日(2018年11月26日)、私達は完全マネージドかつ高い可用性をもつSFTPサービスである、「AWS Transfer for SFTP」をローンチいたしました。このサービスを利用するのに必要なことは、サーバーを作成し、ユーザーアカウントをセットアップし、ひとつまたは複数のAmazon Simple Storage Service(S3)バケットと関連付けるだけです。また、ユーザーIDや権限管理、鍵管理について細かく設定することが可能です。ユーザー管理については、このサービス用にユーザーを作成することもできますし、既存のIDプロバイダを利用することも可能です。アクセス権限については、IAMポリシーを用いて管理することができます。さらに、既存のDNS名やSSHキーを利用して現在のシステムを簡単にこのサービスに移行することもできます。そのため、あなたのお客様やあなたのパートナーはこれまでと何も変わらず、普段通りに既存のワークフローに従ってファイル転送を行うことができるのです。

このサービスでは、ライフサイクルポリシーや複数のストレージクラスサーバーサイド暗号化バージョニングといったS3の様々な機能を活用することが可能です。これにより、AWS Lambdaを用いて、アップロードされたファイルをすぐに処理するような「かしこい」FTPサイトを構築することもできますし、Amazon Athenaを用いてデータにクエリをかけたり、既存のデータ入力方法と組み合わせることも簡単にできます。一方、出力側としては、他のAWSサービスと組み合わせることで様々なファイルやカスタムソフトウェアをS3上に生成し、SFTPを用いてお客様やパートナーに提供することも可能です。

サーバーの作成手順

まずはじめに、マネージメントコンソールからAWS Transfer for SFTPを開き、Create Serverをクリックします。

Create serverの画面では、認証情報について、Transfer for SFTPで管理されるユーザー・パスワードを利用する設定を選ぶこともできますし、既存のLDAPやActive DirectoryによるIDプロバイダをAPI Gateway経由で利用する設定にすることもできます。また、Amazon Route 53のDNS aliasや既存のホスト名を設定したり、タグ付けすることもできます。まず最初はすべてデフォルト設定のまま、Create Serverをクリックし、実際に自分のSFTPサーバーを立ち上げてみましょう。

数分以内にサーバーが立ち上がります。

次にユーザーを追加してみましょう。サーバーを選択し、Add userをクリックします。Add userの画面ではユーザー名やホームディレクトリとなるS3バケット(オプションとしてプレフィックスも指定できます)、適切なアクセス権限を付加したIAMロールを設定しましょう。そして、ssh-keygenで作成されたSSH公開鍵を貼り付け、Addボタンをクリックします。

これで準備は完了です。サーバーのアクセス用エンドポイントをコンソールから確認したら最初のsftpコマンドを実行してみましょう。

アップロードされたファイルはS3バケットのjeff/ の下で速やかに確認することができます。

さらにLambda関数をバケットに設定することで、アップロード後に様々な処理を行うことが可能です。例えば、アップロードされたすべての画像をAmazon Rekognitionで処理し、画像に写っているものに応じて別々の場所にファイルを移動させることもできますし、Amazon Transcribeを用いてオーディオファイルの文字書き起こし(speech to text)を行うこともできます。

IAMによるアクセス制御

要点のみを説明するために、今回は以下のような非常にシンプルなIAMポリシーをIAMロールに設定しました。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::data-transfer-inbound"
        },
        {
            "Effect": "Allow",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::data-transfer-inbound/jeff/*"
        }
    ]
}

 

多くのユーザーをひとつのサーバでホストする場合には以下のような権限を限ったポリシーを利用することもできます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "ListHomeDir",
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::${transfer:HomeBucket}"
        },
        {
            "Sid": "AWSTransferRequirements",
            "Effect": "Allow",
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation"
            ],
            "Resource": "*"
        },
        {
            "Sid": "HomeDirObjectAccess",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObjectVersion",
                "s3:DeleteObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::${transfer:HomeDirectory}*"
        }
    ]
}

${transfer:HomeBucket}${transfer:HomeDirectory}というポリシー変数は、このポリシーが評価される際にユーザーごとに適切な値がセットされます。これにより、同じポリシーを各ユーザーに合わせて適用することが可能になります。

Things to Know

AWS Transfer for SFTPを利用する上で、便利な機能などについてご紹介いたします。

プログラムからのアクセス 

Transfer for SFTPには、APIやCLIコマンドからアクセスすることも可能です。例えば、以下のシンプルなコマンドでサーバーを立ち上げることができます。

$ aws transfer create-server --identity-provider-type SERVICE_MANAGED 
-------------------------------------
|           CreateServer            |
+-----------+-----------------------+
|  ServerId |  s-b445dcff7f164c73a  |
+-----------+-----------------------+

他にも、list-serversstart-serverstop-servercreate-userlist-usersといった様々なコマンドが提供されています。

CloudWatch

各サーバーはオプションを有効にすることで、詳細なアクセスログをAmazon CloudWatchに送ることが可能です。この時、SFTPセッションごとや、認証エラーごとに別々のログストリームが生成されます。

その他のIDプロバイダ

上の例ではサービスで管理されるユーザー・パスワード認証についてご紹介しましたが、この他にもLDAPやActive Directoryといった別のIDプロバイダを利用することも可能です。

価格

このサービスでは、サーバーごとの1時間単位の稼働時間とGB単位のデータアップロード・ダウンロード量について課金されます。

今すぐご利用可能です

AWS Transfer for SFTPは以下のリージョンで利用可能です: US East(N.Virginia)、US East(Ohio)、US West(Oregon)、US West(N. California)、Canada(Central)、Europe(Ireland)、Europe(Paris)、Europe(Frankfurt)、Europe(London)、Asia Pacific(Tokyo)、Asia Pasific(Singapore)、Asia Pacific(Sydney)、Asia Pacific(Seoul)。

Jeff;

翻訳はSA宮本大輔が対応しました。原文はこちら