0

JSONスキーマを使用してAPIゲートウェイモデルを作成し、それをServerlessフレームワークを使用して展開しています。 this pageによれば、問題はこれがAPIのIDを知る必要があることであるAPI IDを使用せずにAPIゲートウェイで外部モデルを参照する

"$ref": "https://apigateway.amazonaws.com/restapis/{restapi_id}/models/{model_name}" 

を使用して別のファイル(ただし、同じAPIで)で定義されていたモデルを参照することが可能です。私の場合、モデルはいくつかのAPIにまたがって再利用されます。各APIは独自のIDを持っているため、モデルのIDをハードコードするのは意味がありません。

API IDを使用せずに外部モデルを参照する方法や、デプロイメント中にモデルにAPI IDを挿入する方法はありますか?

答えて

0

モデルをエクスポートして、後で使用できるように設定ファイルに保存することができます。これは必ずしもあなたが望むものではありませんが、標準モデルに対するバージョン管理を提供し、サービス間でそれらを使用できるようにします。 serverless.ymlで

参照models.ymlで

custom: 
    documentation: 
    models: ${file(./conf/api/methodResponse/models.yml):models} 

plugins: 
    - serverless-aws-documentation 

models: 
    - 
    name: EmptyModel 
    contentType: "application/json" 
    schema: 
     "$schema": "http://json-schema.org/draft-04/schema#" 
     title: "Empty/Passthrough Response" 
     type: object 

ノート "$スキーマ" フィールドがオプションであると考えられるというserverless-aws-documentationを使用して

例、少なくとも、私のテストは展開され、それなしで実行されました。私はAWSのテンプレートがそれを使用しているので、それを保持しました。

これにより、モデルをローカルで制御できます。これは、スタックをまたいでモデルを同期させるための、あなたの最後の余分な作業を意味します。

参照で別のサービスで既存のモデルを使用し、でない場合はを再デプロイすることで、それが可能かどうかは完全にはわかりません。 CloudFormation Modelオブジェクトは、一度に1つのApiGatewayRestApiオブジェクトに関連付けられるモデル名によってのみ識別されるようです。同じモデル名をスタックに配置しようとすると、それはうれしいことですが、古いモデルは変わりません。私が行方不明になっているかもしれませんが、?

関連する問題