我正在尝试使用Authorizer和ANY方法创建此API网关(gist)。
我遇到此错误:
The following resource(s) failed to create: [BaseLambdaExecutionPolicy, ApiGatewayDeployment]
我已经检查了从其他堆栈传递到此模板的参数,它们是正确的。我已经检查了此模板,它是有效的。
我的模板已使用"Runtime": "nodejs8.10"
从此template修改。
这是使用swagger 2
成功创建的同一堆栈(gist)。我只想将swagger 2
替换为AWS::ApiGateway::Method
。
2019年6月6日更新:
我尝试使用API网关堆栈的工作版本创建整个嵌套堆栈,然后使用与该嵌套堆栈中获取的参数不兼容的模板创建另一个API网关,然后得到: / p>
The REST API doesn't contain any methods (Service: AmazonApiGateway; Status Code: 400; Error Code: BadRequestException; Request ID: ID)
但是我确实在模板中AWS docs之后指定了方法:
"GatewayMethod": {
"Type" : "AWS::ApiGateway::Method",
"DependsOn": ["LambdaRole", "ApiGateway"],
"Properties" : {
"ApiKeyRequired" : false,
"AuthorizationType" : "Cognito",
"HttpMethod" : "ANY",
"Integration" : {
"IntegrationHttpMethod" : "ANY",
"Type" : "AWS",
"Uri" : {
"Fn::Sub": "arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${LambdaFunction.Arn}/invocations"
}
},
"MethodResponses" : [{
"ResponseModels": {
"application/json": "Empty"
},
"StatusCode": 200
}],
"RequestModels" : {"application/json": "Empty"},
"ResourceId" : {
"Fn::GetAtt": ["ApiGateway", "RootResourceId"]
},
"RestApiId" : {
"Ref": "ApiGateway"
}
}
},
答案 0 :(得分:1)
感谢@John的建议。我试图用有效的版本创建嵌套堆栈,并为无效的版本传递参数。
该错误的原因是:
CloudFormation可能会在创建方法之前尝试创建部署
来自巴拉吉的答案here。
这就是我所做的:
"methodANY": {
"Type": "AWS::ApiGateway::Method",
"Properties": {
"AuthorizationType": "COGNITO_USER_POOLS",
...},
"ApiGatewayDeployment": {
"Type": "AWS::ApiGateway::Deployment",
"DependsOn": "methodANY",
...