本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定要與 AWS Transfer Family 伺服器搭配使用的儲存體
本主題說明您可以搭配 使用的儲存選項 AWS Transfer Family。您可以使用 Amazon S3 或 Amazon EFS 做為 Transfer Family 伺服器的儲存體。
內容
設定 Amazon S3 儲存貯體
AWS Transfer Family 會存取您的 Amazon S3 儲存貯體來為使用者的傳輸請求提供服務,因此您需要提供 Amazon S3 儲存貯體,做為設定已啟用檔案傳輸通訊協定之伺服器的一部分。您可以使用現有的儲存貯體,或是建立新的。
注意
您不需要使用位於相同 AWS 區域中的伺服器和 Amazon S3 儲存貯體,但我們建議這樣做作為最佳實務。
當您設定使用者時,您會為每個使用者指派一個 IAM 角色。此角色會決定他們對 Amazon S3 儲存貯體的存取層級。
如需建立新儲存貯體的資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的如何建立 S3 儲存貯體?。
注意
您可以使用 Amazon S3 物件鎖定,以防止物件在固定的時間長度內或無限期遭到覆寫。這與其他 服務一樣適用於 Transfer Family。如果物件存在且受到保護,則不允許寫入或刪除該檔案。如需 Amazon S3 物件鎖定的詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的使用 Amazon S3 物件鎖定。
Amazon S3 存取點
AWS Transfer Family 支援 Amazon S3 存取點
例如,您可以使用存取點,讓三個不同的團隊能夠存取相同的共用資料集,其中一個團隊可以從 S3 讀取資料、第二個團隊可以將資料寫入 S3,而第三個團隊可以從 S3 讀取、寫入和刪除資料。若要實作上述的精細存取控制,您可以建立 S3 存取點,其中包含為不同團隊提供非對稱存取權的政策。您可以搭配 Transfer Family 伺服器使用 S3 存取點來實現精細存取控制,而無需建立跨越數百個使用案例的複雜 S3 儲存貯體政策。若要進一步了解如何搭配 Transfer Family 伺服器使用 S3 存取點,請參閱使用 AWS Transfer Family 和 Amazon S3 增強資料存取控制
注意
AWS Transfer Family 目前不支援 Amazon S3 多區域存取點。
Amazon S3 HeadObject 行為
注意
當您建立或更新 Transfer Family 伺服器時,您可以最佳化 Amazon S3 目錄的效能,以消除HeadObject
呼叫。
在 Amazon S3 中,儲存貯體與物件是主要資源,而且物件會存放在儲存貯體中。Amazon S3 可以模擬階層式檔案系統,但有時行為可能與一般檔案系統不同。例如,目錄在 Amazon S3 中不是一級概念,而是以物件索引鍵為基礎。 AWS Transfer Family 會以正斜線字元 (/) 分割物件的索引鍵來推斷目錄路徑,將最後一個元素視為檔案名稱,然後在相同路徑下將具有相同字首的檔案名稱分組在一起。當您使用 mkdir
或使用 Amazon S3 主控台建立空目錄時,會建立零位元組物件來代表資料夾的路徑。這些物件的索引鍵結尾為正斜線。這些零位元組物件會在 Amazon S3 使用者指南中的使用資料夾在 Amazon S3 主控台中組織物件中說明。 Amazon S3
當您執行 ls
命令時,有些結果是 Amazon S3 零位元組物件 (這些物件的索引鍵結尾為正斜線字元),Transfer Family 會為每個物件發出HeadObject
請求 (如需詳細資訊,請參閱 Amazon Simple Storage Service API 參考中的 HeadObject)。使用 Amazon S3 做為 Transfer Family 的儲存時,這可能會導致下列問題。
授予僅寫入和列出檔案的能力
在某些情況下,您可能只想提供 Amazon S3 物件的寫入存取權。例如,您可能想要提供寫入 (或上傳) 和列出儲存貯體中物件的存取權,但不要讀取 (下載) 物件。若要使用檔案傳輸用戶端執行 ls
和 mkdir
命令,您必須擁有 Amazon S3 ListObjects
和 PutObject
許可。不過,當 Transfer Family 需要HeadObject
呼叫寫入或列出檔案時,呼叫會失敗並出現存取遭拒的錯誤,因為此呼叫需要 GetObject
許可。
注意
當您建立或更新 Transfer Family 伺服器時,您可以最佳化 Amazon S3 目錄的效能,以消除HeadObject
呼叫。
在這種情況下,您可以透過新增 AWS Identity and Access Management (IAM) 政策條件來授予存取權,該條件只會為結尾為斜線 () 的物件新增 GetObject
許可/
。此條件可防止對檔案的GetObject
呼叫 (因此無法讀取),但允許使用者列出和周遊資料夾。下列範例政策僅提供 Amazon S3 儲存貯體的寫入和清單存取權。若要使用此政策,請將 取代
為儲存貯體的名稱。amzn-s3-demo-bucket
注意
若要解決 WinSCP 的上傳行為,請務必新增"arn:aws:s3:::amzn-s3-demo-bucket/*.filepart"
列,如下列範例政策所列。這行可確保正確處理 .filepart 物件,以防止失敗。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListing", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" }, { "Sid": "AllowReadWrite", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*" ] }, { "Sid": "DenyIfNotFolder", "Effect": "Deny", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "NotResource": [ "arn:aws:s3:::amzn-s3-demo-bucket/*/", "arn:aws:s3:::amzn-s3-demo-bucket/*.filepart" ] } ] }
注意
此政策不允許使用者附加檔案。換句話說,獲指派此政策的使用者無法開啟檔案來新增內容或修改內容。此外,如果您的使用案例在上傳檔案之前需要HeadObject
呼叫,則此政策不適用於您。
導致延遲問題的大量零位元組物件
如果您的 Amazon S3 儲存貯體包含大量這些零位元組物件,Transfer Family 會發出許多HeadObject
呼叫,這可能會導致處理延遲。此問題的建議解決方案是啟用最佳化目錄以減少延遲。
例如,假設您進入主目錄,而且您有 10,000 個子目錄。換句話說,Amazon S3 儲存貯體有 10,000 個資料夾。在此案例中,如果您執行 ls
(清單) 命令,則清單操作需要 6 到 8 分鐘。不過,如果您最佳化目錄,此操作只需要幾秒鐘的時間。您可以在伺服器建立或更新程序期間,於設定其他詳細資訊畫面中設定此選項。這些程序會在 設定 SFTP、FTPS 或 FTP 伺服器端點主題下詳細說明。
注意
GUI 用戶端可能會發出超出您控制範圍的ls
命令,因此如果可以,請務必啟用此設定。
如果您未或無法最佳化目錄,此問題的替代解決方案是刪除所有零位元組物件。注意下列事項:
-
空白目錄將不再存在。目錄只會因為其名稱位於物件的金鑰中而存在。
-
不會阻止某人再次呼叫
mkdir
和破壞一切。您可以透過制定防止目錄建立的政策來緩解這種情況。 -
有些案例會使用這些 0 位元組物件。例如,您有 /inboxes/customer1000 之類的結構,而且收件匣目錄每天都會清除。
最後,另一個可能的解決方法是限制透過政策條件可見的物件數量,以減少HeadObject
呼叫數量。為了成為可行的解決方案,您需要接受您可能只能檢視一組有限的所有子目錄。
設定 Amazon EFS 檔案系統
AWS Transfer Family 存取 Amazon Elastic File System (Amazon EFS) 以服務使用者的傳輸請求。因此,您必須提供 Amazon EFS 檔案系統,做為設定已啟用檔案傳輸通訊協定之伺服器的一部分。您可以使用現有的檔案系統,也可以建立新的檔案系統。
注意下列事項:
-
當您使用 Transfer Family 伺服器和 Amazon EFS 檔案系統時,伺服器和檔案系統必須位於相同的 中 AWS 區域。
-
伺服器和檔案系統不需要位於相同的帳戶中。如果伺服器和檔案系統不在同一個帳戶中,則檔案系統政策必須為使用者角色提供明確許可。
如需如何設定多個帳戶的資訊,請參閱AWS Organizations 《 使用者指南》中的管理組織中 AWS 的帳戶。
-
當您設定使用者時,您會為每個使用者指派一個 IAM 角色。此角色會決定他們對 Amazon EFS 檔案系統的存取層級。
-
如需掛載 Amazon EFS 檔案系統的詳細資訊,請參閱掛載 Amazon EFS 檔案系統。
如需 AWS Transfer Family 和 Amazon EFS 如何搭配運作的詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的使用 AWS Transfer Family 存取 Amazon EFS 檔案系統中的檔案。 Amazon Elastic File System
Amazon EFS 檔案擁有權
Amazon EFS 使用可攜式作業系統界面 (POSIX) 檔案許可模型來代表檔案擁有權。
在 POSIX 中,系統中的使用者分為三個不同的許可類別:當您允許使用者使用 存取存放在 Amazon EFS 檔案系統中的檔案時 AWS Transfer Family,您必須為其指派「POSIX 設定檔」。此設定檔用於判斷其對 Amazon EFS 檔案系統中檔案和目錄的存取。
-
使用者 (u):檔案或目錄的擁有者。通常,檔案或目錄的建立者也是擁有者。
-
群組 (g):對共用的檔案和目錄需要相同存取權的一組使用者。
-
其他 (o):所有其他可存取系統的使用者,但擁有者和群組成員除外。此許可類別也稱為「公開」。
在 POSIX 許可模型中,每個檔案系統物件 (檔案、目錄、符號連結、具名管道和通訊端) 都與先前提到的三組許可相關聯。Amazon EFS 物件具有與其相關聯的 Unix 樣式模式。此模式值定義了對該物件執行動作的許可。
此外,在 Unix 風格的系統上,會將使用者和群組對應到數字識別符,Amazon EFS 會利用這些識別符來表示檔案所有權。對於 Amazon EFS,物件由單一擁有者和單一群組擁有。當使用者嘗試存取檔案系統物件時,Amazon EFS 會利用這些對應的數字 ID 來檢查權限。
為 Transfer 系列設定 Amazon EFS 使用者
在設定 Amazon EFS 使用者之前,您可以執行下列其中一項操作:
-
您可以在 Amazon EFS 中建立使用者和設定其主資料夾。如需詳細資訊,請參閱 在 Amazon EFS 上設定 Transfer Family 使用者。
-
如果您願意新增根使用者,您可以 建立 Amazon EFS 根使用者。
注意
Transfer Family 伺服器不支援 Amazon EFS 存取點來設定 POSIX 許可。Transfer Family 使用者的 POSIX 設定檔 (如上節所述) 可讓您設定 POSIX 許可。這些許可是在使用者層級設定,以根據 UID、GID 和次要 GIDs 進行精細存取。
在 Amazon EFS 上設定 Transfer Family 使用者
Transfer Family 會將使用者映射至您指定的 UID/GID 和目錄。如果 UID/GID/directories指派給使用者之前建立它們。 EFS 有關建立 Amazon EFS 使用者的詳細資訊,請參閱《Amazon Elastic File System 使用者指南》中的網路檔案系統 (NFS) 層級的使用使用者、群組和許可。
在 Transfer Family 中設定 Amazon EFS 使用者的步驟
-
使用
PosixProfile
欄位映射 Transfer Family 中使用者的 EFS UID 和 GID。 -
如果您希望使用者在登入時在特定資料夾中啟動,您可以在
HomeDirectory
欄位下指定 EFS 目錄。
您可以使用 CloudWatch 規則和 Lambda 函數來自動化程序。如需與 EFS 互動的範例 Lambda 函數,請參閱AWS Lambda 在無伺服器應用程式中使用適用於 的 Amazon EFS
此外,您可以為 Transfer Family 使用者設定邏輯目錄。如需詳細資訊,請參閱 使用邏輯目錄來簡化 Transfer Family 目錄結構主題中的 設定 Amazon EFS 的邏輯目錄一節。
建立 Amazon EFS 根使用者
如果您的組織習慣透過 SFTP/FTPS 為使用者組態啟用根使用者存取權,您可以建立 UID 和 GID 為 0 的使用者 (根使用者),然後使用該根使用者來建立資料夾,並為其他使用者指派 POSIX ID 擁有者。此選項的優點是不需要掛載 Amazon EFS 檔案系統。
執行中所述的步驟新增 Amazon EFS 服務受管使用者,並針對使用者 ID 和群組 ID,輸入 0 (零)。
提示
請勿讓此超級使用者帳戶存在超過必要的時間。或者,如果您確實保留根使用者帳戶,請確定您妥善保護根使用者帳戶。
支援的 Amazon EFS 命令
適用於 的 Amazon EFS 支援下列命令 AWS Transfer Family。
-
cd
-
ls
/dir
-
pwd
-
put
-
get
-
rename
-
chown
:只有根目錄 (也就是 uid=0 的使用者) 可以變更檔案和目錄的擁有權和許可。 -
chmod
:只有根可以變更檔案和目錄的擁有權和許可。 -
chgrp
:支援根群組或檔案擁有者,只能將檔案的群組變更為其次要群組之一。 -
ln -s
/symlink
-
mkdir
-
rm
/delete
-
rmdir
-
chmtime