2017-04-05 18 views
2

私はAWS API Gateway APIをOpen API仕様で指定します。この仕様には、クライアント開発者がAPIと統合する際に使用する多くのドキュメントが含まれています。しかし、Open API仕様に追加したドキュメントはAPI Gatewayからエクスポートされないため、消費することはできません。Open APIで指定されたドキュメントがAWS API Gatewayからエクスポートされない

すでに述べたように、私はJSONでOpen API仕様を使い始めます。 CloudFormation AWS::ApiGateway::RestApiリソースを使用して、これをAPIゲートウェイにインポートします。

この後、私は、ステージにAPIを導入し、最終的には、CLI AWSを使用して、このAPI +段階からドキュメントをエクスポートします。

aws apigateway get-export \ 
    --parameters extensions='documentation' \ 
    --rest-api-id abc123 \ 
    --stage-name api \ 
    --export-type swagger \ 
    ./docs.json 

このエクスポートは、このような重要なドキュメントのプロパティの多くが欠けているように見えますdescriptionpatternとなります。

私のAPIの例オープンAPIパラメータ:

{ 
    in: 'path', 
    name: 'service', 
    type: 'string', 
    required: true, 
    pattern: '^[-a-zA-Z0-9]+$', 
    description: 'Name of the Service (document) to retrieve.' 
} 

私が手の上に私がAWS-CLIコマンドでこれをエクスポートします。

{ 
    "name" : "service", 
    "in" : "path", 
    "required" : true, 
    "type" : "string" 
} 

descriptionpatternプロパティが両方剥奪されています実際にはこのパラメータのドキュメントの主要部分であるため、ドキュメントのエクスポートは悪いです。

AWS Console(Swagger + API Gateway拡張機能)で同じAPIをエクスポートすると、ドキュメントのエクスポートと同じパラメータ定義が取得されることにも言及しておきます。

統合がラムダプロキシに基づいていることに言及する価値があるかもしれません。

答えて

3

スワッガーテンプレートをインポートすると、API GatewayはAPI定義とそのドキュメントを別々の2つのエンティティに分割します。これにより、2つを個別に変更して展開することができます。

エクスポート機能は、ステージに展開されているものだけをエクスポートします。 Swaggerテンプレートをインポートすると、API定義とドキュメントパーツの両方がインポートされます。ただし、API定義のみをデプロイしたようです。エクスポートで使用可能になる前に、ドキュメントを明示的に公開する必要があります。

aws apigateway create-documentation-version \ --rest-api-id abc123 \ --documentation-version 1 \ --stage-name api

:あなたが指摘

enter image description here

と同じように、あなたはまた、ドキュメントの新しいバージョンを公開するためにCLIを使用することができます

0

APIゲートウェイチームから少しの助力を得て、これが解決されました。

私のワークフローにはステップがありませんでした。 は、APIをデプロイした後、ドキュメントを展開する必要があります:以前と表示される

aws apigateway create-documentation-version \ 
    --rest-api-id abc123 \ 
    --documentation-version 1 \ 
    --stage-name api 

これを実行した後、exportコマンドは、ドキュメントの代わりに、APIの定義を生成します。

関連する問題