关联AWS Transfer Family SFTP服务器的工作流执行第一步后停止的原因
问题诊断与修复方案
1. COPY步骤目标路径缺失文件名
工作流的COPY步骤中,DestinationFileLocation的Key仅指定了目录${transfer:userName}/processed,未包含原始文件名。Transfer Family需要明确目标文件的完整路径,否则无法完成复制操作,导致COPY步骤失败,后续DELETE步骤因工作流中断而不执行。
修复方式:修改COPY步骤的Key为带文件名的路径:
"Key": "${transfer:userName}/processed/${transfer:fileName}"
2. 角色策略变量不匹配Transfer Family内置规范
当前策略使用的${SourceBucketName}、${DestinationBucketName}等变量并非Transfer Family工作流支持的内置变量,无法被正确解析,导致权限校验失败,COPY和DELETE步骤因无权限执行而中断。
Transfer Family工作流支持的相关内置变量包括:
${transfer:bucketName}:源文件所在S3桶名${transfer:objectKey}:源文件的S3对象键${transfer:userName}:SFTP用户名${transfer:fileName}:源文件名
修复后的策略示例:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CopyRead", "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::${transfer:bucketName}/${transfer:objectKey}" }, { "Sid": "CopyWrite", "Effect": "Allow", "Action": ["s3:PutObject"], "Resource": "arn:aws:s3:::${transfer:userName}/processed/${transfer:fileName}" }, { "Sid": "CopyList", "Effect": "Allow", "Action": "s3:ListBucket", "Resource": [ "arn:aws:s3:::${transfer:bucketName}", "arn:aws:s3:::${transfer:userName}" ] }, { "Sid": "Delete", "Effect": "Allow", "Action": ["s3:DeleteObject"], "Resource": "arn:aws:s3:::${transfer:bucketName}/${transfer:objectKey}" }, { "Sid": "Custom", "Effect": "Allow", "Action": ["lambda:InvokeFunction"], "Resource": ["arn:aws:lambda:eu-west-3:502802710160:function:test-function"] } ] }
3. COPY步骤目标桶配置与实际不符
用户说明文件存储在bucket_name_same_as_user_name/unprocessed,但COPY步骤的目标桶硬编码为test-bucket,与实际存储桶不一致,会导致复制路径错误或权限校验失败。
修复方式:将目标桶改为与用户名一致的桶,使用变量替代硬编码值:
"Bucket": "${transfer:userName}"
额外检查项
- 查看Lambda执行日志:确认Lambda函数返回成功响应(如
{"statusCode": 200}),若返回错误状态码,会导致工作流终止后续步骤。 - 查看工作流执行日志:在AWS Transfer Family控制台查看COPY步骤的具体失败原因(权限不足、路径错误等),定位问题细节。
内容的提问来源于stack exchange,提问作者cuzureau
相关产品推荐
相关产品推荐

