AWS AppSync Lambda Authorizer SAM部署后未触发调用问题咨询
根因定位
你缺失的配置是针对特定AppSync API的Lambda调用权限绑定:
你当前仅在Lambda部署栈中配置了面向所有AppSync服务的通用调用权限,AWS现阶段出于安全限制,该类通用权限已无法支持Lambda授权器的调用校验。你在控制台手动重新保存Lambda ARN时,后台会自动为当前操作的AppSync API在Lambda的资源策略中追加专属调用权限,因此功能会恢复正常。
解决方案
你需要在部署AppSync的CloudFormation/SAM栈中新增AWS::Lambda::Permission资源,将调用权限与你创建的AppSync API明确绑定,示例配置如下:
Resources: # 你原有AppSync API的定义,此处仅为示例,请保留你原有配置 AppSyncGraphQLApi: Type: AWS::AppSync::GraphQLApi Properties: Name: <你的API名称> AdditionalAuthenticationProviders: - LambdaAuthorizerConfig: AuthorizerUri: !Ref <你从SSM拉取的Lambda ARN参数> IdentityValidationExpression: ^Bearer .*$ # 按你的header规则配置 AuthenticationType: AWS_LAMBDA # 其他原有配置保持不变 ... # 新增的专属调用权限配置 AppSyncLambdaAuthorizerPermission: Type: AWS::Lambda::Permission Properties: FunctionName: !Ref <你从SSM拉取的Lambda ARN参数> Action: lambda:InvokeFunction Principal: appsync.amazonaws.com SourceArn: !GetAtt AppSyncGraphQLApi.Arn
补充注意事项
- 你原Lambda栈中定义的通用
LambdaPermission可以删除,避免权限过宽 - 如果Lambda和AppSync归属不同AWS账号,还需要额外在AppSync侧配置允许调用该Lambda的IAM权限
- 请确认
LambdaAuthorizerConfig中的IdentityValidationExpression正则规则与你传入的authorizationheader格式匹配,不符合的请求会被AppSync直接拦截返回BadRequestException,不会触发Lambda调用
内容的提问来源于stack exchange,提问作者nbpeth
相关产品推荐
相关产品推荐

