如何使用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

如何覆盖现有的.txt文件

来自分类Dev

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

来自分类Dev

如何更换现有的直放站

来自分类Dev

如何更新现有的.plist?

来自分类Dev

如何访问现有的NLog MemoryTarget

来自分类Dev

如何停止现有的微调器

来自分类Dev

如何更新现有的Office插件?

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

现有项目的AWS CDK Init

来自分类Dev

如何跟踪现有的ansible项目

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

使用CDK获取现有的CfnDBCluster

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何清除现有的setInterval?

来自分类Dev

如何停止现有的微调器

来自分类Dev

如何升级现有的graphenedb实例?

来自分类Dev

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

来自分类Dev

如何打开现有的LXD容器?

来自分类Dev

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

来自分类Dev

如何启动现有的 Django 项目?

来自分类Dev

如何修改现有的python文件

Related 相关文章

热门标签

归档