我想编写一个脚本来快照和恢复与我的Elastic Beanstalk环境相关的RDS数据库。如何获取我将插入LENGTH()
和CHAR_LEGNTH()
命令的RDS实例ID?
我知道可以在Web界面的“配置”选项卡中看到它,但我想使用在shell中执行的命令来获取它。
答案 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)
我发现的最直接的方法包括以下步骤
$ eb ssh {environment-id}
从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
提取所需的值。