AWS CDK Api 网关模型参考依赖 - 模型参考必须采用规范形式
AWS CDK Api Gateway Models Ref Dependency - Model reference must be in canonical form
当其中一个模型引用另一个模型时,我正在尝试使用 aws CDK 同时添加多个模型。
例如:
"Gender": {
"contentType": "application/json",
"modelName": "GenderModel",
"schema": {
"type": "string",
"enum": [
"Not Specified",
"Male",
"Female",
"Non-Binary"
],
"schema": "http://json-schema.org/draft-04/schema#",
"title": "GenderModel"
}
},
和
"Requirements": {
"contentType": "application/json",
"modelName": "RequirementsModel",
"schema": {
"type": "object",
"properties": {
"gender": {
"ref": "https://apigateway.amazonaws.com/restapis/${Token[TOKEN.791]}/models/GenderModel"
}
},
"required": [
"gender",
],
"additionalProperties": false,
"schema": "http://json-schema.org/draft-04/schema#",
"title": "RequirementsModel"
}
},
当我部署时失败
Model reference must be in canonical form
据我所知,这失败了,因为 GenderModel
不存在。如果我先在堆栈中添加 GenderModel
,然后添加 RequirementsModel
并再次部署,它就可以正常工作,因为 GenderModel
是先前创建的。如果我想同时创建这两个模型,它将失败。
我试图确保 addModel
调用的顺序是正确的,但它似乎不起作用。
找到解决方案
看来您必须添加明确指定的依赖项。
modelB.node.addDependency(modelA)
这将避免错误并以正确的顺序添加模型
问题是 https://apigateway.amazonaws.com/restapis/${Token[TOKEN.791]}/models/GenderModel
,特别是 ${Token[TOKEN.791]}
部分。当 API 未创建时,在 CloudFormation 合成时,id 未知并使用占位符值 - https://docs.aws.amazon.com/cdk/latest/guide/tokens.html
您可以使用Ref
本征函数通过引用
组成模型
const getModelRef = (api: RestApi, model: Model): string =>
Fn.join(
'',
['https://apigateway.amazonaws.com/restapis/',
api.restApiId,
'/models/',
model.modelId]);
当其中一个模型引用另一个模型时,我正在尝试使用 aws CDK 同时添加多个模型。 例如:
"Gender": {
"contentType": "application/json",
"modelName": "GenderModel",
"schema": {
"type": "string",
"enum": [
"Not Specified",
"Male",
"Female",
"Non-Binary"
],
"schema": "http://json-schema.org/draft-04/schema#",
"title": "GenderModel"
}
},
和
"Requirements": {
"contentType": "application/json",
"modelName": "RequirementsModel",
"schema": {
"type": "object",
"properties": {
"gender": {
"ref": "https://apigateway.amazonaws.com/restapis/${Token[TOKEN.791]}/models/GenderModel"
}
},
"required": [
"gender",
],
"additionalProperties": false,
"schema": "http://json-schema.org/draft-04/schema#",
"title": "RequirementsModel"
}
},
当我部署时失败
Model reference must be in canonical form
据我所知,这失败了,因为 GenderModel
不存在。如果我先在堆栈中添加 GenderModel
,然后添加 RequirementsModel
并再次部署,它就可以正常工作,因为 GenderModel
是先前创建的。如果我想同时创建这两个模型,它将失败。
我试图确保 addModel
调用的顺序是正确的,但它似乎不起作用。
找到解决方案
看来您必须添加明确指定的依赖项。
modelB.node.addDependency(modelA)
这将避免错误并以正确的顺序添加模型
问题是 https://apigateway.amazonaws.com/restapis/${Token[TOKEN.791]}/models/GenderModel
,特别是 ${Token[TOKEN.791]}
部分。当 API 未创建时,在 CloudFormation 合成时,id 未知并使用占位符值 - https://docs.aws.amazon.com/cdk/latest/guide/tokens.html
您可以使用Ref
本征函数通过引用
const getModelRef = (api: RestApi, model: Model): string =>
Fn.join(
'',
['https://apigateway.amazonaws.com/restapis/',
api.restApiId,
'/models/',
model.modelId]);