Amazon web services 路径前的API网关云形成方法
我正在为api网关编写一个cloudformation,我得到了资源路径和方法的排序问题 我想要的是让path/hi在上面一级,而方法在下面一级 这是我编写的snipet of cloudformation脚本,用于生成此排除权限、lambda、策略等,我也知道一些用于执行此操作的工具,但它们不适用于我们的情况Amazon web services 路径前的API网关云形成方法,amazon-web-services,amazon-cloudformation,Amazon Web Services,Amazon Cloudformation,我正在为api网关编写一个cloudformation,我得到了资源路径和方法的排序问题 我想要的是让path/hi在上面一级,而方法在下面一级 这是我编写的snipet of cloudformation脚本,用于生成此排除权限、lambda、策略等,我也知道一些用于执行此操作的工具,但它们不适用于我们的情况 MyAPI: Type: AWS::ApiGateway::RestApi Properties: Name: "TestAPI" Endpoi
MyAPI:
Type: AWS::ApiGateway::RestApi
Properties:
Name: "TestAPI"
EndpointConfiguration:
Types:
- REGIONAL
ApiGatewayResourceHi:
Type: "AWS::ApiGateway::Resource"
Properties:
ParentId:
Fn::GetAtt: ["MyAPI", "RootResourceId"]
PathPart: "hi"
RestApiId:
Ref: "MyAPI"
HiMethodGet:
Type: "AWS::ApiGateway::Method"
Properties:
RestApiId: !Ref MyAPI
ResourceId: !GetAtt
- MyAPI
- RootResourceId
HttpMethod: GET
AuthorizationType: NONE
Integration:
IntegrationHttpMethod: "POST"
Type: "AWS_PROXY"
Uri: !Join ["", ["arn:", !Ref "AWS::Partition", ":apigateway:", !Ref "AWS::Region", ":lambda:path/2015-03-31/functions/", !GetAtt ["HiLambdaFunction", "Arn"], "/invocations"]]
DependsOn:
- ApiGatewayResourceHi
ApiGatewayDeployment1:
Type: "AWS::ApiGateway::Deployment"
Properties:
RestApiId:
Ref: "MyAPI"
StageName: "dev"
DependsOn:
- HiMethodGet
一切似乎都很好,我可以调用并点击端点,它的响应也很好。这只是排序问题,因为我们的一些其他api网关是使用path before方法构建的,尽管它们是手动创建的。也许这是正确的方法,而且很好?如果有人在我的脚本或两种布局之间的建议中发现问题,我将非常感激
谢谢。您正在以图形方式描述希望API在控制台中的外观,因为GET位于/hi下方。控制台显示的是GET方法附加到根路径,并且根路径有一个名为hi的资源,该资源没有方法。我假设您希望hi资源有一个GET方法,它将按照您所描述的那样显示,并且看起来像是一个逻辑api设计 按原样创建它的原因是,您已将该方法的资源设置为RootResourceId
您想做的是将资源设置为Hi方法。我让它以我想要的方式工作,使用@TheClassic建议它不工作,但它帮助确定了问题所在,这是我必须为它工作所做的更改
ApiGatewayResourceHi:
Type: "AWS::ApiGateway::Resource"
Properties:
ParentId:
Fn::GetAtt: ["MyAPI", "RootResourceId"]
PathPart: "hi"
RestApiId:
Ref: "MyAPI"
HiMethodGet:
Type: "AWS::ApiGateway::Method"
Properties:
RestApiId: !Ref MyAPI
ResourceId: !Ref ApiGatewayResourceHi
......
这不太管用,如果我将资源设置为Hi方法,则会出现错误,但这有助于确定问题所在。我要做的是引用我为该方法声明的资源。谢谢