You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 Lambda Minimal API部署至AWS失败,请求排查

.NET AWS Lambda Minimal API部署失败(HTTP API配置问题修复)

你的serverless.template存在几个关键配置错误,导致CloudFormation部署失败,以下是问题分析和修正后的配置:

核心问题点

  1. CORS配置多余单引号
    AllowHeaders、AllowMethods、AllowOrigin中的值被错误包裹单引号,这会导致CloudFormation解析CORS规则时出错,触发API部署失败。
  2. 未明确指定HTTP API类型
    AWS::Serverless::Api默认创建REST API,必须显式添加ApiType: HTTP属性来指定创建HTTP API,否则不符合你的需求,也会引发资源不匹配问题。
  3. HTTP API事件未关联API资源
    Lambda的HttpApi事件未指定关联的ApiId,无法正确绑定到前面定义的HttpApi资源,导致函数创建失败。
  4. 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:18:20