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

如需建立新儲存貯體的資訊,請參閱 Amazon Simple Storage Service 使用者指南 中的如何建立 S3 儲存貯體?

注意

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

Amazon S3 存取點

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

例如,您可以使用存取點,讓三個不同的團隊能夠存取相同的共用資料集,其中一個團隊可以從 S3 讀取資料,另一個團隊可以將資料寫入 S3,而第三個團隊可以從 S3 讀取、寫入和刪除資料。若要實作上述精細存取控制,您可以建立 S3 存取點,其中包含對不同團隊提供非對稱存取的政策。您可以搭配 Transfer Family 伺服器使用 S3 存取點來實現精細存取控制,而無需建立跨越數百個使用案例的複雜 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 主控台中的物件中說明。 Amazon S3

當您執行 ls 命令時,有些結果是 Amazon S3 零位元組物件 (這些物件的索引鍵結尾為正斜線字元),Transfer Family 會發出每個物件的HeadObject請求 (如需詳細資訊,請參閱 Amazon Simple Storage Service API參考HeadObject中的 )。使用 Amazon S3 作為具有 Transfer Family 的儲存時,這可能會導致下列問題。

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

在某些情況下,您可能只想提供 Amazon S3 物件的寫入存取權。例如,您可能想要提供寫入 (或上傳) 和列出儲存貯體中物件的存取權,但不要讀取 (下載) 物件。若要使用檔案傳輸用戶端執行 lsmkdir命令,您必須具有 Amazon S3 ListObjectsPutObject 許可。不過,當 Transfer Family 需要HeadObject呼叫寫入或列出檔案時,呼叫會失敗,但 Access 遭拒 的錯誤,因為此呼叫需要 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呼叫,這可能會導致處理延遲。

此問題的一個可能解決方案是刪除所有零位元組物件。注意下列事項:

  • 空的目錄將不再存在。目錄的存在,是因為其名稱位於物件的金鑰中。

  • 不會阻止某人再次呼叫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會使用映射的數值IDs來檢查許可。

為 Transfer Family 設定 Amazon EFS使用者

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

注意

Transfer Family 伺服器不支援 Amazon EFS存取點來設定POSIX許可。Transfer Family 使用者的POSIX設定檔 (如上節所述) 提供設定POSIX許可的功能。這些許可是根據 、 GID和次要 UID,在使用者層級設定精細存取GIDs。

在 Amazon 上設定 Transfer Family 使用者 EFS

Transfer Family 會將使用者映射到 UID/GID and directories you specify. If the UID/GID/directories 中不存在的 EFS,然後您應該在轉移給使用者之前建立使用者。有關建立 Amazon EFS使用者的詳細資訊,請參閱 Amazon Elastic File System 使用者指南 中的使用網路檔案系統 (NFS) 層級的使用者、群組和許可

在 Transfer Family 中設定 Amazon EFS使用者的步驟
  1. 使用 PosixProfile 欄位GID,在 Transfer Family 中為您的使用者對應 EFSUID和 。

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

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

此外,您可以為 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 for 支援下列命令 AWS Transfer Family。

  • cd

  • ls/dir

  • pwd

  • put

  • get

  • rename

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

  • chmod:只有根可以變更檔案和目錄的擁有權和許可。

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

  • ln -s/symlink

  • mkdir

  • rm/delete

  • rmdir

  • chmtime