如何使用AWS CDK查找现有的ApiGateway

亚历山大·鲍曼

我正在使用AWS CDK构建我的lambda,我想从lambda的CDK堆栈中注册端点。

我发现我可以使用fromRestApiId(scope,id,restApiId)获得一个现有的ApiGateway构造(这里的文档

所以目前这很好用:

    //TODO how to look up by ARN instead of restApiId and rootResourceId??
    const lambdaApi = apiGateway.LambdaRestApi
                                .fromRestApiAttributes(this, generateConstructName("api-gateway"), {
                                    restApiId: <API_GATEWAY_ID>,
                                    rootResourceId: <API_GATEWAY_ROOT_RESOURCE_ID>,
                                });

    const lambdaApiIntegration = new apiGateway.LambdaIntegration(lambdaFunction,{
        proxy: true,
        allowTestInvoke: true,
    })

    const root = lambdaApi.root;

    root.resourceForPath("/v1/meeting/health")
        .addMethod("GET", lambdaApiIntegration);

但是我想部署到许多AWS账户和许多地区。我不需要为每个帐户区域对对API_GATEWAY_IDAPI_GATEWAY_ROOT_RESOURCE_ID进行硬编码

是否有更通用的方式来获取现有的ApiGateway构造(例如,按名称或ARN)?

先感谢您。

Balu vyamajala

让我们以一种资源使用简单的Api

const restApi = new apigw.RestApi(this, "my-api", {
  restApiName: `my-api`,
});
const mockIntegration = new apigw.MockIntegration();
const someResource = new apigw.Resource(this, "new-resource", {
  parent: restApi.root,
  pathPart: "somePath",
  defaultIntegration: mockIntegration,
});
someResource.addMethod("GET", mockIntegration);

假设我们要在另一个堆栈中使用此api和资源,我们首先需要导出

new cdk.CfnOutput(this, `my-api-export`, {
  exportName: `my-api-id`,
  value: restApi.restApiId,
});

new cdk.CfnOutput(this, `my-api-somepath-export`, {
  exportName: `my-api-somepath-resource-id`,
  value: someResource.resourceId,
});

现在我们需要导入新堆栈

const restApi = apigw.RestApi.fromRestApiAttributes(this, "my-api", {
  restApiId: cdk.Fn.importValue(`my-api-id`),
  rootResourceId: cdk.Fn.importValue(`my-api-somepath-resource-id`),
});

并只需添加其他资源和方法。

const mockIntegration = new apigw.MockIntegration();
new apigw.Resource(this, "new-resource", {
  parent: restApi.root,
  pathPart: "new",
  defaultIntegration: mockIntegration,
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用AWS CDK查找现有的ApiGateway

来自分类Dev

使用CDK获取现有的CfnDBCluster

来自分类Dev

如何在AWS CDK中导入现有的VPC?

来自分类Dev

是否可以使用AWS CDK启动现有的ServiceCatalog产品?

来自分类Dev

如何在jupyterhub页面中使用python-selenium查找现有的HTML元素?

来自分类Dev

如何使用这个现有的JS代码示例基于数据属性查找元素?

来自分类Dev

Doom如何从现有的正弦查找表中确定其余弦查找表?

来自分类Dev

如何在AWS CDK中的API Gateway部署中使用现有阶段?

来自分类Dev

使用现有的线性编程工具查找所有替代基本解决方案

来自分类Dev

如何在AWS Elastic Container Service中使用现有的docker-compose.yml文件?

来自分类Dev

现有项目的AWS CDK Init

来自分类Dev

如何编写类似于现有的“查找/替换”对话框的eclipse插件

来自分类Dev

如何运行现有的AWS放大项目

来自分类Dev

如何从现有的AWS环境创建云形成模板?

来自分类Dev

AWS SAM:在模板中使用现有的SQS队列

来自分类Dev

如何停止现有的微调器

来自分类Dev

如何覆盖现有的.txt文件

来自分类Dev

如何更换现有的直放站

来自分类Dev

如何更新现有的.plist?

来自分类Dev

如何访问现有的NLog MemoryTarget

来自分类Dev

如何更新现有的Office插件?

来自分类Dev

如何跟踪现有的ansible项目

来自分类Dev

如何清除现有的setInterval?

来自分类Dev

如何停止现有的微调器

来自分类Dev

如何升级现有的graphenedb实例?

来自分类Dev

如何打开现有的LXD容器?

来自分类Dev

如何启动现有的 Django 项目?

来自分类Dev

如何修改现有的python文件

来自分类Dev

如何使用AWS CLI 2将更新的JAR上传到现有的Java Elastic Beanstalk实例?

Related 相关文章

热门标签

归档