設定要搭配使用的儲存區 AWS Transfer Family - AWS Transfer Family

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

設定要搭配使用的儲存區 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 儲存貯體的存取層級。

如需建立新儲存貯體的相關資訊,請參閱如何建立 S3 儲存貯體?Amazon 簡單存儲服務用戶指南

注意

您可以使用 Amazon S3 物件鎖定來防止物件遭到固定時間或無限期覆寫。這與 Transfer Family 的工作方式與其他服務相同。如果物件存在且受到保護,則不允許寫入該檔案或刪除該物件。如需 Amazon S3 物件鎖定的詳細資訊,請參閱 Amazon 簡單儲存服務使用者指南中的使用 Amazon S3 物件鎖定

Amazon S3 存取點

AWS Transfer Family 支援 Amazon S3 存取點,這是 Amazon S3 的一項功能,可讓您輕鬆管理對共用資料集的精細存取。您可以在任何使用 S3 儲存貯體名稱的地方使用 S3 存取點別名。您可以在 Amazon S3 中為具有不同權限存取 Amazon S3 儲存貯體中共用資料的使用者建立數百個存取點。

例如,您可以使用存取點允許三個不同的團隊存取相同的共用資料集,其中一個團隊可以從 S3 讀取資料,第二個團隊可以將資料寫入 S3,第三個團隊可以從 S3 讀取、寫入和刪除資料。若要實作如上所述的精細存取控制,您可以建立 S3 存取點,其中包含可讓不同團隊非對稱存取權的政策。您可以將 S3 存取點與 Transfer Family 伺服器搭配使用,實現精細的存取控制,而無需建立跨越數百個使用案例的複雜 S3 儲存貯體政策。若要進一步了解如何將 S3 存取點與 Transfer Family 伺服器搭配使用,請參閱使用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 主控台中組織物件。

當您執行ls命令時,有些結果是 Amazon S3 零位元組物件 (這些物件具有以正斜線字元結尾的金鑰),Transfer Family 會針對這些物件發出HeadObject要求 (請參閱 Amazon 簡單儲存服務 API 參考HeadObject中的詳細資訊)。使用 Amazon S3 做為 Transfer Family 列的儲存時,這可能會導致下列問題。

授予僅寫入和列出檔案的能力

在某些情況下,您可能只想提供對 Amazon S3 物件的寫入存取權限。例如,您可能想要提供值區中寫入 (或上傳) 和列出物件的存取權,但不想要讀取 (下載) 物件。若要使用檔案傳輸用戶端執行lsmkdir命令,您必須擁有 Amazon S3 ListObjectsPutObject許可。但是,當 Transfer Family 需要對寫入或列出檔案進行呼HeadObject叫時,呼叫會失敗並顯示拒絕存取的錯誤,因為此呼叫需要GetObject權限。

注意

當您建立或更新 Transfer Family 伺服器時,可以優化 Amazon S3 目錄的效能,進而消除HeadObject呼叫。

