本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用預先定義的步驟
建立工作流程時,您可以選擇新增本主題中討論的下列其中一個預先定義步驟。您也可以選擇新增自己的自訂檔案處理步驟。如需詳細資訊,請參閱使用自訂檔案處理步驟。
複製檔案
複製檔案步驟會在新的 Amazon S3 位置建立上傳檔案的複本。目前,您只能將複製檔案步驟與 Amazon S3 搭配使用。
下列複製檔案步驟會將檔案複製到file-test
目的地儲存貯體中的test
資料夾。
如果複製檔案步驟不是工作流程的第一個步驟,您可以指定檔案位置 。透過指定檔案位置,您可以複製上一個步驟中使用的檔案或上傳的原始檔案。您可以使用此功能製作原始檔案的多個複本,同時保持來源檔案的完整,以供檔案封存和記錄保留。如需範例,請參閱範例標籤和刪除工作流程。

提供儲存貯體和金鑰詳細資訊
您必須提供副本檔案步驟目的地的儲存貯體名稱和金鑰。金鑰可以是路徑名稱或檔案名稱。金鑰是否視為路徑名稱或檔案名稱,取決於您是否以正斜線 (/
) 字元結束金鑰。
如果最後一個字元是 /
,您的檔案會複製到 資料夾,其名稱不會變更。如果最後一個字元是英數字元,則上傳的檔案會重新命名為索引鍵值。在此情況下,如果具有該名稱的檔案已存在,則行為取決於覆寫現有欄位的設定。
-
如果選取覆寫現有檔案,則會將現有檔案取代為正在處理的檔案。
-
如果未選取覆寫現有 ,則不會發生任何情況,工作流程處理也會停止。
提示
如果在相同的檔案路徑上執行並行寫入,可能會在覆寫檔案時產生非預期的行為。
例如,如果您的金鑰值為 test/
,則上傳的檔案會複製到 test
資料夾。如果您的金鑰值為 test/today
,則您上傳的每個檔案都會複製到test
資料夾中名為 的檔案 today
(並選取覆寫現有檔案),而每個後續檔案都會覆寫上一個檔案。
注意
Amazon S3 支援儲存貯體與物件,且沒有任何階層。不過,您可以在物件金鑰名稱中使用字首和分隔符號來暗示階層,並以類似於資料夾的方式整理資料。
在複製檔案步驟中使用具名變數
在複製檔案步驟中,您可以使用 變數將檔案動態複製到使用者特定的資料夾中。目前,您可以使用 ${transfer:UserName}
或 ${transfer:UploadDate}
作為變數,將檔案複製到上傳檔案之指定使用者的目的地位置,或根據目前日期。
在下列範例中,如果使用者richard-roe
上傳檔案,則會將其複製到 file-test2/richard-roe/processed/
資料夾。如果使用者mary-major
上傳檔案,則會將其複製到 file-test2/mary-major/processed/
資料夾。

同樣地,您可以使用 ${transfer:UploadDate}
作為變數,將檔案複製到名為目前日期的目的地位置。在下列範例中,如果您在 2022 年 2 月 1 ${transfer:UploadDate}/processed
日將目的地設定為 ,上傳的檔案會複製到 file-test2/2022-02-01/processed/
資料夾。

