AWS Transfer Family调用Lambda身份提供者失败:403权限异常排查
问题排查:AWS Transfer Family调用Lambda身份提供者返回403 AccessDenied
问题现象
配置AWS Transfer Family使用Lambda作为自定义身份提供者时,测试身份验证返回以下错误,且Lambda从未被触发:
{ "Response": "{}", "StatusCode": 403, "Message": "Lambda function configuration error: AccessDeniedException" }
当前Lambda执行角色的权限策略如下:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "lambda:*" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "logs:CreateLogGroup", "Resource": "arn:aws:logs:eu-central-1:log.group.number:*" }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:eu-central-1:087690012243:log-group:/aws/lambda/name-of-my-lambda:*" } ] }
问题根源
你当前配置的是Lambda执行角色的权限(控制Lambda自身能访问哪些AWS资源),但缺少的是允许AWS Transfer Family服务调用该Lambda的资源策略——这是Lambda层面的权限配置,而非Transfer Family的角色设置。
解决步骤
- 打开AWS Lambda控制台,找到目标Lambda函数
- 切换到「配置」标签页,选择左侧菜单的「权限」
- 在「资源策略」区域,点击「添加权限」
- 按以下参数配置:
- 主体类型:选择「AWS服务」
- 服务:选择「Transfer Family」
- 操作:选择
lambda:InvokeFunction - 资源:保持默认(当前Lambda函数的ARN)
- 点击「保存」完成配置
额外验证点
- 确认Transfer Family服务器与Lambda函数处于同一AWS区域,跨区域调用会导致权限问题
- 检查Lambda执行角色中SecretsManager的权限是否正确(当前配置用
*没问题,后续锁权限时需调整为目标密钥ARN) - 测试身份验证时使用正确的用户名/密码,避免因业务逻辑错误混淆权限问题
内容的提问来源于stack exchange,提问作者BetaRide
相关产品推荐
相关产品推荐

