, так как я использую aws -cdk для определения aws стеков, я сталкиваюсь здесь с некоторыми ограничениями и не знаю, как это решить.
Прежде всего, есть не -изменяемый лимит на ресурсы 200 на стек. это означает, что каждый стек, который используется в облачной информации, ограничен 200.
В течение длительного времени это не было проблемой, так как было легко создать стек, содержащий несколько разных стеков разного использования (S3, ApiGateway, IoT и т. Д. c.)
Теперь я сталкиваюсь с проблемой, что APIGatewayStack (для RestApi) превышает ограничение в 200 ресурсов и я больше не могу развертываться.
Я уже отделил лямбды от конечных точек, поэтому у меня нет никакого потенциала получить здесь некоторые ресурсы.
Моя идея заключалась в создании CfnOutput для RestApi или его root Resourse, поэтому я может создать любой объект Restapi с
подход № 1 - создать RestApi из RestApiId
Stack # 1
const outputGm = new CfnOutput(this, 'RestApiGatewayId', {
description: 'RestApiGatewayId',
value: api.restApiId,
// This Name must be unique
exportName: 'RestApiGatewayId',
});
Stack # 2
const api = RestApi.fromRestApiId(this, 'rest-api-extension', 'RestApiGatewayId');
проблема здесь в том, что API теперь относится к типу IRestApi, который не может использоваться для дальнейших необходимых модификаций, таких как
const models = new ModelDefinitions.ModelDefinitions(api);
// Argument of type 'IRestApi' is not assignable to parameter of type 'RestApi'.
ИЛИ
const notifications = api.root.addResource('notifications');
// Property 'root' does not exist on type 'IRestApi'.
Подход № 2 - создать вывод root Ресурс
К сожалению, создание RestApi с fromRestApiId
возвращает объект IRestApi, который не содержит всех необходимых свойств, чтобы использовать его для создания ресурса:
const api = RestApi.fromRestApiId(this, 'rest-api-extension', 'RestApiGatewayId');
const resourceProps: ResourceProps = {
parent: api,
/*
* Type 'IRestApi' is missing the following properties from type 'IResource': restApi, resourceId, path, resourceForPath, and 5 more.
*/
pathPart: 'root',
};
const root = new Resource(apiGWStack, 'root-node', resourceProps);
// apiGWStack is the original stack which i am passing to the extension via:
const apiGatewayExtensionStack = new ApiGatewayExtensionStack(app, 'ApiGatewayExtensionStack', apiGWStack, { env: environment });
Чего мне здесь не хватает ? Я не хочу использовать второй (или третий в будущем) отдельный Rest-Api, потому что он имеет много конечных точек.
Видите ли вы здесь какое-либо решение по этому поводу? Как вы справляетесь с Big Api Structures на AWS?
Спасибо за помощь!