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

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

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

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

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

  • OpenSSH (macOS と Linux)

    注記

    このクライアントは、Secure Shell (SSH) ファイル転送プロトコル () が有効になっているサーバーでのみ動作しますSFTP。

  • WinSCP (Microsoft Windows のみ)

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

  • FileZilla (Windows、macOSおよび Linux)

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

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

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

  • SSL (FTPS) 経由のファイル転送プロトコルでは、明示的モードのみがサポートされています。暗黙モードはサポートされません。

  • ファイル転送プロトコル (FTP) と ではFTPS、パッシブモードのみがサポートされています。

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

  • FTP および ではFTPS、Image/Binary モードのみがサポートされています。

  • FTP および の場合FTPS、データ接続TLSの PROT TLSC (保護されていない) がデフォルトですが、プロトコルでは AWS Transfer Family FTPS C PROT はサポートされていません。そのため、 ではFTPS、データオペレーションを受け入れるために PROT P を発行する必要があります。

  • サーバーのストレージに Amazon S3 を使用していて、1 回の転送に複数の接続を使用するオプションがクライアントに含まれている場合は、必ずそのオプションを無効にしてください。そうしないと、大容量ファイルのアップロードが失敗して予測外の状況になる可能性があります。ストレージバックエンドEFSとして Amazon を使用している場合、 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リクエストされたパスに symlink コンポーネントが含まれている場合、_FXP_REALPATH

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

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

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

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

注記

この表には、バケットとオブジェクトのみをサポートする 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 名前のリストでは、サーバーエンドポイントが最初にリストされます。

    選択したエンドポイントDNSの名前を示す Amazon VPCコンソールエンドポイントページ。

setstatエラーを回避する

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

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

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

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

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

Open を使用するSSH

Open を使用してコマンドラインからファイルを転送するには、以下の手順に従いますSSH。

注記

このクライアントは、 SFTPが有効なサーバーでのみ動作します。

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

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

    sftp -i transfer-key sftp_user@service_endpoint

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

    注記

    このコマンドは、デフォルトssh_configファイルにある設定を使用します。このファイルを以前に編集した場合を除き、 はポート 22 SFTPを使用します。次のように、 コマンドに-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サービスによって解決されるまでに数分かかることがあります。

Win を使用するSCP

Win を使用してコマンドラインからファイルを転送するには、以下の手順に従いますSCP。

注記

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

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

  2. ログインダイアログボックスの ファイルプロトコル で、プロトコル SFTPまたは を選択しますFTP

    暗号化 FTPで を選択した場合は、次のいずれかを選択します。

    • 暗号化なし FTP

    • TLS/SSL の明示的暗号化 FTPS

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

    注記

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

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

    • SFTP に関する 22

    • 21 FTP/ 用FTPS

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

    注記

    ユーザー名は、ID プロバイダー用に作成または設定したユーザーの 1 つである必要があります。 は、次の ID プロバイダー AWS Transfer Family を提供します。

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

  7. プライベートキーファイル については、ファイルシステムから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、ターゲットウィンドウとソースウィンドウ間でファイルをコピーできます。ツールバーアイコンを使用して、Win 内のファイルのプロパティをアップロード、ダウンロード、削除、編集、または変更できますSCP。

注記

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

タイムスタンプを含むリモートファイルの属性を変更しようとするコマンドは Amazon S3 などのオブジェクトストレージシステムと互換性がありません。したがって、Amazon S3 をストレージに使用する場合、ファイル転送を実行する前に、WinSCP タイムスタンプ設定を無効にする (または で説明SetStatOptionされているように を使用するsetstatエラーを回避する) 必要があります。これを行うには、WinSCP Transfer 設定ダイアログボックスで、アクセス許可のアップロード設定オプションとタイムスタンプの共通保存オプションを無効にします。

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

    • 21 FTP/ 用FTPS

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

  7. SFTP を選択した場合は、SSHプライベートキー でプライベートSSHキー を選択するか入力します。

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

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

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

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

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

を使用する FileZilla

を使用してファイルを転送するには、以下の手順に従います FileZilla。

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

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

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

  4. プロトコル全般タブで、プロトコル SFTPまたは を選択しますFTP

    暗号化 FTPで を選択した場合は、次のいずれかを選択します。

    • プレーン 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

    • 21 FTP/ 用FTPS

  7. SFTP を選択した場合、ログオンタイプ キーファイル を選択します。

    キーファイル で、SSHプライベートキー を選択するか入力します。

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

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

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

    注記

    進行中のファイル転送を中断する場合は、Amazon S3 バケットに部分的なオブジェクトを書き込む AWS Transfer Family ことができます。アップロードを中断する場合、続行する前に 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

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