在此情況下,您可以新增 AWS Identity and Access Management (IAM) 政策條件來授予存取GetObject權,該條件僅針對以斜線 (/) 結尾的物件新增權限。這種情況可以防止對文件進行GetObject調用(以便無法讀取它們),但允許用戶列出和遍歷文件夾。下列範例政策僅提供對 Amazon S3 儲存貯體的寫入和列出存取。若要使用此政策,請DOC-EXAMPLE-BUCKET以儲存貯體的名稱取代。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowListing", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET" }, { "Sid": "AllowReadWrite", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" ] }, { "Sid": "DenyIfNotFolder", "Effect": "Deny", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "NotResource": [ "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*/" ] } ] }
注意

此原則不允許使用者附加檔案。換句話說,指派此原則的使用者無法開啟檔案來新增內容或修改檔案。此外,如果您的使用案例需要在上傳檔案之前進行HeadObject呼叫,則此原則不適用於您。

造成延遲問題的大量零位元組物件

如果您的 Amazon S3 儲存貯體包含大量這些零位元組物件,Transfer Family 會發出許多HeadObject呼叫,這可能會導致處理延遲。此問題的建議解決方案是啟用最佳化目錄以減少延遲。

例如,假設您進入您的主目錄,並且您有 10,000 個子目錄。換句話說,您的 Amazon S3 存儲桶有 10,000 個文件夾。在這個案例中,如果您執行 ls (list) 命令,清單作業需要六到八分鐘之間。但是,如果您最佳化您的目錄,此作業只需要幾秒鐘的時間。您可以在伺服器建立或更新程序期間,在「設定其他詳細資料」畫面中設定此選項。這些程序會在設定 SFTP、FTPS 或 FTP 伺服器端點主題下詳細說明。

注意

GUI 用戶端可能會在您的控制範圍之外發出ls指令,因此如果可以的話,請務必啟用此設定。

如果您不優化或無法優化目錄,則此問題的替代解決方案是刪除所有零字節對象。注意下列事項:

  • 空目錄將不再存在。目錄僅因為名稱位於物件的索引鍵中而存在。

  • 不會阻止某人再次打電話mkdir和破壞事情。您可以通過制定防止目錄創建的策略來緩解此問題。

  • 某些情況下使用這些 0 字節的對象。例如,您有一個像/收件箱/客戶 1000 這樣的結構,並且每天都會清理收件箱目錄。

最後,還有一個可能的解決方案是限制政策條件中可見的物件數目,以減少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 檔案系統

如需 Amazon EFS 如何 AWS Transfer Family 協同運作的詳細資訊,請參閱 Amazon 彈性檔案系統使用 AWS Transfer Family 者指南中的使用存取 Amazon EFS 檔案系統中的檔案。

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 Family 設定 Amazon EFS 使用者

在設定 Amazon EFS 使用者之前,您可以執行下列任一項作業:

注意

Transfer Family 伺服器不支援 Amazon EFS 存取點來設定 POSIX 許可。Transfer Family 用戶的 POSIX 配置文件(在上一節中描述)提供設置 POSIX 權限的功能。這些權限是根據 UID、GID 和次要 gID 在使用者層級設定,以進行細微存取。

在 Amazon EFS 上設定 Transfer Family 使用者

Transfer Family 會將使用者對應至 UID/GID 和您指定的目錄。如果 UID/GID/ 目錄不存在於 EFS 中,則應先建立它們,然後再將它們指派給使用者。有關建立 Amazon EFS 使用者的詳細資訊,請參閱 Amazon Elastic File System 檔案系統使用者指南中的網路檔案系統 (NFS) 層級處理使用者、群組和許可。

在 Transfer Family 列中設定 Amazon EFS 使用者的步驟
  1. 使用這些欄位,在「Transfer Family」中為您的使用者對應 EFS UID 和 GID。PosixProfile

  2. 如果您希望使用者在登入時從特定資料夾啟動,可以在HomeDirectory欄位下指定 EFS 目錄。

您可以使用 CloudWatch 規則和 Lambda 函數將程序自動化。如需與 EFS 互動的 Lambda 函數範例,請參閱在無伺服器應用程式 AWS Lambda 中使用 Amazon EFS

此外,您還可以為 Transfer Family 使用者設定邏輯目錄。如需詳細資訊,請參設定 Amazon EFS 的邏輯目錄使用邏輯目錄簡化您的 Transfer Family 目錄結構主題中的一節。

建立 Amazon EFS 根使用者

如果您的組織很適合您透過 SFTP/FTPS 啟用 root 使用者存取權以進行使用者的設定,您可以建立 UID 和 GID 為 0 的使用者 (root 使用者),然後使用該 root 使用者建立資料夾並為其他使用者指派 POSIX ID 擁有者。此選項的優點是不需要掛載 Amazon EFS 檔案系統。

執行中所述的步驟新增 Amazon EFS 服務受管使用者,對於「使用者 ID」和「群組 ID」,輸入 0 (零)。

提示

不要讓這個超級用戶帳戶存在超過必要的時間。或者,如果您確實保留了 root 用戶帳戶,請確保您對其進行良好的保護。

支援 Amazon EFS 命令

下列命令支援的 Amazon EFS AWS Transfer Family。

  • cd

  • ls/dir

  • pwd

  • put

  • get

  • rename

  • chown:只有 root(即具有 uid=0 的使用者)可以變更檔案和目錄的擁有權和權限。

  • chmod:只有 root 可以更改文件和目錄的所有權和權限。

  • chgrp:支援 root 或檔案擁有者,只能將檔案群組變更為其次要群組之一。

  • ln -s/symlink

  • mkdir

  • rm/delete

  • rmdir

  • chmtime