使用客户端传输文件 - Amazon Transfer Family
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用客户端传输文件

您可以通过Amazon Transfer Family服务,方法是指定客户端中的传输操作。Amazon Transfer Family支持以下客户端:

  • OpenSSH(macOS 和 Linux)

    注意

    此客户端仅适用于启用安全外壳 (SSH) 文件传输协议 (SFTP) 的服务器。

  • WinSCP(仅 Microsoft Windows)

  • Cyberduck(Windows、macOS 和 Linux)

  • FileZilla(Windows、macOS 和 Linux)

以下限制适用于每个客户端:

  • 对于 SSL 文件传输协议 (FTPS),只支持显式模式。不支持隐式模式。

  • 对于 File Transfer Protocol (文件传输协议) 和 FTPS),仅支持被动模式。

  • 对于 FTP 和 FTPS,只支持流模式。

  • 对于 FTP 和 FTPS,仅支持图像/二进制模式。

  • 对于 FTP 和 FTPS,数据连接的 TLS-PROT C(未受保护)TLS 是默认的,但在Amazon Transfer FamilyFTPS 协议。因此,对于 FTPS,您需要发出 PROT P 才能接受您的数据操作。

以下是 FTP 和 FTPS 的可用命令列表:

可用命令

放弃

壮举

MLST

PASS

雷特

斯托

AUTH

LANG

MKD

PASV

RMD

斯托

CDUP

LIST

MODE

PBSZ

RNFR

STRU

CWD

MDTM

NLST

PROT

RNTO

系统

德勒

MFMT

诺普

PWD

SIZE

TYPE

EPSV

MLSD

选择

QUIT

STAT

USER

注意

不支持 APPE。

对于 SFTP,当前不支持在使用 Amazon 弹性文件系统 (Amazon EFS) 的服务器上使用逻辑主目录的用户执行以下操作。

不支持的 SFTP 命令

读取链接

符号链接

当请求的文件是符号链接时,SSH_FXP_STAT

当请求的路径包含任何符号链接组件时,SSH_FXP_REALPATH

生成公有-私有 key pair

在传输文件之前,您必须具有可用的公私 key pair。如果您之前未生成 key pair,请参阅生成 SSH 密钥

在下文中,您可以找到有关如何使用各个客户端传输文件的信息。

使用 OpenSSH

按照下文中的说明,使用 OpenSSH 从命令行传输文件。

注意

此客户端仅适用于启用了 SFTP 的服务器。

要通过 Amazon Transfer Family 传输文件,请使用 OpenSSH 命令行实用工具

  1. 在 Linux 或 macOS 上,打开命令终端。

  2. 在提示符中,输入以下命令:

    sftp -i transfer-key sftp_user@service_endpoint

    在前面的命令中,sftp_user 是用户名,transfer-key 是 SSH 私有密钥。在这里,service_endpoint是服务器的终端节点,如Amazon Transfer Family控制台中的选定服务器。

    此时应显示 sftp 提示符。

  3. (可选)要查看用户的主目录,请在sftp提示:

    pwd

  4. 要将文件从文件系统上传到 TTransfer 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,则可 Amazon S3 使用Amazon凭据和上传/下载文件。有关更多详细信息,请参阅连接到 Amazon S3 服务

使用 WinSCP 通过 Amazon Transfer Family 传输文件

  1. 打开 WinSCP 客户端。

  2. 登录对话框中,用于文件协议中,选择协议:SFTP或者FTP

    如果您选择 FTP,加密中,选择以下选项之一:

    • 无加密用于 FTP

    • TLS/SSL 显式加密为 FTPS

  3. 对于 Host name (主机名),输入您的服务器终端节点。服务器终端节点位于服务器细节页面上,请参阅查看服务器详细信

  4. 适用于端口号中,输入以下内容:

    • 22用于 SFTP

    • 21用于FTP/FTPS

  5. 适用于用户名中,输入您在管理用户

  6. 选择Advanced以打开高级站点设置对话框中。在SSH部分,选择身份验证

  7. 适用于私有密钥文件中,浏览以从您的文件系统中选择 SSH 私有密钥文件。

    注意

    如果 WinSCP 建议将您的 SSH 私有密钥转换为 PPK 格式,请选择确定

  8. 选择 OK (确定) 以返回到 Login (登录) 对话框,然后选择 Save (保存)

  9. 将会话另存为站点对话框中,选择确定以完成连接设置。

  10. 登录对话框中,选择工具,然后选择。Preferences

  11. Preferences对话框中,用于转接中,选择耐力

    对于启用转移简单/转移到临时文件名选项,选择禁用

    注意

    如果启用此选项,则会增加上载成本,从而大大降低上传性能。它还可能导致大型文件上传失败。

  12. 适用于转接中,选择背景,然后清除使用多个连接进行单次传输”复选框。

    注意

    如果选中此选项,则大型文件上传可能会以不可预知的方式失败。例如,可以创建产生 Amazon S3 费用的孤立分段上传。也可能会发生静默数据损坏。

  13. 执行文件传输。

    您可以使用拖放方法在目标和源窗口之间复制文件。在 WinSCP 中,您可以使用工具栏图标来上传、下载、删除、编辑或修改文件的属性。

