クライアントを使用してサーバーエンドポイント経由でファイルを転送する - AWS Transfer Family

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

クライアントを使用してサーバーエンドポイント経由でファイルを転送する

クライアント内で転送オペレーションを指定して AWS Transfer Family サービス経由でファイルを転送します。AWS Transfer Family は次のクライアントをサポートします。

  • SFTP プロトコルのバージョン 3 をサポートしています。

  • OpenSSH (macOS および Linux)

    注記

    このクライアントは、Secure Shell (SSH) File Transfer Protocol (SFTP) が有効なサーバーとの組み合わせでのみ機能します。

  • WinSCP (Microsoft Windows のみ)

  • Cyberduck (Windows、macOS、および Linux)

  • FileZilla (Windows、macOS、Linux)

どのクライアントにも以下の制限が適用されます。

  • 1 接続あたりの、同時、多重化された SFTP セッションの最大数は 10 です。

  • Amazon S3 と Amazon EFS (NFSv4 プロトコルのため) では、ファイル名は UTF-8 エンコーディングである必要があります。異なるエンコーディングを使用すると、予期しない結果になることがあります。Amazon S3 については、「オブジェクトキーの命名ガイドライン」を参照してください。

  • File Transfer Protocol over SSL (FTPS) については、明示モードのみがサポートされます。暗黙モードはサポートされません。

  • FTP および FTPS では、パッシブモードのみがサポートされます。

  • FTP および FTPS では、STREAM モードのみがサポートされます。

  • FTP および FTPS では、イメージ/バイナリモードのみがサポートされます。

  • FTP および FTPS の場合、データ接続の TLS-PROT C (非保護) TLS がデフォルトですが、PROT C は AWS Transfer Family プロトコルでサポートされません。つまり、FTPS の場合は、PROT P を発行してデータ操作を受け付ける必要があります。

  • サーバーのストレージに Amazon S3 を使用していて、1 回の転送に複数の接続を使用するオプションがクライアントに含まれている場合は、必ずそのオプションを無効にしてください。そうしないと、大容量ファイルのアップロードが失敗して予測外の状況になる可能性があります。Amazon EFS をストレージバックエンドとして使用している場合、EFS は 1 回の転送で複数の接続をサポート「する」ことに注意してください。

以下に示すのは、FTP および FTPS で使用できるコマンドの一覧です。

使用できるコマンド

ABOR

FEAT

MLST

PASS

RETR

STOR

AUTH

LANG

MKD

PASV

RMD

STOU

CDUP

LIST

MODE

PBSZ

RNFR

STRU

CWD

MDTM

NLST

PROT

RNTO

SYST

DELE

MFMT

NOOP

PWD

SIZE

TYPE

EPSV

MLSD

OPTS

QUIT

STAT

USER

注記

APPE はサポートされません。

SFTP については、Amazon Elastic File System (Amazon EFS) を使用しているサーバーで論理ホームディレクトリを使用するユーザーの場合、現時点で以下のオペレーションはサポートされていません。

サポートされない SFTP コマンド

SSH_FXP_READLINK

SSH_FXP_SYMLINK

リクエストされたファイルがシンボリックリンクの場合、SSH_FXP_STAT

リクエストされたパスにシンボリックリンクコンポーネントが含まれている場合、SSH_FXP_REALPATH

パブリックキーとプライベートキーのペアを生成する

ファイルを転送する前に、パブリックキーとプライベートキーのキーペアを用意する必要があります。以前にキーペアを生成していない場合、「サービス管理ユーザーの SSH キーの生成」を参照してください。

使用可能な SFTP/FTPS/FTP コマンド

次の表は、AWS Transfer Family、SFTP、FTPS、および FTP プロトコルで使用可能なコマンドを示します。

注記

