【问题标题】:How to check if table is already, exists using AWS CDK?如何使用 AWS CDK 检查表是否已经存在?
【发布时间】:2022-12-06 20:55:17
【问题描述】:

我正在使用 aws cdk 配置资源。 在配置 dynamodb 表(名称为“cars”)之前,我想检查是否没有这样的表(参见代码示例)。

我怎样才能做到这一点?

import { RemovalPolicy } from "aws-cdk-lib";
import { AttributeType, BillingMode, StreamViewType, Table} from "aws-cdk-lib/aws-dynamodb";
import { Construct } from "constructs";

export class MyTables extends Construct {
  public readonly cars: Table;

  constructor(scope: Construct, id: string) {
    super(scope, id);
    // if dynamo table with the name 'cars' is not exist <----- How can I check this?
    this.cars = this.createTable('cars'); // this is my own function that creates a table with the name 'cars'
  }
}

【问题讨论】:

    标签: typescript amazon-web-services amazon-dynamodb aws-cdk


    【解决方案1】:

    在我看来,您以错误的方式使用 CDK。在创建资源时,您不必知道资源是否已经存在。

    例如,假设您有一个汽车经销商应用程序,并且您希望使用 IaC(在本例中为 CDK)管理其资源。您将确保 CDK 堆栈负责所有应用程序资源,而不仅仅是一个子组件。

    您可以使用嵌套堆栈来单独管理应用程序的一小部分,也可以将现有资源导入堆栈。

    我认为您不应该处于需要有条件地检查资源是否存在的情况。

    话虽如此,如果您的用例需要它,我相信您需要在使用 Lambda 创建表的地方使用 Custom Resource,因为它将能够调用 DescribeTable 以了解它是否事先存在.

    【讨论】:

    • 这是一个很好的观点。公平地说,我这样做是为了加快 devops 过程,而不是为了构建我的代码。所以,我正在部署我的堆栈,有时会出现逻辑错误。现在我需要再次部署代码。但在再次部署代码之前,我需要销毁它,因为该表已经存在。我只是想跳过 cdk deploy 之前的 cdk destroy。有任何想法吗?
    猜你喜欢
    • 1970-01-01
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 2015-05-05
    • 2019-08-21
    • 2019-03-19
    • 1970-01-01
    相关资源
    最近更新 更多