Amazon web services 在CloudFormation::APIGateway中,AWS和AWS_代理之间有什么区别?
在带有AWS::ApiGateway::Method-Integration:Type和Lambda后端的CloudFormation模板中,Amazon web services 在CloudFormation::APIGateway中,AWS和AWS_代理之间有什么区别?,amazon-web-services,aws-lambda,amazon-cloudformation,aws-api-gateway,Amazon Web Services,Aws Lambda,Amazon Cloudformation,Aws Api Gateway,在带有AWS::ApiGateway::Method-Integration:Type和Lambda后端的CloudFormation模板中,AWS和AWS\u PROXY之间有什么区别?刚才我不断地收到502个错误,并且意识到我需要用一个非常特殊格式的JSON响应进行响应。当我从控制台创建API网关时,我从未遇到过这个问题。它现在确实起作用了,但我想知道潜在的差异,这样我就可以学习了 以下是CF模板中的部分: VisitorCounterAPIGatewayRootMethod: 类型:AWS
AWS
和AWS\u PROXY
之间有什么区别?刚才我不断地收到502个错误,并且意识到我需要用一个非常特殊格式的JSON响应进行响应。当我从控制台创建API网关时,我从未遇到过这个问题。它现在确实起作用了,但我想知道潜在的差异,这样我就可以学习了
以下是CF模板中的部分:
VisitorCounterAPIGatewayRootMethod:
类型:AWS::ApiGateway::Method
特性:
授权类型:无
HttpMethod:GET
整合:
集成httpmethod:POST
类型:AWS#U PROXY#这是我的问题。AWS还是AWS_代理?
Uri:!附属的
-arn:aws:apigateway:${aws::Region}:lambda:path/2015-03-31/functions/${lambdaArn}/invocations
-拉姆达恩:!GetAtt VisitorCountLambda.Arn
资源ID:!GetAtt VisitorCounterAPIGateway.RootResourceId
RestApiId:!Ref访问者网关
下面是我的Lambda函数(Python3.7)的响应代码:
apiResponse={
“isBase64Encoded”:False,
“状态代码”:200,
“body”:json.dumps({
“visitorCount”:int(浮动(响应[“属性”][“金额”]))
})
}
谢谢。
AWS
和AWS\u PROXY
是API网关中的两种集成类型
仅用于lambda并且它是使用带有API网关的lambda的最简单方法。它:AWS_PROXY
可与任何AWS服务一起使用,包括lambda。设置更为复杂,通常在您想要将API网关与SQS或Kinesis或其他AWS服务集成时使用:AWS
AWS
集成时,您可以定义可以传递给lambda的额外参数(myParam
):
AWS_代理
MyApiResourceMethod:
Type: AWS::ApiGateway::Method
Properties:
AuthorizationType: None
HttpMethod: GET
Integration:
IntegrationHttpMethod: POST
Type: AWS_PROXY
Uri: !Sub >-
arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${LambdaArn1}/invocations
MethodResponses:
- ResponseModels: {"application/json": "Empty"}
StatusCode: 200
ResourceId: !Ref MyResource
RestApiId: !Ref MyRestApi
AWS
MyApiResourceMethod:
Type: AWS::ApiGateway::Method
Properties:
AuthorizationType: None
#AuthorizerId: String
HttpMethod: GET
Integration:
IntegrationHttpMethod: POST
- ResponseTemplates:
application/json: ""
StatusCode: 200
PassthroughBehavior: WHEN_NO_TEMPLATES
RequestTemplates:
application/json: |
{
"myParam": "$input.params('myParam')"
}
Type: AWS
Uri: !Sub >-
arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${LambdaArn2}/invocations
MethodResponses:
- ResponseModels: {"application/json": "Empty"}
StatusCode: 200
ResourceId: !Ref MyResource
RestApiId: !Ref MyRestApi