注意

由于 Amazon S3 管理对象时间戳,请确保在执行文件传输之前禁用 WinSCP 时间戳设置。为此,请在WinSCP 传输设置对话框中,禁用设置权限上载选项和保留时间戳常见选项。

使用 Cyberduck

按照下文中的说明,使用 Cyberduck 从命令行传输文件。

使用 Cyberduck 通过 Amazon Transfer Family 传输文件

  1. 打开Cyberduck客户端。

  2. 选择打开连接

  3. 打开连接对话框中,选择协议:SFTP(SSH File Transfer Protocol)FTP-SSL(显式身份验证 TLS),或者FTP(文件传输协议)

  4. 适用于服务器中,输入您的服务器终端节点。服务器终端节点位于服务器细节页. 有关更多信息,请参阅 查看服务器详细信

  5. 适用于端口号中,输入以下内容:

    • 22用于 SFTP

    • 21用于FTP/FTPS

  6. 对于 Username (用户名),输入您在管理用户中创建的用户的名称。

  7. 如果选择了 SFTP,SSH 私有密钥中,选择或输入 SSH 私有密钥。

  8. 选择 Connect (连接)

  9. 执行文件传输。

    根据您的文件所在的位置,执行以下操作之一:

    • 在您的本地目录(源)中,选择您要传输的文件,然后将这些文件拖放到 Amazon S3 目录(目标)中。

    • 在 Amazon S3 目录(源)中,选择您要传输的文件,然后将这些文件拖放到您的本地目录(目标)中。

使用 FileZilla

按照下文中的说明,使用 FileZilla 传输文件。

设置 FileZilla 进行文件传输

  1. 打开 FileZilla 客户端。

  2. 选择File (文件),然后选择。site 管理器

  3. site 管理器对话框中,选择新建站点

  4. 在存储库的常规选项卡,用于协议中,选择协议:SFTP或者FTP

    如果您选择 FTP,加密中,选择以下选项之一:

    • 仅使用普通 FTP(不安全)— 用于 FTP

    • 使用 TLS 上的显式 FTP(如果可用)— 适用于公共服务计划

  5. 适用于Host name中,输入您正在使用的协议,然后输入服务器终端节点。服务器终端节点位于服务器细节页. 有关更多信息,请参阅 查看服务器详细信

    • 如果您使用的是 SFTP,请输入:sftp://hostname

    • 如果您使用的是 FTPS,请输入:ftps://hostname

    请确保替换hostname与您的实际服务器终端节点。

  6. 适用于端口号中,输入以下内容:

    • 22用于 SFTP

    • 21用于FTP/FTPS

  7. 如果选择了 SFTP,登录类型中,选择密钥文件

    适用于密钥文件中,选择或输入 SSH 私有密钥。

  8. 适用于用户中,输入您在管理用户

  9. 选择 Connect (连接)

  10. 执行文件传输。

    注意

    如果您中断正在进行的文件传输,Amazon Transfer Family可能会将部分对象写入您的 Amazon S3 存储桶。如果您中断上传,在继续之前,请检查 Amazon S3 存储桶中文件大小是否与源对象的文件大小相符。

使用 Perl 客户端

如果您使用 NET። SFTP። 外部 perl 客户端,则必须设置queue_size1。例如:

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

注意

此解决方法是修订Net::SFTP::Foreign1.92.02

上传后处理

您可以查看上传后处理信息,包括 Amazon S3 数据元数据和事件通知。

Amazon S3 对象元数据

作为对象元数据的一部分,您将看到一个名为x-amz-meta-user-agent其值为AWSTransferx-amz-meta-user-agent-id其值为username@server-id。这些区域有:username是上传文件的 “传输系列” 用户,server-id是用于上载的服务器。此信息可以使用HeadObject操作在 Lambda 函数内的 S3 对象上。

Amazon S3 事件通知

使用传 Transfer Family 列将对象上传到 S3 存储桶时,RoleSessionName包含在 “请求者” 字段中S3 事件通知结构作为[AWS:Role Unique Identifier]/username.sessionid@server-id。例如,以下是复制到 S3 存储桶的文件的 S3 访问日志中示例请求者字段的内容。

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

在上面的 “请求者” 字段中,它显示了名为IamRoleName。有关配置 S3 事件通知的更多信息,请参阅配置 Amazon S3 事件通知中的Amazon Simple Storage Service 开发人员指南。有关 的更多信息Amazon Identity and Access Management(IAM) 角色唯一标识符,请参阅唯一标识符中的Amazon Identity and Access Management用户指南