この表には、バケットとオブジェクトのみをサポートする Amazon S3 の「ファイル」と「ディレクトリ」が記載されています。階層はありません。ただし、オブジェクトキー名にプレフィックスを使って階層を示したり、フォルダのようにデータを整理したりすることはできます。この動作については、「Amazon Simple Storage Service ユーザーガイド」の「オブジェクトメタデータの処理」で説明されています。

SFTP/FTPS/FTP コマンド
Command Amazon S3 Amazon EFS
cd サポート サポート
chgrp 非サポート 対応(root または owner のみ)
chmod 非サポート サポート (rootのみ)
chmtime サポート外 サポート
chown 非サポート サポート (rootのみ)
get サポート サポート (シンボリックリンクの解決を含む)
ln -s サポート外 サポート対象
ls/dir サポート対象 サポート対象
mkdir サポート対象 サポート対象
put サポート対象 サポート対象
pwd サポート対象 サポート
rename

ファイルでのみサポートされます

サポート
注記

既存のファイルやディレクトリを上書きするような名前変更はサポートされていません。

rm サポート サポート
rmdir サポート (空のディレクトリのみ) サポート
version サポート対象 サポート

Amazon VPC エンドポイントを検索する

Transfer FamilyサーバーのエンドポイントタイプがVPC の場合、ファイルの転送に使用するエンドポイントを特定するのは簡単ではありません。この場合、次の手順を使用して、Amazon VPC エンドポイントを検索します。

Amazon VPC エンドポイントを検索する
  1. サーバーの詳細ページに移動します。

  2. エンドポイントの詳細」ペインで、「VPC」を選択します。

    
                        Transfer Family コンソールサーバーの詳細ページには、VPC サーバーのエンドポイントの詳細が表示されます。
  3. Amazon VPC ダッシュボードで「VPC エンドポイント ID」を選択します。

  4. DNS 名」のリストでは、サーバーエンドポイントが最初に表示されます。

    
                        Amazon VPC コンソールの [エンドポイント] ページには、選択したエンドポイントの「DNS 名」が表示されます。

setstatエラーを回避する

SFTP ファイル転送クライアントの中には、ファイルをアップロードする 際に SETSTAT などのコマンドを使用して、タイムスタンプやパーミッションな ど、リモートファイルの属性を変更しようとするものがあります。ただし、これらのコマンドは Amazon S3 などのオブジェクトストレージシステムと互換性がありません。この非互換性が原因で、これらのクライアントからファイルをアップロードする際に、ファイルが正常にアップロードされた場合でもエラーが発生する可能性があります。

  • CreateServer または UpdateServer API を呼び出すときに、ProtocolDetails オプション SetStatOption を使用して、クライアントが S3 バケットにアップロードするファイルに SETSTAT を使用しようとしたときに生成されるエラーを無視します。

  • Transfer Family サーバーが SETSTAT コマンドを無視するように値を ENABLE_NO_OP に設定し、SFTP クライアントに変更を加えることなくファイルをアップロードできます。

  • SetStatOption ENABLE_NO_OP 設定ではエラーは無視されますが、 CloudWatch Logs にログエントリが生成されるため、クライアントがいつ SETSTAT 呼び出しを行っているかを判断できます。

このオプションの API の詳細については、「」を参照してくださいProtocolDetails

OpenSSH を使用する

次の手順に従って、OpenSSH を使用してコマンドラインからファイルを転送します。

注記

このクライアントは SFTP 対応サーバーでのみ動作します。

