如何获取Elastic Beanstalk环境的RDS实例ID?

时间:2017-01-30 20:01:39

标签: amazon-web-services elastic-beanstalk

我想编写一个脚本来快照和恢复与我的Elastic Beanstalk环境相关的RDS数据库。如何获取我将插入LENGTH()CHAR_LEGNTH()命令的RDS实例ID?

我知道可以在Web界面的“配置”选项卡中看到它,但我想使用在shell中执行的命令来获取它。

3 个答案:

答案 0 :(得分:1)

虽然您可以在配置Elastic Beanstalk应用程序时配置RDS实例,但它们并没有真正捆绑在一起。它们都可以在VPC中运行,但这本身就是真正的分组。您也可以轻松地将RDS用于其他内容。

您可能希望使用类似aws rds describe-db-instances的内容来获取RDS实例信息以及实例名称(即application1-ebs-rds),以便您找到RDS。

答案 1 :(得分:0)

您可以通过这种方式获取活动历史记录......

aws elasticbeanstalk describe-events --environment-name your_environment_name

您的历史记录中的一个事件应该包括db-instance-identifier ...

{
    "ApplicationName": "some-app", 
    "EnvironmentName": "some-env", 
    "Severity": "INFO", 
    "RequestId": "some-ref-id", 
    "Message": "Created RDS database named: some-db-instance-identifier", 
    "EventDate": "2017-01-30T23:23:37.734Z"
}, 

然后您可以获取该消息字符串并在此处使用数据库实例标识符...

aws rds create-db-snapshot --db-instance-identifier some-db-instance-identifier --db-snapshot-identifier name-of-snapshot

这有点工作。 :)

答案 2 :(得分:0)

我发现的最直接的方法包括以下步骤

  1. 使用$ eb ssh {environment-id}
  2. 通过SSH进入您的实例
  3. 从SSH终端运行以下命令以获取RDS实例ID:

    $ sudo /opt/elasticbeanstalk/bin/get-config environment --output YAML | grep RDS_HOSTNAME | sed -n "s/^RDS_HOSTNAME: \([a-z0-9]*\).*$/\1/p"

  4. 上面的命令获取所有可用的环境变量,包括以RDS_开头的特殊变量,RDS_HOSTNAME变量的greps,然后使用sed提取所需的值。