Java 创建RDS实例时收到通知

Java 创建RDS实例时收到通知,java,amazon-web-services,aws-sdk,amazon-rds,Java,Amazon Web Services,Aws Sdk,Amazon Rds,我正在使用AWS SDK for Java 假设我创建了一个RDS实例,如AWS文档中所述 AmazonRDS client = AmazonRDSClientBuilder.standard().build(); CreateDBInstanceRequest request = new CreateDBInstanceRequest().withDBInstanceIdentifier("mymysqlinstance").withAllocatedStorage(5) .w

我正在使用AWS SDK for Java

假设我创建了一个RDS实例,如AWS文档中所述

AmazonRDS client = AmazonRDSClientBuilder.standard().build();
CreateDBInstanceRequest request = new CreateDBInstanceRequest().withDBInstanceIdentifier("mymysqlinstance").withAllocatedStorage(5)
        .withDBInstanceClass("db.t2.micro").withEngine("MySQL").withMasterUsername("MyUser").withMasterUserPassword("MyPassword");
DBInstance response = client.createDBInstance(request);
如果我在发出请求后立即调用
instance.getEndpoint()
,它将向我返回
null
,因为AWS仍在创建数据库。我需要知道这个端点何时可用,但我不知道如何做到这一点


是否有一种方法可以使用AWS SDK在最终创建实例时收到通知?

您可以使用RDS SNS通知:

订阅亚马逊RDS事件通知 你可以创建一个亚马逊 RDS事件通知订阅,以便在 事件发生在给定的数据库实例、数据库快照、数据库安全组、, 或DB参数组。创建订阅的最简单方法是 使用RDS控制台。如果选择创建事件通知 使用CLI或API订阅时,必须创建一个Amazon简单 通知服务主题,并使用Amazon订阅该主题 SNS控制台或亚马逊SNS API。您还需要保留亚马逊 主题的资源名称(ARN),因为它在提交时使用 CLI命令或API操作。有关创建SNS主题的信息,请参见 订阅后,请参见亚马逊SNS入门


免责声明:固执己见的回答

IMO在运行时用这样的代码创建基础设施是魔鬼的工作。堆栈是一种方式,更加模块化,您将获得以下一些好处:

  • 如果您开始为每个客户创建多个表,您将能够在逻辑上将它们分组到堆栈中,然后根据需要更容易地进行清理
  • 如果由于某种原因,资源创建失败,您可以在堆栈控制台中很容易地看到这一点
  • 管理更容易在堆栈中搜索,因为您已经为自己构建了一个控制台
  • 在AWS中更新堆栈比单独更新表容易得多
  • 最重要的:如果发生错误,堆栈功能已经内置了回滚和冗余功能,您可以控制堆栈的行为。如果在您的入职过程中代码中发生了一些问题,那么需要清理这些问题,如果一个表成功了,而另一个表没有成功呢?您必须通过日志(如果存在的话)查找发生了什么
您还可以将此方法与使用AWS管道或AWS Simple Workflow Service之类的工具相结合,在您的自定义入职流程中添加自定义步骤,例如运行lambda函数、完成后发送通知、等待付款。这建立在我最后一点的基础上,即如果此管道确实失败,您将能够看到哪个步骤失败,以及失败的原因。你还可以看到事情是否超时


最后,我想建议在为每个客户创建基础架构时要谨慎。这需要做更多的工作,并分配更多的方法来解决问题。确保你也在AWS中设置了限制,以避免由于某些错误创建的基础设施而导致账单飞涨。

你需要使用服务员来实现这一点。Java SDK支持它:。我没有使用JavaSDK的经验。在Python中,我指的是: