本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用客户端通过服务器端点传输文件
通过在客户端中指定传输操作,您可以通过 Amazon Transfer Family 服务传输文件。 Amazon Transfer Family 支持以下客户端:
-
我们支持该SFTP协议的第 3 版。
-
打开SSH(macOS 和 Linux)
注意
此客户端仅适用于启用了 Secure Shell (SSH) 文件传输协议 (SFTP) 的服务器。
-
WinSCP(仅限微软 Windows)
-
Cyberduck(Windows、macOS 和 Linux)
-
FileZilla (Windows、macOS 和 Linux)
以下限制适用于每个客户端:
-
每个连接的最大并发、多路复用SFTP会话数为 10。
-
Amazon S3 和 AmazonEFS(由于NFSv4协议)要求文件名采用 UTF -8 编码。使用不同的编码可能会导致意想不到的结果。对于 Amazon S3,请参阅对象密钥命名指南。
-
对于 SSL (FTPS) 上的文件传输协议,仅支持显式模式。不支持隐式模式。
-
对于文件传输协议 (FTP) 和FTPS,仅支持被动模式。
-
对于FTP和FTPS,仅支持STREAM模式。
-
对于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 (AmazonEFS) 的服务器上使用逻辑主目录的用户目前不支持以下操作。
不支持的命令 SFTP | |||
---|---|---|---|
SSH_FXP_READLINK |
SSH_FXP_SYMLINK |
SSHFXP_ STAT 当请求的文件是符号链接时 |
SSHFXP_ REALPATH 当请求的路径包含任何符号链接组件时 |
生成公有-私有密钥对
在传输文件之前,必须有可用的公有-私有密钥对。如果您之前没有生成过密钥对,请参阅 为服务托管用户生成SSH密钥。
主题
可用SFTP/FTPS/FTP命令
下表描述了 Amazon Transfer Family、SFTPFTPS、和FTP协议的可用命令。
注意
该表提到了仅支持存储桶和对象的 Amazon S3 的文件和目录:无层次结构。但是,您可以在对象键名称中使用前缀来暗示层次结构,并以类似于文件夹的方式组织数据。Amazon Simple Storage Service 用户指南中的使用对象元数据中描述了该行为。
命令 | 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 |
支持 | 支持 |
找到您的亚马逊VPC终端节点
如果您的 Transfer Family 服务器的端点类型是VPC,那么识别用于传输文件的端点并不简单。在这种情况下,请使用以下过程来查找您的 Amazon VPC 终端节点。
找到您的亚马逊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。
使用 “打开” SSH
按照以下说明使用 Open 从命令行传输文件SSH。
注意
此客户端只能与SFTP启用了-的服务器一起使用。
Amazon Transfer Family 使用 Open SSH 命令行实用程序传输文件
-
在 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服务可能需要几分钟才能解析服务器端点主机名。
使用 Win SCP
按照以下说明使用 Win 从命令行传输文件SCP。
注意
如果您使用的是 Win SCP 5.19,则可以使用 Amazon 凭证直接连接到 Amazon S3 并上传/下载文件。有关更多详细信息,请参阅连接到 Amazon S3 服务
Amazon Transfer Family 使用 Win 传输文件 SCP
-
打开 Win SCP 客户端。
-
在 “登录” 对话框中,对于 “文件协议”,选择一个协议:SFTP或FTP。
如果您选择了 FTP “加密”,请选择以下选项之一:
-
不加密 FTP
-
TLS/SSL显式加密 FTPS
-
-
对于主机名,输入您的服务器端点。服务器端点位于服务器详细信息页面。有关更多信息,请参阅 查看SFTPFTPS、和FTP服务器详细信息。
注意
如果您的服务器使用VPC终端节点,请参阅找到您的亚马逊VPC终端节点。
-
在端口号中,输入以下内容:
-
22
for SFTP -
21
forFTP/FTPS
-
-
在用户名中,输入您为特定身份提供商创建的用户名称。
注意
用户名应是您为身份提供商创建或配置的用户之一。 Amazon Transfer Family 提供以下身份提供商:
-
选择高级打开高级站点设置对话框。在该SSH部分中,选择身份验证。
-
对于私钥文件,请浏览并选择文件系统中的SSH私钥文件。
注意
如果 SCP Win 提议将您的SSH私钥转换为该PPK格式,请选择 “确定”。
-
选择确定以返回到登录对话框,然后选择保存。
-
在将会话保存为站点对话框中,选择确定以完成您的连接设置。
-
在登录对话框中,选择工具,然后选择首选项。
-
在首选项对话框中的传输中,选择耐力。
对于启用传输恢复/传输到临时文件名选项,选择禁用。
注意
如果您启用此选项,则会增加上传成本,从而显著降低上传性能。它还可能导致大文件上传失败。
-
对于传输,选择背景,然后清除使用多个连接进行单次传输复选框。
注意
如果选择此选项,则上传大文件可能会以突然失败。例如,可以创建会产生 Amazon S3 费用的孤立分段上传。还可能发生静默数据损坏。
-
执行文件传输。
您可以使用 drag-and-drop方法在目标窗口和源窗口之间复制文件。在 Win 中,您可以使用工具栏图标上传、下载、删除、编辑或修改文件的属性SCP。
注意
如果您使用亚马逊EFS进行存储,则本说明不适用。
尝试更改远程文件属性(包括时间戳)的命令与 Amazon S3 等对象存储系统不兼容。因此,如果您使用 Amazon S3 进行存储,请务必在执行文件传输之前禁用 Win SCP 时间戳设置(或按SetStatOption
中所述使用避免 setstat 错误)。为此,请在 Win Tran SCP sfer 设置对话框中禁用 “设置权限上传” 选项和 “保留通用时间戳” 选项。
使用 Cyberduck
按照下文中的说明,使用 Cyberduck 从命令行传输文件。
Amazon Transfer Family 使用 Cyberduck 传输文件
-
打开 Cyberduck
客户端。 -
选择打开连接。
-
在 “打开连接” 对话框中,选择协议:SFTP(SSH文件传输协议)、FTP-SSL(显式 AUTHTLS)或 FTP(文件传输协议)。
-
对于服务器,输入您的服务器端点。服务器端点位于服务器详细信息页面。有关更多信息,请参阅 查看SFTPFTPS、和FTP服务器详细信息。
注意
如果您的服务器使用VPC终端节点,请参阅找到您的亚马逊VPC终端节点。
-
在端口号中,输入以下内容:
-
22
for SFTP -
21
forFTP/FTPS
-
-
对于用户名,输入您在管理服务器端点的用户中创建的用户的名称。
-
如果选中,SFTP则在 “SSH私钥” 中,选择或输入SSH私钥。
-
选择连接。
-
执行文件传输。
根据您的文件所在的位置,执行以下操作之一:
-
在您的本地目录(源)中,选择您要传输的文件,然后将这些文件拖放到 Amazon S3 目录(目标)中。
-
在 Amazon S3 目录(源)中,选择您要传输的文件,然后将这些文件拖放到您的本地目录(目标)中。
-
使用 FileZilla
按照以下说明使用传输文件 FileZilla。
要设置 FileZilla 文件传输
-
打开 FileZilla 客户端。
-
选择文件,然后选择站点管理器。
-
在站点管理器对话框中,选择新建站点。
-
在 “常规” 选项卡上,为 “协议” 选择协议:SFTP或FTP。
如果您选择了 FTP “加密”,请选择以下选项之一:
-
仅使用普通FTP(不安全)— 对于 FTP
-
TLS如果可用,请使用FTP显式 over — 对于 FTPS
-
-
在主机名中,输入您正在使用的协议,然后输入您的服务器端点。服务器端点位于服务器详细信息页面。有关更多信息,请参阅 查看SFTPFTPS、和FTP服务器详细信息。
注意
如果您的服务器使用VPC终端节点,请参阅找到您的亚马逊VPC终端节点。
-
如果您正在使用SFTP,请输入:
sftp://
hostname
-
如果您正在使用FTPS,请输入:
ftps://
hostname
一定要更换
hostname
使用您的实际服务器端点。 -
-
在端口号中,输入以下内容:
-
22
for SFTP -
21
forFTP/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
在上面的 “请求者” 字段中,它显示了被调IAMIamRoleName
用的角色。有关配置 S3 事件通知的更多信息,请参阅 Amazon Simple Storage Service 开发人员指南中的配置 Amazon S3 事件通知。有关 Amazon Identity and Access Management (IAM) 角色唯一标识符的更多信息,请参阅Amazon Identity and Access Management 用户指南中的唯一标识符。