Allows you to create a workflow with specified steps and step details the workflow invokes after file transfer completes.
After creating a workflow, you can associate the workflow created with any transfer servers by specifying the workflow-details
field in CreateServer
and UpdateServer
operations.
Syntax
To declare this entity in your AWS CloudFormation template, use the following syntax:
JSON
{
"Type" : "AWS::Transfer::Workflow",
"Properties" : {
"Description" : String
,
"OnExceptionSteps" : [ WorkflowStep, ... ]
,
"Steps" : [ WorkflowStep, ... ]
,
"Tags" : [ Tag, ... ]
}
}
YAML
Type: AWS::Transfer::Workflow
Properties:
Description: String
OnExceptionSteps:
- WorkflowStep
Steps:
- WorkflowStep
Tags:
- Tag
Properties
Description
-
Specifies the text description for the workflow.
Required: No
Type: String
Pattern:
^[\w\- ]*$
Minimum:
0
Maximum:
256
Update requires: Replacement
OnExceptionSteps
-
Specifies the steps (actions) to take if errors are encountered during execution of the workflow.
Required: No
Type: Array of WorkflowStep
Maximum:
8
Update requires: Replacement
Steps
-
Specifies the details for the steps that are in the specified workflow.
Required: Yes
Type: Array of WorkflowStep
Maximum:
8
Update requires: Replacement
-
Key-value pairs that can be used to group and search for workflows. Tags are metadata attached to workflows for any purpose.
Required: No
Type: Array of Tag
Maximum:
50
Update requires: No interruption
Return values
Ref
Fn::GetAtt
The Fn::GetAtt
intrinsic function returns a value for a specified attribute of this type. The following are the available attributes and sample return values.
For more information about using the Fn::GetAtt
intrinsic function, see Fn::GetAtt
.
WorkflowId
-
A unique identifier for a workflow.
Examples
Create workflow from a file
You can save workflow step information into a text file, and then use that file to
create a workflow, as in the following example. The following example assumes you have
saved your workflow steps into
example-file.json
(in the
same folder from where you run the command), and that you wish to create the workflow in
the N. Virginia (us-east-1) region.
aws transfer create-workflow --description "example workflow from a file" --steps file://example-file.json --region us-east-1
Create workflow from a template
You can create a workflow from a template. First, open the CloudFormation console. Next, follow the instructions for deploying AWS CloudFormation stack from an existing template in Selecting a stack template in the AWS CloudFormation User Guide.
Save the following code to a file, and upload it to CloudFormation when prompted, making sure to replace items as follows:
-
Replace
your-workflow-execution-role-arn
with the ARN for an actual workflow execution role. -
replace
arn:${AWS::Partition}:lambda:${AWS::Region}:${AWS::AccountId}:function:my-function-name
with the ARN for your Lambda function. For example,arn:aws:lambda:us-east-2:123456789012:function:example-lambda-idp
.
JSON
{
"AWSTemplateFormatVersion": "2010-09-09",
"Resources": {
"SFTPServer": {
"Type": "AWS::Transfer::Server",
"Properties": {
"WorkflowDetails": {
"OnUpload": [
{
"ExecutionRole": "your-workflow-execution-role-arn",
"WorkflowId": {
"Fn::GetAtt": [
"TransferWorkflow",
"WorkflowId"
]
}
}
]
}
}
},
"TransferWorkflow": {
"Type": "AWS::Transfer::Workflow",
"Properties": {
"Description": "Transfer Family Workflows Blog",
"Steps": [
{
"Type": "COPY",
"CopyStepDetails": {
"Name": "copyToUserKey",
"DestinationFileLocation": {
"S3FileLocation": {
"Bucket": "archived-records",
"Key": "${transfer:UserName}/"
}
},
"OverwriteExisting": "TRUE"
}
},
{
"Type": "TAG",
"TagStepDetails": {
"Name": "tagFileForArchive",
"Tags": [
{
"Key": "Archive",
"Value": "yes"
}
]
}
},
{
"Type": "CUSTOM",
"CustomStepDetails": {
"Name": "transferExtract",
"Target": "arn:${AWS::Partition}:lambda:${AWS::Region}:${AWS::AccountId}:function:my-function-name",
"TimeoutSeconds": 60
}
},
{
"Type": "DELETE",
"DeleteStepDetails": {
"Name": "DeleteInputFile",
"SourceFileLocation": "${original.file}"
}
}
],
"Tags": [
{
"Key": "Name",
"Value": "TransferFamilyWorkflows"
}
]
}
}
}
}
YAML
AWSTemplateFormatVersion: 2010-09-09
Resources:
SFTPServer:
Type: 'AWS::Transfer::Server'
Properties:
WorkflowDetails:
OnUpload:
- ExecutionRole: your-workflow-execution-role-arn
WorkflowId: !GetAtt
- TransferWorkflow
- WorkflowId
TransferWorkflow:
Type: AWS::Transfer::Workflow
Properties:
Description: Transfer Family Workflows Blog
Steps:
- Type: COPY
CopyStepDetails:
Name: copyToUserKey
DestinationFileLocation:
S3FileLocation:
Bucket: archived-records
Key: ${transfer:UserName}/
OverwriteExisting: 'TRUE'
- Type: TAG
TagStepDetails:
Name: tagFileForArchive
Tags:
- Key: Archive
Value: yes
- Type: CUSTOM
CustomStepDetails:
Name: transferExtract
Target: arn:${AWS::Partition}:lambda:${AWS::Region}:${AWS::AccountId}:function:my-function-name
TimeoutSeconds: 60
- Type: DELETE
DeleteStepDetails:
Name: DeleteInputFile
SourceFileLocation: '${original.file}'
Tags:
- Key: Name
Value: TransferFamilyWorkflows