重用现有的 API 网关(在另一个堆栈中创建)并向其添加资源和方法。更新部署阶段

问题描述 投票:0回答:0

我们的 ApiGateway 有一个 CDK,它有一个根资源路径。我们有很多 lambda 函数:我们希望 Lambda-cdk 将资源路径添加到现有资源路径,无论它们是由这个 lambda 的 CDK 堆栈创建的,还是另一个 lambda 的 CDK 堆栈创建的。

例如/user, /account 等

如果另一个 Stack 创建了一个 Api Deployment,ApiGateway Stage 应该指向这些新的 deployments

用例 CdkApi网关

添加资源路径 /v1 部署:真 阶段:DEV


问题: 我们可以使用 (python cdk) 导入 API 网关 api = apigateway.RestApi.from_rest_api_attributes(self, 'company_api_id-dev', rest_api_id=api_gateway_id, root_resource_id=api_gateway_root_id) `

新添加的资源反映在 API 网关控制台的“资源”中,但不反映在已部署的阶段“dev”中。


实现此目的的任何方法,因为我不想为每个服务及其资源创建不同的 API 网关,并像“services.company.com/user/”“services.company.com/account/”一样使用它


试过: 如 AWS CDK 文档中所述,添加新部署以及包含依赖项仍然无法更新阶段。

`       test_resource = root_resource.add_resource("test1")

        deployment = apigateway.Deployment(self, f'root-deploy-{env_name}', api=api)
        deployment.node.add_dependency(test_resource)
        deployment.add_to_logical_id(timestamp)`

我是否也必须创建一个新的舞台?虽然我想要它在现有阶段。试过如下:

apigateway.Stage(self, f'user-stage-{env_name}', deployment=deployment, stage_name=env_name) 

但是它抛出错误提到“开发”阶段已经存在,这是有道理的。


参考文献: https://github.com/aws/aws-cdk/issues/12755 https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.aws_apigateway/RestApiAttributes.html

amazon-web-services aws-api-gateway aws-cdk staging
© www.soinside.com 2019 - 2024. All rights reserved.