使用用戶端透過伺服器端點傳輸檔案 - AWS Transfer Family

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用用戶端透過伺服器端點傳輸檔案

您可以透過在用戶端中指定傳輸操作,透過 AWS Transfer Family 服務傳輸檔案。 AWS Transfer Family 支援下列用戶端:

  • 我們支援第 3 版的SFTP通訊協定。

  • 開啟SSH (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,僅支援映像/二進位模式。

  • 對於 FTP和 FTPS,TLS資料連線的 TLS - PROT C (未受保護) 是預設值, AWS 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 當請求的檔案為 symlink 時

SSH_FXP_REALPATH 當請求的路徑包含任何符號連結元件時

產生公有-私有金鑰對

您必須先有公有私有金鑰對可供使用,才能傳輸檔案。如果您先前尚未產生金鑰對,請參閱 為受服務管理的使用者產生SSH金鑰

可用的SFTP/FTPS/FTP命令

下表說明 AWS Transfer Family、、 SFTPFTPS和 FTP通訊協定的可用命令。

注意

資料表提到 Amazon S3 的檔案目錄,僅支援儲存貯體和物件:沒有階層。不過,您可以在物件金鑰名稱中使用字首來暗示階層,並以類似於資料夾的方式整理資料。此行為會在 Amazon Simple Storage Service 使用者指南 中的使用物件中繼資料中說明。

SFTP/FTPS/FTP 命令
Command Amazon S3 Amazon EFS
cd 支援 支援
chgrp 不支援 支援 (rootowner 專用)
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名稱 清單中,您的伺服器端點是列出的第一個端點。

    Amazon VPC主控台端點頁面,顯示所選端點DNS的名稱。

避免setstat錯誤

有些SFTP檔案傳輸用戶端可能會嘗試使用 命令來變更遠端檔案的屬性,包括時間戳記和許可,例如上傳檔案SETSTAT時。不過,這些命令與 Amazon S3 等物件儲存系統並不相容。由於這種不相容性,即使已成功上傳檔案,從這些用戶端上傳檔案也可能導致錯誤。

  • 當您呼叫 CreateServerUpdateServer 時API,請使用 ProtocolDetails選項SetStatOption來忽略當用戶端嘗試在您上傳到 S3 儲存貯體的檔案SETSTAT上使用 時所產生的錯誤。

  • 將值設定為 ENABLE_NO_OP,讓 Transfer Family 伺服器忽略 SETSTAT 命令,並上傳檔案,而不需要對SFTP用戶端進行任何變更。

  • 請注意,雖然SetStatOptionENABLE_NO_OP設定會忽略錯誤,但會在 CloudWatch 日誌中產生日誌項目,因此您可以判斷用戶端何時SETSTAT撥打電話。

如需此選項API的詳細資訊,請參閱 ProtocolDetails

使用開啟SSH

使用下列指示,使用 Open 來從命令列傳輸檔案SSH。

注意

此用戶端僅適用於SFTP已啟用 的伺服器。

AWS Transfer Family 使用開啟SSH命令列公用程式傳輸檔案
  1. 在 Linux、macOS 或 Windows 上,開啟命令終端機。

  2. 在提示中,輸入下列命令:

    sftp -i transfer-key sftp_user@service_endpoint

    在上述命令中, sftp_user 是使用者名稱, transfer-key是SSH私有金鑰。此處service_endpoint是伺服器端點,如所選伺服器的 AWS Transfer Family 主控台所示。

    注意

    此命令會使用預設ssh_config檔案中的設定。除非您先前已編輯過此檔案,否則 SFTP會使用連接埠 22。您可以新增-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的服務解決。

使用 WinSCP

使用下列指示,使用 Win 傳輸命令列中的檔案SCP。

注意

如果您使用的是 WinSCP 5.19,則可以使用 AWS 憑證直接連線至 Amazon S3,並上傳/下載檔案。如需詳細資訊,請參閱連線至 Amazon S3 服務。

AWS Transfer Family 使用 Win 傳輸檔案SCP
  1. 開啟 WinSCP 用戶端。

  2. 登入對話方塊中,針對檔案通訊協定 ,選擇通訊協定: SFTPFTP

    如果您選擇 FTP,請在加密 中,選擇下列其中一項:

    • 無加密 FTP

    • TLS/SSL 的明確加密 FTPS

  3. 針對 Host name (主機名稱),輸入您的伺服器端點。伺服器端點位於伺服器詳細資訊頁面上。如需詳細資訊,請參閱檢視 SFTP、 FTPS和 FTP 伺服器詳細資訊

    注意

    如果您的伺服器使用VPC端點,請參閱 尋找您的 Amazon VPC端點

  4. 針對連接埠號碼 ,輸入下列內容:

    • 適用於 SFTP 的 22

    • 21 適用於 FTP/FTPS

  5. 使用者名稱 中,輸入您為特定身分提供者建立的使用者名稱。

    注意

    使用者名稱應該是您為身分提供者建立或設定的使用者之一。 AWS Transfer Family 提供下列身分提供者:

  6. 選擇進階以開啟進階網站設定對話方塊。在 SSH區段中,選擇身分驗證

  7. 對於私有金鑰檔案 ,瀏覽 並從檔案系統選擇SSH私有金鑰檔案。

    注意

    如果 WinSCP 提議將SSH私有金鑰轉換為 PPK 格式,請選擇確定

  8. 選擇 OK (確定) 返回 Login (登入) 對話方塊,然後選擇 Save (儲存)

  9. 在將工作階段另存為站台對話方塊中,選擇確定以完成連線設定。

  10. 登入對話方塊中,選擇工具 ,然後選擇偏好設定

  11. 偏好設定對話方塊中,針對轉接 ,選擇耐久性

    對於啟用傳輸履歷/轉移至選項的暫存檔案名稱,請選擇停用

    注意

    如果您讓此選項保持啟用狀態,會增加上傳成本,大幅降低上傳效能。它也可能導致大型檔案上傳失敗。

  12. 針對轉接 ,選擇背景 ,然後清除使用多個連線進行單一轉接核取方塊。

    注意

    如果您選取此選項,大型檔案上傳可能會以無法預測的方式失敗。例如,可以建立產生 Amazon S3 費用的孤立分段上傳。也可能發生無聲資料損毀。

  13. 執行檔案傳輸。

    您可以使用 drag-and-drop方法來複製目標和來源視窗之間的檔案。您可以使用工具列圖示來上傳、下載、刪除、編輯或修改 Win 中的檔案屬性SCP。

注意

如果您使用 Amazon EFS進行儲存,則不適用此備註。

嘗試變更遠端檔案屬性的命令,包括時間戳記,與 Amazon S3 等物件儲存系統不相容。因此,如果您使用 Amazon S3 進行儲存,請務必在執行檔案傳輸之前停用 WinSCP 時間戳記設定 (或使用 SetStatOption中所述的 避免setstat錯誤)。若要這麼做,請在 WinSCP Transfer 設定對話方塊中停用設定許可上傳選項和保留時間戳記常用選項。

使用 Cyberduck

使用下列說明使用 Cyberduck 從命令列傳輸檔案。

AWS Transfer Family 使用 Cyberduck 傳輸檔案
  1. 開啟 Cyberduck 用戶端。

  2. 選擇開啟連線

  3. 開啟連線對話方塊中,選擇通訊協定: SFTP(SSH 檔案傳輸通訊協定)FTP-SSL (明確 TLS) 或 AUTH FTP(檔案傳輸通訊協定)

  4. 對於伺服器 ,輸入您的伺服器端點。伺服器端點位於伺服器詳細資訊頁面上。如需詳細資訊,請參閱檢視 SFTP、 FTPS和 FTP 伺服器詳細資訊

    注意

    如果您的伺服器使用VPC端點,請參閱 尋找您的 Amazon VPC端點

  5. 針對連接埠號碼 ,輸入下列內容:

    • 適用於 SFTP 的 22

    • 21 適用於 FTP/FTPS

  6. 針對 Username (使用者名稱),輸入您在管理伺服器端點的使用者中建立的使用者名稱。

  7. SFTP 如果已選取 ,則對於SSH私密金鑰 ,選擇或輸入SSH私密金鑰。

  8. 選擇連線

  9. 執行檔案傳輸。

    根據檔案所在位置,執行以下其中一項:

    • 在本機目錄 (來源) 中,選擇要傳輸的檔案,然後將其拖放至 Amazon S3 目錄 (目標)。

    • 在 Amazon S3 目錄 (來源) 中,選擇要傳輸的檔案,然後將其拖放至本機目錄 (目標)。

使用 FileZilla

使用下列指示來使用 傳輸檔案 FileZilla。

FileZilla 設定檔案傳輸
  1. 開啟 FileZilla 用戶端。

  2. 選擇檔案 ,然後選擇 Site Manager

  3. Site Manager 對話方塊中,選擇新網站

  4. 一般索引標籤上,針對通訊協定 ,選擇通訊協定: SFTPFTP

    如果您選擇 FTP,請在加密 中,選擇下列其中一項:

    • 僅使用純 FTP(不安全) – 用於 FTP

    • 如果可用TLS,請使用明確的 FTP - 適用於 FTPS

  5. 對於主機名稱 ,輸入您正在使用的通訊協定,然後輸入伺服器端點。伺服器端點位於伺服器詳細資訊頁面上。如需詳細資訊,請參閱檢視 SFTP、 FTPS和 FTP 伺服器詳細資訊

    注意

    如果您的伺服器使用VPC端點,請參閱 尋找您的 Amazon VPC端點

    • 如果您使用的是 SFTP,請輸入: sftp://hostname

    • 如果您使用的是 FTPS,請輸入: ftps://hostname

    請務必取代 hostname 實際的伺服器端點。

  6. 針對連接埠號碼 ,輸入下列內容:

    • 適用於 SFTP 的 22

    • 21 適用於 FTP/FTPS

  7. SFTP 如果選取 ,對於登入類型 ,選擇金鑰檔案

    針對金鑰檔案 ,選擇或輸入SSH私有金鑰。

  8. 針對使用者 ,輸入您在 中建立的使用者名稱管理伺服器端點的使用者

  9. 選擇連線

  10. 執行檔案傳輸。

    注意

    如果您中斷進行中的檔案傳輸, AWS Transfer Family 可能會寫入 Amazon S3 儲存貯體中的部分物件。如果您中斷上傳,請檢查 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 物件中繼資料

作為物件中繼資料的一部分,您會看到名為 的索引鍵x-amz-meta-user-agent,其值為 AWSTransferx-amz-meta-user-agent-id而其值為 username@server-idusername 是上傳檔案的 Transfer Family 使用者,server-id也是用於上傳的伺服器。您可以使用 Lambda 函數內 S3 物件HeadObject的操作來存取此資訊。

Amazon S3 事件通知

使用 Transfer Family 將物件上傳至 S3 儲存貯體時,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

在上方的請求者欄位中,會顯示名為 IAM的角色IamRoleName。如需設定 S3 事件通知的詳細資訊,請參閱 Amazon Simple Storage Service 開發人員指南 中的設定 Amazon S3 事件通知如需 AWS Identity and Access Management (IAM) 角色唯一識別碼的詳細資訊,請參閱 AWS Identity and Access Management 使用者指南 中的唯一識別碼