Workflow ​
The Workflow resource lets you manage AWS Transfer Workflows for automating file transfers and processing within the AWS Transfer Family service.
Minimal Example ​
Create a basic workflow that includes a step to copy files to an S3 bucket:
ts
import AWS from "alchemy/aws/control";
const basicWorkflow = await AWS.Transfer.Workflow("basicWorkflow", {
Steps: [
{
Name: "CopyToS3",
Type: "Copy",
CopyStepDetails: {
Destination: {
Bucket: "my-transfer-bucket",
Key: "transferred-files/${transferId}/"
}
}
}
],
Description: "A simple workflow to copy files to S3 bucket."
});
Advanced Configuration ​
Configure a workflow with multiple processing steps, including error handling:
ts
const advancedWorkflow = await AWS.Transfer.Workflow("advancedWorkflow", {
Steps: [
{
Name: "CopyToS3",
Type: "Copy",
CopyStepDetails: {
Destination: {
Bucket: "my-transfer-bucket",
Key: "transferred-files/${transferId}/"
}
}
},
{
Name: "NotifyOnSuccess",
Type: "Lambda",
LambdaStepDetails: {
FunctionName: "arn:aws:lambda:us-east-1:123456789012:function:notifyFunction"
}
}
],
OnExceptionSteps: [
{
Name: "NotifyOnFailure",
Type: "Lambda",
LambdaStepDetails: {
FunctionName: "arn:aws:lambda:us-east-1:123456789012:function:errorHandler"
}
}
],
Description: "A workflow that copies files and handles notifications."
});
Using Tags for Organization ​
You can add tags to your workflows for better resource management:
ts
const taggedWorkflow = await AWS.Transfer.Workflow("taggedWorkflow", {
Steps: [
{
Name: "CopyToS3",
Type: "Copy",
CopyStepDetails: {
Destination: {
Bucket: "my-transfer-bucket",
Key: "transferred-files/${transferId}/"
}
}
}
],
Tags: [
{
Key: "Environment",
Value: "Production"
},
{
Key: "Project",
Value: "FileTransfer"
}
]
});
Full Workflow Example with Multiple Steps ​
Create a more complex workflow with multiple types of steps including a manual approval step:
ts
const complexWorkflow = await AWS.Transfer.Workflow("complexWorkflow", {
Steps: [
{
Name: "CopyToS3",
Type: "Copy",
CopyStepDetails: {
Destination: {
Bucket: "my-transfer-bucket",
Key: "transferred-files/${transferId}/"
}
}
},
{
Name: "ManualApproval",
Type: "Approval",
ApprovalStepDetails: {
ApprovalMessage: "Please approve the transfer."
}
},
{
Name: "ProcessFiles",
Type: "Lambda",
LambdaStepDetails: {
FunctionName: "arn:aws:lambda:us-east-1:123456789012:function:processFilesFunction"
}
}
],
Description: "A complex workflow with multiple steps including manual approval."
});