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

问题描述 投票:1回答:3

我想编写一个脚本来快照和恢复与我的Elastic Beanstalk环境相关的RDS数据库。如何获取我将插入aws rds create-db-snapshotaws rds restore-db-instance-from-db-snapshot命令的RDS实例ID?

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

amazon-web-services elastic-beanstalk
3个回答
1
投票

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

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


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

这有点工作。 :)


0
投票

我发现最直接的方法涉及以下步骤

  1. 使用$ eb ssh {environment-id} SSH进入您的实例
  2. 从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"

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

© www.soinside.com 2019 - 2024. All rights reserved.