Piszę cloudformation dla bramy interfejsu API, otrzymuję ten problem z porządkowaniem ze ścieżką i metodą zasobów.
To, czego chcę, to mieć ścieżkę (/ hi) poziom powyżej i metodę GET, aby znajdować się poniżej tego.
To jest fragment skryptu cloudformation, który napisałem, aby to wygenerować (wykluczone zezwolenie, lambda, zasady itp.). Znam również niektóre narzędzia do tego, ale nie są one zatwierdzone do naszej sytuacji.
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
Wydaje się, że wszystko działa dobrze, mogę wywołać i trafić do punktu końcowego, a odpowiedź jest dobra. Chodzi tylko o problem z kolejnością, ponieważ niektóre z naszych innych bram interfejsu API mają strukturę ze ścieżką przed metodą (chociaż są tworzone ręcznie). Może to jest właściwa droga i jest w porządku? Jeśli ktoś zauważy problem w moim skrypcie lub sugestię między dwoma układami, byłbym naprawdę wdzięczny.
Dzięki.
2 odpowiedzi
Opisujesz graficznie, jak ma wyglądać API w konsoli, jako że „GET” znajduje się poniżej „/ hi”. Konsola pokazuje, że metoda „GET” jest dołączona do ścieżki głównej, a ścieżka główna ma zasób o nazwie „hi”, który nie ma metody. Zakładam, że chcesz, aby zasób „hi” miał metodę GET, która będzie wyświetlana zgodnie z opisem, a także wygląda jak logiczny projekt interfejsu API.
Powodem, dla którego został utworzony bez zmian, jest to, że ustawiłeś zasób metody jako RootResourceId.
Zamiast tego chcesz ustawić zasób jako metodę „Cześć”.
Sprawiłem, że działa tak, jak chciałem, z sugestią @TheClassic nie zadziałało, ale pomogło wskazać problem, są to zmiany, które musiałem wprowadzić, aby działało.
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
......
Podobne pytania
Nowe pytania
amazon-web-services
Amazon Web Services (AWS) to chmura publiczna: IaaS (infrastruktura jako usługa) i SaaS (oprogramowanie jako usługa) dostarczane przez Amazon. Pytania dotyczące programowania i architektury są na temat. Ogólną pomoc dotyczącą serwera można uzyskać pod adresem https://serverfault.com. Znacznik AWS jest rzadko używany samodzielnie i zwykle będzie używany z innymi tagami w celu dokładniejszego określenia tematu pytania.