OpenSSH コマンドラインユーティリティを使用して AWS Transfer Family 経由でファイルを転送するには
  1. Linux、macOS、Windows では、コマンドターミナルを開きます。

  2. プロンプトで、次のコマンドを入力します。

    sftp -i transfer-key sftp_user@service_endpoint

    前述のコマンドでは、sftp_user がユーザー名、transfer-key が SSH プライベートキーです。ここでは、選択したサーバーの service_endpoint コンソールに示されるとおり、AWS Transfer Family がサーバーのエンドポイントです。

    注記

    このコマンドは、デフォルトの ssh_config ファイルにある設定を使用します。以前にこのファイルを編集していない限り、SFTP はポート 22 を使用します。次のように コマンドに-Pフラグを追加することで、別のポート (2222 など) を指定できます。

    sftp -P 2222 -i transfer-key sftp_user@service_endpoint

    または、ポート 2222 を常に使用する場合は、 ssh_config ファイル内のデフォルトポートを更新できます。

    sftp プロンプトが表示されます。

  3. (オプション) ユーザーのホームディレクトリを表示するには、sftp プロンプトで次のコマントを入力します。

    pwd

  4. ご使用のファイルシステムから Transfer Family サーバーにファイルをアップロードするには、put コマンドを使用します。たとえば、hello.txt をアップロードするには (ファイルがファイルシステム上のカレントディレクトリにあると仮定して)、sftp プロンプトで次のコマンドを実行します。

    put hello.txt

    ファイル転送が進行中か完了したことを示す次のようなメッセージが表示されます。

    Uploading hello.txt to /my-bucket/home/sftp_user/hello.txt

    hello.txt 100% 127 0.1KB/s 00:00

注記

サーバーの作成後、お使いの環境の DNS サービスによってサーバーエンドポイントのホスト名が解決可能になるまでに数分かかることがあります。

WinSCP を使用する

次の手順に従って、WinSCP を使用してコマンドラインからファイルを転送します。

注記

WinSCP 5.19 を使用する場合、AWS 認証情報で Amazon S3 に直接接続してファイルのアップロード/ダウンロードが可能です。詳細については、「Amazon S3 サービスに接続する」を参照してください。

WinSCP を使用して AWS Transfer Family でファイルを転送するには
  1. WinSCP クライアントを開きます。

  2. [Login] (ログイン) ダイアログボックスで [File protocol] (ファイルプロトコル) として SFTP または FTP を選択します。

    [FTP] を選択した場合、[Encryption] (暗号化) で次のいずれかを選択します。

    • FTP の場合、暗号化なし

    • FTPS の場合、TLS/SSL 明示的な暗号化

  3. [Host name] (ホスト名) にサーバーエンドポイントを入力します。サーバーエンドポイントは、[Server details] (サーバーの詳細) ページにあります 。詳細については、「SFTP、FTPS、FTP サーバーの詳細を表示する」を参照してください。

    注記

    サーバーが VPC エンドポイントを使用している場合は、Amazon VPC エンドポイントを検索するを参照してください。

  4. [Port number] (ポート番号) に次の値を入力します。

    • SFTP の場合、22

    • FTP/FTPS の場合、21

  5. ユーザー名」には、特定の ID プロバイダー用に作成したユーザーの名前を入力します。

    注記

    ユーザー名は、ID プロバイダー用に作成または設定したユーザーの 1 人でなければなりません。AWS Transfer Familyは、次のアイデンティティプロバイダーを提供します。

  6. [Advanced] (アドバンスト) を選択して、[Advanced Site Settings] (サイトのアドバンスト設定) ダイアログボックスを開きます。[SSH] セクションで [Authentication] (認証) を選択します。

  7. [Private key file] (プライベートキーファイル) でファイルシステムから SSH プライベートキーを参照して選択します。

    注記

    WinSCP から SSH プライベートキーを PPK 形式に変換するオプションが表示されたら [OK] を選択します。

  8. [OK] を選択して [Login] (ログイン) ダイアログボックスに戻り、[Save] (保存) を選択します。

  9. [Save session as site] (セッションをサイトとして保存) ダイアログボックスで [OK] を選択して接続セットアップを完了します。

  10. [Login] (ログイン) ダイアログボックスで [Tools] (ツール) を選択してから[Preferences] (設定) を選択します。

  11. [Preferences] (設定) ダイアログボックスの [Transfer] (転送) で [Endurance] (耐久性) を選択します。

    [Enable transfer resume/transfer to temporary filename for] オプションについて [Disable] (無効にする) を選択します。

    注記

    このオプションを有効にしたままにすると、アップロードコストが増加し、アップロードのパフォーマンスが大幅に低下します。大容量ファイルのアップロードが失敗する可能性もあります。

  12. [Transfer] (転送) で [Background] (バックグラウンド) を選択し、[Use multiple connections for single transfer] (単一の転送に複数の接続を使用する) チェックボックスをオフにします。

    注記

    このオプションを選択したままにすると、大容量ファイルのアップロードが失敗して予測外の状況になる可能性があります。たとえば、孤立マルチパートアップロードが生成されて Amazon S3 の料金が発生する可能性があります。サイレントデータ破損が発生することもあります。

  13. ファイル転送を実行します。

    drag-and-drop メソッドを使用して、ターゲットウィンドウとソースウィンドウ間でファイルをコピーできます。ツールバーアイコンを使用して、WinSCP にあるファイルのプロパティをアップロード/ダウンロード、削除、編集、または変更できます。

注記

Amazon EFS をストレージに使用している場合、この注意事項は適用されません。

タイムスタンプを含むリモートファイルの属性を変更しようとするコマンドは Amazon S3 などのオブジェクトストレージシステムと互換性がありません。そのため、Amazon S3 をストレージとして使用している場合は、ファイル転送を実行する前に、WinSCP タイムスタンプ設定を必ず無効にしてください (または、setstatエラーを回避するでで説明したようにSetStatOptionを使う)。そのためには、WinSCP Transfer settings (WinSCP 転送設定) ダイアログボックスで [Set permissions] (パーミッションの設定) オプションと [Preserve timestamp] (タイムスタンプを保持) オプションを無効にします。

Cyberduck を使用する

次の手順に従って、Cyberduck を使用してコマンドラインからファイルを転送します。

Cyberduck を使用して AWS Transfer Family でファイルを転送するには
  1. Cyberduck クライアントを開きます。

  2. [Open connection] (接続を開く) を選択します。

  3. [Open Connection] (接続を開く) ダイアログボックスでプロトコルとして SFTP (SSH File Transfer Protocol)FTP-SSL (Explicit AUTH TLS)、または FTP (File Transfer Protocol) を選択します。

  4. [Servers] (サーバー) にサーバーのエンドポイントを入力します。サーバーエンドポイントは、[Server details] (サーバーの詳細) ページにあります 。詳細については、「SFTP、FTPS、FTP サーバーの詳細を表示する」を参照してください。

    注記

    サーバーが VPC エンドポイントを使用している場合は、Amazon VPC エンドポイントを検索するを参照してください。

  5. [Port number] (ポート番号) に次の値を入力します。

    • SFTP の場合、22

    • FTP/FTPS の場合、21

  6. [Username] (ユーザー名) に サーバーエンドポイントのユーザーの管理 で作成したユーザーの名前を入力します。

  7. SFTP を選択した場合、[SSH Private Key] (SSH プライベートキー) で SSH プライベートキー] を選択するか入力します。

  8. [Connect] (接続) を選択します。

  9. ファイル転送を実行します。

    ファイルの場所に応じて、次のいずれかの操作をします。

    • ローカルディレクトリ (転送元) で転送したいファイルを選択して Amazon S3 ディレクトリ (転送先) にドラッグアンドドロップします。

    • Amazon S3 ディレクトリ (転送元) で転送したいファイルを選択してローカルディレクトリ (転送先) にドラッグアンドドロップします。

の使用 FileZilla

次の手順に従って、 を使用してファイルを転送します FileZilla。

