我们的 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