您也可以將這兩個變數結合其功能使用。例如:
-
您可以將目的地金鑰字首設定為
folder/${transfer:UserName}/${transfer:UploadDate}/
,這會建立巢狀資料夾,例如folder/marymajor/2023-01-05/
。 -
您可以將目的地金鑰字首設定為
folder/${transfer:UserName}-${transfer:UploadDate}/
,以串連兩個變數,例如folder/marymajor-2023-01-05/
。
IAM 複製步驟的許可
若要讓複製步驟成功,請確定工作流程的執行角色包含下列許可。
{ "Sid": "ListBucket", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": [ "arn:aws:s3:::
destination-bucket-name
" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::destination-bucket-name
/*" }
注意
只有在您未選取覆寫現有的 時,才需要此s3:ListBucket
許可。此許可會檢查您的儲存貯體,以查看是否已存在具有相同名稱的檔案。如果您已選取覆寫現有的 ,則工作流程不需要檢查檔案,而且可以直接寫入。
如果您的 Amazon S3 檔案有標籤,您需要將一或兩個許可新增至IAM政策。
-
s3:GetObjectTagging
為未進行版本控制的 Amazon S3 檔案新增 。 -
s3:GetObjectVersionTagging
為版本化的 Amazon S3 檔案新增 。
解密檔案
AWS 儲存部落格有一個文章,說明如何使用 和 加密PGP和解密檔案、加密和解密檔案 AWS Transfer Family
在工作流程中使用PGP解密
Transfer Family 內建支援 Pretty Good Privacy (PGP) 解密。您可以在透過 SFTP、 FTPS或 上傳至 FTP Amazon Simple Storage Service (Amazon S3) 或 Amazon Elastic File System (Amazon) 的檔案上使用PGP解密EFS。
若要使用PGP解密功能,您必須建立並儲存用於檔案解密的PGP私有金鑰。然後,您的使用者可以在將檔案上傳至 Transfer Family 伺服器之前,使用對應的PGP加密金鑰來加密檔案。收到加密的檔案後,您可以在工作流程中解密這些檔案。如需詳細教學,請參閱設定用於解密檔案的受管工作流程。
在工作流程中使用PGP解密
-
識別 Transfer Family 伺服器以託管您的工作流程,或建立新的工作流程。您需要有伺服器 ID,才能將PGP金鑰 AWS Secrets Manager 以正確的秘密名稱存放在 中。
-
將PGP索引鍵存放在所需的秘密名稱 AWS Secrets Manager 下。如需詳細資訊,請參閱 管理 PGP 金鑰。工作流程可以根據 Secrets Manager 中的秘密名稱,自動找到要用於解密的正確PGP金鑰。
注意
當您將秘密存放在 Secrets Manager 時, AWS 帳戶 會產生費用。如需定價的資訊,請參閱 AWS Secrets Manager 定價
。 -
使用PGP金鑰對加密檔案。(如需支援的用戶端清單,請參閱 支援的PGP用戶端。) 如果您使用命令列,請執行下列命令。若要使用此命令,
請以您用來建立PGP金鑰對的電子郵件地址取代 。username@example.com
以您要加密的檔案名稱取代 。testfile.txt
gpg -e -r
username@example.com
testfile.txt
-
將加密的檔案上傳至 Transfer Family 伺服器。
-
在工作流程中設定解密步驟。如需詳細資訊,請參閱新增解密步驟。
新增解密步驟
解密步驟會解密上傳到 Amazon S3 或 Amazon EFS作為工作流程一部分的加密檔案。如需設定解密的詳細資訊,請參閱 在工作流程中使用PGP解密。
當您為工作流程建立解密步驟時,您必須指定解密檔案的目的地。如果檔案已存在於目的地位置,您也必須選取是否覆寫現有檔案。您可以使用 Amazon Logs 監控解密工作流程結果,並即時取得每個檔案的稽核 CloudWatch 日誌。
在您選擇步驟的解密檔案類型後,便會顯示設定參數頁面。填寫設定PGP解密參數區段的值。
可用的選項如下所示:
-
步驟名稱 – 輸入步驟的描述性名稱。
-
檔案位置 – 透過指定檔案位置,您可以解密上一個步驟中使用的檔案或上傳的原始檔案。
注意
如果此步驟是工作流程的第一個步驟,則無法使用此參數。
-
解密檔案的目的地 – 選擇 Amazon S3 儲存貯體或 Amazon EFS 檔案系統作為解密檔案的目的地。
-
如果您選擇 Amazon S3,則必須提供目的地儲存貯體名稱和目的地金鑰字首。若要依使用者名稱參數化目的地金鑰字首,請在
${transfer:UserName}
目的地金鑰字首輸入 。同樣地,若要依上傳日期參數化目的地金鑰字首,請輸入${Transfer:UploadDate}
目的地金鑰字首 。 -
如果您選擇 Amazon EFS,則必須提供目的地檔案系統和路徑。
注意
您在此處選擇的儲存選項必須與與此工作流程相關聯的 Transfer Family 伺服器所使用的儲存系統相符。否則,當您嘗試執行此工作流程時,會收到錯誤。
-
-
覆寫現有檔案 – 如果您上傳檔案,且目的地已存在具有相同檔案名稱的檔案,則行為取決於此參數的設定:
-
如果選取覆寫現有檔案,則會將現有檔案取代為正在處理的檔案。
-
如果未選取覆寫現有 ,則不會發生任何情況,工作流程處理也會停止。
提示
如果在相同的檔案路徑上執行並行寫入,可能會在覆寫檔案時產生非預期的行為。
-
下列螢幕擷取畫面顯示您可以為解密檔案步驟選擇的選項範例。

IAM 解密步驟的許可
若要允許解密步驟成功,請確定工作流程的執行角色包含下列許可。
{ "Sid": "ListBucket", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": [ "arn:aws:s3:::
destination-bucket-name
" ] }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion" ], "Resource": "arn:aws:s3:::destination-bucket-name
/*" }, { "Sid": "Decrypt", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", ], "Resource": "arn:aws:secretsmanager:region
:account-id
:secret:aws/transfer/*" }
注意
只有在您未選取覆寫現有 時,才需要此s3:ListBucket
許可。此許可會檢查您的儲存貯體,以查看是否已存在具有相同名稱的檔案。如果您已選取覆寫現有的 ,則工作流程不需要檢查檔案,只需寫入它即可。
如果您的 Amazon S3 檔案有標籤,您需要將一或兩個許可新增至IAM政策。
-
s3:GetObjectTagging
為未進行版本控制的 Amazon S3 檔案新增 。 -
s3:GetObjectVersionTagging
為版本化的 Amazon S3 檔案新增 。
標籤檔案
若要標記傳入檔案以進行進一步的下游處理,請使用標籤步驟。輸入您要指派給傳入檔案的標籤值。目前,只有在您將 Amazon S3 用於 Transfer Family 伺服器儲存時才支援標籤操作。
下列範例標籤步驟會分別指派 scan_outcome
和 clean
作為標籤索引鍵和值。

若要讓標籤步驟成功,請確定工作流程的執行角色包含下列許可。
{ "Sid": "Tag", "Effect": "Allow", "Action": [ "s3:PutObjectTagging", "s3:PutObjectVersionTagging" ], "Resource": [ "arn:aws:s3:::
DOC-EXAMPLE-BUCKET
/*" ] }
注意
如果您的工作流程包含在複製或解密步驟之前執行的標籤步驟,您需要將一或兩個許可新增至IAM政策。
-
s3:GetObjectTagging
為未進行版本控制的 Amazon S3 檔案新增 。 -
s3:GetObjectVersionTagging
為版本化的 Amazon S3 檔案新增 。
刪除檔案
若要從上一個工作流程步驟中刪除已處理的檔案,或刪除最初上傳的檔案,請使用刪除檔案步驟。

若要允許刪除步驟成功,請確定工作流程的執行角色包含下列許可。
{ "Sid": "Delete", "Effect": "Allow", "Action": [ "s3:DeleteObjectVersion", "s3:DeleteObject" ], "Resource": "arn:aws:secretsmanager:
region
:account-ID
:secret:aws/transfer/*" }
工作流程的命名變數
對於複製和解密步驟,您可以使用 變數來動態執行動作。目前, AWS Transfer Family 支援下列具名變數。
-
根據上傳檔案的使用者
${transfer:UserName}
,使用 將檔案複製或解密至目的地。 -
使用
${transfer:UploadDate}
以根據目前日期將檔案複製或解密至目的地位置。
範例標籤和刪除工作流程
下列範例說明一個工作流程,該工作流程會標記需要由下游應用程式處理的傳入檔案,例如資料分析平台。標記傳入檔案後,工作流程接著會刪除最初上傳的檔案,以節省儲存成本。