本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用客户端通过服务器端点传输文件
通过在客户端中指定传输操作,可以通过Amazon Transfer Family服务传输文件。Amazon 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,请参阅对象密钥命名指南。
-
对于 安全文件传输协议 (FTPS),仅支持显式模式。不支持隐式模式。
-
对于文件传输协议 (FTP) 和 FTPS,仅支持被动模式。
-
对于 FTP 和 FTPS,仅支持流模式。
-
对于 FTP 和 FTPS,仅支持图像/二进制模式。
-
对于 FTP 和 FTPS,数据连接的 TLS - PROT C(未受保护)TLS 是默认值,但是Amazon Transfer Family FTPS 协议不支持 PROT C。因此,对于 FTPS,您需要发出 PROT P,您的数据操作才能被接受。
-
如果您使用 Amazon S3 作为服务器存储,并且您的客户端包含使用多个连接进行单次传输的选项,请务必禁用该选项。否则,上传大文件可能会突然失败。请注意,如果您使用 Amazon EFS 作为存储后端,EFS 确实支持多个连接进行单次传输。
以下是 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 命令
下表描述了Amazon Transfer Family、SFTP 、FTPS 和 FTP 协议的可用命令。
注意
该表提到了仅支持存储桶和对象的 Amazon S3 的文件和目录:无层次结构。但是,您可以在对象键名称中使用前缀来暗示层次结构,并以类似于文件夹的方式组织数据。Amazon Simple Storage Service 用户指南中的使用对象元数据中描述了该行为。
SFTP/FTPS/FTP 命令 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
命令 | 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 端点
-
导航到您的服务器详细信息页面。
-
在端点详细信息窗格中,选择 VPC。
在 Amazon VPC 控制面板中,选择 VPC 端点 ID。
-
在 DNS 名称列表中,您的服务器端点是第一个列出的端点。
避免setstat
错误
一些 SFTP 文件传输客户端可以在上传文件时尝试使用命令(例如 SETSTAT)更改远程文件的属性,包括时间戳和权限。但是,这些命令与 Amazon S3 等对象存储系统不兼容。由于这种不兼容性,即使文件以其他方式成功上传,从这些客户端上传文件也可能导致错误。
-
当您调用
CreateServer
或UpdateServer
API 时,使用该ProtocolDetails
选项SetStatOption
可以忽略当客户端尝试对要上传到 S3 存储桶的文件使用 SETSTAT 时生成的错误。 -
将该值设置为
ENABLE_NO_OP
以使 Transfer Family 服务器忽略 SETSTAT 命令,并上传文件而无需对您的 SFTP 客户端进行任何更改。 -
请注意,虽然该
SetStatOption
ENABLE_NO_OP
设置忽略了错误,但它确实会在日志中 CloudWatch 生成一个日志条目,因此您可以确定客户端何时进行 SETSTAT 调用。
有关此选项的 API 详细信息,请参阅ProtocolDetails。
使用 OpenSSH
按照下文中的说明,使用 OpenSSH 从命令行传输文件。
注意
此客户端仅适用于启用 SFTP 的服务器。
要通过 Amazon Transfer Family 传输文件,请使用 OpenSSH 命令行实用工具
-
在 Linux、macOS 或 Windows 上,打开命令终端。
-
在提示符中,输入以下命令:
sftp -i
transfer-key
sftp_user
@service_endpoint
在前面的命令中,
是用户名,sftp_user
是 SSH 私有密钥。此处的transfer-key
是服务器的端点,如 Amazon Transfer Family 控制台中为选定的服务器所示。service_endpoint
注意
此命令使用默认
ssh_config
文件中的设置。除非您之前编辑过此文件,否则 SFTP 使用端口 22。您可以通过在命令中添加-P
标志来指定其他端口(例如 2222),如下所示。sftp -P 2222 -i
transfer-key
sftp_user
@service_endpoint
或者,如果您一直想使用端口 2222,则可以更新
ssh_config
文件中的默认端口。此时应显示
sftp
提示符。 -
(可选)要查看用户的主目录,请在
sftp
提示符下输入以下命令:pwd
-
要将文件从您的文件系统上传到 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,则可以使用您的Amazon证书直接连接到 Amazon S3 并上传/下载文件。有关更多详细信息,请参阅连接到 Amazon S3 服务
使用 WinSCP 通过 Amazon Transfer Family 传输文件
-
打开 WinSCP 客户端。
-
在登录对话框中,为文件协议选择一个协议:SFTP 或 FTP。
如果您选择了 加密,请选择下列选项之一:
-
FTP 没有加密
-
适用于 FTPS 的 TLS/SSL 显式加密
-
-
对于 Host name (主机名),输入您的服务器终端节点。服务器端点位于服务器详细信息页面。有关更多信息,请参阅 查看 SFTP、FTPS 和 FTP 服务器的详细信息。
注意
如果您的服务器使用 VPC 端点,请参阅查找您的 Amazon VPC 端点。
-
在端口号中,输入以下内容:
-
22
适用于 SFTP -
21
适用于 FTP/FTPS
-
-
在用户名中,输入您为特定身份提供商创建的用户名称。
注意
用户名应是您为身份提供商创建或配置的用户之一。Amazon Transfer Family提供以下身份提供商:
-
选择高级打开高级站点设置对话框。在 SSH 部分中,选择身份验证。
-
对于私有密钥文件,从文件系统中浏览并选择 SSH 私有密钥文件。
注意
如果 WinSCP 提供将 SSH 私有密钥转换为 PPK 格式,请选择确定。
-
选择 OK (确定) 以返回到 Login (登录) 对话框,然后选择 Save (保存)。
-
在将会话保存为站点对话框中,选择确定以完成您的连接设置。
-
在登录对话框中,选择工具,然后选择首选项。
-
在首选项对话框中的传输中,选择耐力。
对于启用传输恢复/传输到临时文件名选项,选择禁用。
注意
如果您启用此选项,则会增加上传成本,从而显著降低上传性能。它还可能导致大文件上传失败。
-
对于传输,选择背景,然后清除使用多个连接进行单次传输复选框。
注意
如果选择此选项,则上传大文件可能会以突然失败。例如,可以创建会产生 Amazon S3 费用的孤立分段上传。还可能发生静默数据损坏。
-
执行文件传输。
您可以使用 drag-and-drop 方法在目标窗口和源窗口之间复制文件。在 WinSCP 中,您可以使用工具栏图标来上传、下载、删除、编辑或修改文件的属性。
注意
如果您使用 Amazon EFS 进行存储,则本说明不适用。
尝试更改远程文件属性(包括时间戳)的命令与 Amazon S3 等对象存储系统不兼容。因此,如果您使用 Amazon S3 进行存储,请务必在执行文件传输之前禁用 WinSCP 时间戳设置(或按SetStatOption
中所述使用避免setstat错误)。为此,请在 WinSCP 传输设置对话框中,禁用设置权限上传选项和保留时间戳常用选项。
使用 Cyberduck
按照下文中的说明,使用 Cyberduck 从命令行传输文件。
使用 Cyberduck 通过 Amazon Transfer Family 传输文件
-
打开 Cyberduck
客户端。 -
选择打开连接。
-
在打开连接对话框中,选择协议:SFTP(SSH 文件传输协议)、FTP-SSL(显式身份验证 TLS)或 FTP(文件传输协议)。
-
对于服务器,输入您的服务器端点。服务器端点位于服务器详细信息页面。有关更多信息,请参阅 查看 SFTP、FTPS 和 FTP 服务器的详细信息。
注意
如果您的服务器使用 VPC 端点,请参阅查找您的 Amazon VPC 端点。
-
在端口号中,输入以下内容:
-
22
适用于 SFTP -
21
适用于 FTP/FTPS
-
-
对于 Username (用户名),输入您在管理服务器端点的用户中创建的用户的名称。
-
如果选择了 SFTP,则在 SSH 私有密钥中,选择或输入 SSH 私有密钥。
-
选择连接。
-
执行文件传输。
根据您的文件所在的位置,执行以下操作之一:
-
在您的本地目录(源)中,选择您要传输的文件,然后将这些文件拖放到 Amazon S3 目录(目标)中。
-
在 Amazon S3 目录(源)中,选择您要传输的文件,然后将这些文件拖放到您的本地目录(目标)中。
-
使用 FileZilla
按照以下说明使用传输文件 FileZilla。
要设置 FileZilla 文件传输
-
打开 FileZilla 客户端。
-
选择文件,然后选择站点管理器。
-
在站点管理器对话框中,选择新建站点。
-
在常规选项卡的协议中选择一个协议:SFTP 或 FTP。
如果您选择了 加密,请选择下列选项之一:
-
仅使用纯 FTP(不安全)— 用于 FTP
-
使用 TLS 上的显式 FTP(如果可用)— 用于 FTPS
-
-
在主机名中,输入您正在使用的协议,然后输入您的服务器端点。服务器端点位于服务器详细信息页面。有关更多信息,请参阅 查看 SFTP、FTPS 和 FTP 服务器的详细信息。
注意
如果您的服务器使用 VPC 端点,请参阅查找您的 Amazon VPC 端点。
-
如果您使用的是 SFTP,请输入:
sftp://
hostname
-
如果您使用的是 FTPS,请输入:
ftps://
hostname
请务必将
主机名
替换为实际的服务器端点。 -
-
在端口号中,输入以下内容:
-
22
适用于 SFTP -
21
适用于 FTP/FTPS
-
-
如果选择了 SFTP,则选择密钥文件作为登录类型。
对于密钥文件,选择或输入 SSH 私有密钥。
-
对于用户名,输入您在管理服务器端点的用户中创建的用户的名称。
-
选择连接。
-
执行文件传输。
注意
如果您中断正在进行的文件传输,Amazon Transfer Family 可能会将部分对象写入您的 Amazon S3 存储桶。如果您中断上传,在继续之前,请检查 Amazon S3 存储桶中文件大小是否与源对象的文件大小相符。
使用 Perl 客户端
如果您使用 NET::SFTP::Foreign 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.02Net::SFTP::Foreign
修订版本需要使用此解决方法。
上传后处理
你可以查看上传后的处理信息,包括 Amazon S3 对象元数据和事件通知。
Amazon S3 对象元数据
作为对象元数据的一部分,您会看到一个名为x-amz-meta-user-agent
的密钥,其值为AWSTransfer
,x-amz-meta-user-agent-id
的值为username@server-id
。username
是上传文件的 Transfer Family 用户,server-id
也是用于上传的服务器。可以使用对 Lambda 函数中的 S3 对象进行HeadObject操作来访问这些信息。
Amazon S3 事件通知
当使用 Transfer Family 将对象上传到您的 S3 存储桶时,RoleSessionName
作为[AWS:Role Unique
Identifier]/username.sessionid@server-id
包含在 S3 事件通知结构的请求者字段中。例如,以下是来自 S3 访问权限日志的、用于复制到 S3 存储桶中的请求者字段示例内容。
arn:aws:sts::AWS-Account-ID:assumed-role/IamRoleName/username.sessionid@server-id
在上述中请求者字段中,它显示了名为IamRoleName
的 IAM 角色。有关配置 S3 事件通知的更多信息,请参阅Amazon Simple Storage Service 开发人员指南中的配置 Amazon S3 事件通知。有关 Amazon Identity and Access Management(IAM) 角色唯一标识符的更多信息,请参阅Amazon Identity and Access Management用户指南中的唯一标识符。