gpt4 book ai didi

aws-lambda - AWS SAM 模板/cloudformation 没有为方法定义集成(服务 : AmazonApiGateway

转载 作者:行者123 更新时间:2023-12-02 03:02:56 27 4
gpt4 key购买 nike

我正在尝试部署 lambda 函数和 API 网关。我使用 AWS CLI 创建一个 .net core Web API 项目。仅部署该函数并在 AWS Web 控制台上手动创建 API 网关和资源确实有效。

如果我在模板中包含 API 网关,则在通过 Web 控制台或 CLI 部署 SAM 包后,我会收到以下错误:

“没有为方法定义集成(服务:AmazonApiGateway;状态代码:400;错误代码:BadRequestException;请求 ID:....)”

这里有什么错误或遗漏吗?

SAM 打包命令:

sam package  --template-file  sam-profile.yaml --output-template-file serverless-output.yaml  --s3-bucket testapp-fewtfvdy-lambda-deployments

SAM 模板:

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
ProfileFunction:
Type: AWS::Serverless::Function
Properties:
Handler: testapp.Profile.NetCoreVS::testapp.Profile.NetCoreVS.LambdaEntryPoint::FunctionHandlerAsync
Runtime: dotnetcore2.0
MemorySize : 128
Timeout : 5
CodeUri: bin/Release/netcoreapp2.0/publish
Events:
ProfileAny:
Type: Api
Properties:
RestApiId: !Ref ProfileApiGateway
Path: /profile/v1
Method: GET

ProfileApiGateway:
DependsOn: ProfileFunction
Type: 'AWS::Serverless::Api'
Properties:
StageName: Prod
DefinitionUri: './swagger.yaml'

swagger.yaml:

---
swagger: '2.0'
info:
version: v1
title: ProfileAPI
paths:
"/profile/v1":
get:
tags:
- Values
operationId: ProfileV1Get
consumes: []
produces:
- text/plain
- application/json
- text/json
parameters: []
responses:
'200':
description: Success
schema:
type: array
items:
type: string
definitions: {}

.net核心方法:

[Route("profile/v1")]
public class ValuesController : Controller
{
// GET api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2","value_new3" };
}


}

最佳答案

您的 swagger 定义缺少 x-amazon-apigateway-integration

这应该为您提供集成层:

---
swagger: '2.0'
info:
version: v1
title: ProfileAPI
paths:
"/profile/v1":
get:
tags:
- Values
operationId: ProfileV1Get
consumes: []
produces:
- text/plain
- application/json
- text/json
parameters: []
responses:
'200':
description: Success
schema:
type: array
items:
type: string
x-amazon-apigateway-integration:
httpMethod: post
type: aws_proxy
uri:
Fn::Sub: arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${ProfileFunction.Arn}/invocations
definitions: {}

请注意,x-amazon-apigateway-integration 的 httpMethod 始终为 POST,因为无论您的 API 路由使用什么方法,API Gateway 始终向 Lambda 发出 POST 请求。

关于aws-lambda - AWS SAM 模板/cloudformation 没有为方法定义集成(服务 : AmazonApiGateway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50883321/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com