.NET 8 Lambda Minimal API部署至AWS失败,请求排查
.NET AWS Lambda Minimal API部署失败(HTTP API配置问题修复)
你的serverless.template存在几个关键配置错误,导致CloudFormation部署失败,以下是问题分析和修正后的配置:
核心问题点
- CORS配置多余单引号
AllowHeaders、AllowMethods、AllowOrigin中的值被错误包裹单引号,这会导致CloudFormation解析CORS规则时出错,触发API部署失败。 - 未明确指定HTTP API类型
AWS::Serverless::Api默认创建REST API,必须显式添加ApiType: HTTP属性来指定创建HTTP API,否则不符合你的需求,也会引发资源不匹配问题。 - HTTP API事件未关联API资源
Lambda的HttpApi事件未指定关联的ApiId,无法正确绑定到前面定义的HttpApi资源,导致函数创建失败。 - Outputs中URL解析方式错误
原模板直接在字符串中使用${}变量,JSON格式的CloudFormation模板需要用Fn::Sub来正确解析变量,否则生成的URL会是无效占位符。
修正后的完整配置
{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::Serverless-2016-10-31", "Description": "Admin API for USERS", "Resources": { "HttpApi": { "Type": "AWS::Serverless::Api", "Properties": { "ApiType": "HTTP", "StageName": "Prod", "BinaryMediaTypes": [ "*~1*" ], "Cors": { "AllowHeaders": [ "Content-Type", "Authorization", "X-Amz-Date", "X-Amz-Security-Token" ], "AllowMethods": [ "GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS" ], "AllowOrigin": "*" } } }, "AdminUsers": { "Type": "AWS::Serverless::Function", "Properties": { "Handler": "Project.Lambda.Admin.Users", "Runtime": "dotnet8", "CodeUri": "", "MemorySize": 512, "Timeout": 30, "Role": "arn:aws:iam::{text}:role/Lambda-Role", "Policies": [ "AWSLambda_FullAccess" ], "Events": { "ProxyResource": { "Type": "HttpApi", "Properties": { "ApiId": { "Ref": "HttpApi" }, "Path": "/{proxy+}", "Method": "ANY" } } } } } }, "Outputs": { "ApiURL": { "Description": "API endpoint URL for Prod environment", "Value": { "Fn::Sub": "https://${HttpApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/" } } } }
额外注意事项
- 替换
Role中的{text}为你的AWS账号ID,否则IAM角色无法正确引用。 - Visual Studio发布时,
CodeUri会自动填充为编译后的代码包路径,无需手动修改。 - 如果部署仍失败,登录AWS控制台查看CloudFormation栈的事件日志,可以获取更具体的错误信息(比如IAM权限不足、代码包路径异常等)。
内容的提问来源于stack exchange,提问作者Minority
相关产品推荐
相关产品推荐

