部署AWS SFTP自定义身份提供商模板遇CreateServer错误求助
排查CloudFormation部署Classic Cognito SFTP模板时的「IF: CreateServer error」问题
常见原因及修复方案
1. IAM权限不足
- 部署模板的IAM身份(用户/角色)缺少创建Transfer Server、Cognito资源、Lambda函数等核心资源的权限。
- 修复:为执行部署的身份添加包含以下权限的IAM策略:
transfer:CreateServercognito-idp:CreateUserPool、cognito-idp:CreateUserPoolClientlambda:CreateFunction、lambda:AddPermissioniam:CreateRole、iam:AttachRolePolicycloudformation:*(部署基础权限)
2. Cognito资源命名冲突
- 模板默认指定的Cognito用户池或应用客户端名称,已在当前AWS区域存在。
- 修复:修改模板中
CognitoUserPoolName、CognitoUserPoolClientName参数的默认值,使用唯一标识后重新部署。
3. Transfer服务区域限制
- 部分AWS区域暂不支持Transfer Family的Cognito自定义身份提供商功能。
- 修复:切换到支持该功能的区域(如us-east-1、eu-west-1等)重新部署模板。
4. 模板参数配置错误
- 未正确填写必填参数(如VPC配置、SSH密钥名称),或参数格式不符合要求。
- 修复:
- 若选择VPC部署,需提供合法的VPC ID、子网ID和安全组ID
- SSH密钥名称必须是当前区域已存在的EC2密钥对名称
- 确认所有必填参数均已正确输入
5. Lambda身份验证函数创建失败
- 模板中的Lambda函数因权限不足、代码逻辑错误无法创建,导致依赖它的Transfer Server创建失败。
- 修复:
- 查看CloudFormation事件日志,定位Lambda创建失败的具体原因
- 检查Lambda的IAM角色权限,确保具备
cognito-idp:AdminInitiateAuth、cognito-idp:AdminRespondToAuthChallenge等Cognito API调用权限 - 验证Lambda代码返回格式是否符合Transfer服务的身份提供商规范
6. 模板版本或语法问题
- 手动复制模板时出现语法错误,或使用的模板版本与当前AWS服务版本不兼容。
- 修复:
- 直接从AWS官方渠道获取最新版Classic Cognito模板,避免手动复制引入错误
- 检查模板中
Fn::If条件逻辑,确认CreateServer相关的参数传递符合条件判断规则
快速排查步骤
- 查看CloudFormation控制台的「事件」标签,获取
CreateServer失败的详细错误提示(这是定位问题最直接的方式) - 检查Transfer服务控制台,若已有部分资源创建,删除后重新部署
- 使用AWS CLI执行部署命令,获取更详尽的错误输出:
aws cloudformation create-stack --stack-name YOUR_STACK_NAME --template-body file://path/to/template.yml --parameters ParameterKey=KeyName,ParameterValue=YOUR_KEY_NAME
内容的提问来源于stack exchange,提问作者K.C.
相关产品推荐
相关产品推荐

