在创建RDS实例时收到通知

时间:2018-04-18 15:05:53

标签: java amazon-web-services aws-sdk amazon-rds

我正在使用AWS SDK for Java。

想象一下,我按照AWS文档中的描述创建了一个RDS实例。

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开发工具包有没有办法在最终创建实例时收到通知?

2 个答案:

答案 0 :(得分:0)

您可以使用RDS SNS通知:

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Events.html#USER_Events.Messages

  

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

答案 1 :(得分:0)

免责声明:意见回答

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

  • 如果您开始为每个客户创建多个表,您将能够将它们逻辑地分组到堆栈中,然后根据需要更轻松地进行清理
  • 如果出于某种原因导致资源创建失败,您可以在堆栈控制台中轻松看到这一点
  • 管理更容易搜索堆栈,因为您已经为您构建了一个控制台
  • 在AWS中更新堆栈比单独更新表格要容易得多
  • 最重要:如果发生错误,堆栈功能已内置了回滚和冗余功能,您可以控制其行为。如果在登机过程中你的代码中发生了某些事情,那么清理将会很麻烦,如果一个表成功而另一个表没有成功怎么办?您将不得不通过日志(如果存在)来查明发生了什么。

您还可以将此方法与使用AWS Pipelines甚至AWS Simple Workflow Service之类的东西相结合,在自定义入职流程中添加自定义步骤,例如运行lambda函数,完成后发送通知,等待一些付款。这建立在我的最后一点上,如果此管道确实失败,您将能够看到哪个步骤失败,以及失败的原因。您还可以查看是否超时。

最后,我想建议每个客户创建基础架构时要谨慎。这是更多的工作,并增加分配更多的方式来解决问题。请确保您在AWS中设置限制,以免由于某些错误创建基础架构而导致您的账单出现问题。

相关问题