クライアントを使用してファイルを転送する - 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)

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

  • Amazon S3 と Amazon EFS (NFS V4 プロトコルによる) では、ファイル名は 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 キーを生成する」を参照してください。

Amazon VPC エンドポイントの検索

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

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

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

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

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

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

setstatエラーを回避

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

  • CreateServerまたはUpdateServer API を呼び出すときに、SetSTATProtocolDetailsSetStatOption をクライアントが使用を試みたときに生成されるエラーを無視するオプションを使用します。

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

  • SetStatOptionENABLE_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 がサーバーのエンドポイントです。

    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] (サーバーの詳細) ページにあります 。詳細については、「サーバーの詳細を表示する」を参照してください。

    注記

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

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

    • SFTP の場合、22

    • FTP/FTPS の場合、21

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

    注記

    ユーザー名は、ID プロバイダー用に作成または設定したユーザーのいずれかである必要があります。 AWS Transfer Familyには、以下の ID プロバイダーがあります。

  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 タイムスタンプ設定を必ず無効にしてください (または、SetStatOptionで説明されている設定を使用してくださいsetstatエラーを回避)。そのためには、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] (サーバーの詳細) ページにあります 。詳細については、「サーバーの詳細を表示する」を参照してください。

    注記

    サーバーが 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] (サーバーの詳細) ページにあります 。詳細については、「サーバーの詳細を表示する」を参照してください。

    注記

    サーバーが 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 クライアントを使用する

NET። SFTP። 外部の perl クライアントを使用する場合は、を 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 オブジェクトメタデータ

オブジェクトのメタデータの一部として、x-amz-meta-user-agentAWSTransfer値がで値がというキーが表示されますusername@server-idx-amz-meta-user-agent-idusername はファイルをアップロードした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 ユーザーガイドの「一意の識別子」を参照してください。