ファイル転送 FileZilla を設定するには
  1. FileZilla クライアントを開きます。

  2. [File] (ファイル) を選択してから [Site Manager] を選択します。

  3. [Site Manager] ダイアログボックスで [New site] (新しいサイト) を選択します。

  4. [General] (全般) タブの [Protocol] (プロトコル) で SFTP または FTP のプロトコルを選択します。

    [FTP] を選択した場合、[Encryption] (暗号化) で次のいずれかを選択します。

    • 平文 FTP のみを使用する (安全でない) — FTP の場合

    • TLS 経由の明示的な FTP を (可能であれば) 使用する — FTPS の場合

  5. [Host name] (ホスト名) には、使用するプロトコルを入力し、その後にサーバーエンドポイントを続けます。サーバーエンドポイントは、[Server details] (サーバーの詳細) ページにあります 。詳細については、「SFTP、FTPS、FTP サーバーの詳細を表示する」を参照してください。

    注記

    サーバーが VPC エンドポイントを使用している場合は、Amazon VPC エンドポイントを検索するを参照してください。

    • SFTP を使用する場合、sftp://hostname を入力します。

    • FTPS を使用する場合、ftps://hostname を入力します。

    hostname を実際のサーバーエンドポイントに確実に置き換えてください。

  6. [Port number] (ポート番号) に次の値を入力します。

    • SFTP の場合、22

    • FTP/FTPS の場合、21

  7. [SFTP] を選択した場合、[Logon type] (ログオンの種類) で [Key file] (キーファイル) を選択します。

    [Key file] (キーファイル) で SSH プライベートキーを選択するか入力します。

  8. [Username] (ユーザー名) に、サーバーエンドポイントのユーザーの管理 で作成したユーザーの名前を入力します。

  9. [Connect] (接続) を選択します。

  10. ファイル転送を実行します。

    注記

    進行中のファイル転送を中断した場合、AWS Transfer Family が Amazon S3 バケットにオブジェクトの一部を書き込む場合があります。アップロードを中断する場合、続行する前に Amazon S3 バケットのファイルサイズがソースオブジェクトのファイルサイズと一致することを確認してください。

Perl クライアントを使用する

perl クライアントを使用する場合は NET::SFTP::Foreign、 queue_sizeを に設定する必要があります1。例:

my $sftp = Net::SFTP::Foreign->new('user@s-12345.server.transfer.us-east-2.amazonaws.com', queue_size => 1);

注記

この回避策は、1.92.02 以前の Net::SFTP::Foreign のリビジョンに必要です。

アップロード後の処理

Amazon S3 オブジェクトのメタデータやイベント通知など、アップロード後の処理情報を表示できます。

Amazon S3 オブジェクトメタデータ

オブジェクトのメタデータの一部として、値が AWSTransfer である x-amz-meta-user-agent と値が username@server-id である x-amz-meta-user-agent-id というキーが見えます。username はファイルをアップロードしたTransfer Family ユーザー、server-id はアップロードに使用したサーバーです。この情報は、Lambda 関数内の S3 オブジェクトに対する HeadObjectオペレーションを使用してアクセスできます。

Amazon S3 イベント通知

Transfer Family を使用してオブジェクトを S3 バケットにアップロードすると、S3 イベント通知構造RoleSessionName が [Requester] (リクエスタ) フィールドに [AWS:Role Unique Identifier]/username.sessionid@server-id として含まれます。たとえば、次に示すのは S3 バケットにコピーされたファイルの S3 アクセスログから得たサンプル [Requester] (リクエスタ) フィールドのコンテンツです。

arn:aws:sts::AWS-Account-ID:assumed-role/IamRoleName/username.sessionid@server-id

上記の [Requester] (リクエスタ) フィールドには、IamRoleName と呼ばれる IAM ロールが表示されます。S3 イベント通知を設定する方法の詳細については、Amazon Simple Storage Service デベロッパーガイドの「Amazon S3 イベント通知の設定」を参照してください。AWS Identity and Access Management (IAM) ロールの一意の識別子の詳細については、AWS Identity and Access Management ユーザーガイドの「一意の識別子」を参照してください。