2017-01-30 6 views
1

Я хотел бы написать сценарий, который моментально копирует и восстанавливает базу данных RDS, связанную с моей средой Elastic Beanstalk. Как я могу получить идентификатор экземпляра RDS, который я буду подключать к командам aws rds create-db-snapshot и aws rds restore-db-instance-from-db-snapshot?Как получить идентификатор экземпляра RDS для среды эластичного beanstalk?

Я знаю, что это можно увидеть на вкладке Конфигурация в веб-интерфейсе, но я хотел получить его с помощью команды, выполняемой в оболочке.

ответ

1

Хотя вы можете настроить экземпляр RDS при настройке приложения Elastic Beanstalk, они на самом деле не связаны друг с другом. Они могут работать в VPC, но это единственная реальная группировка как таковая. Вы можете легко использовать RDS для чего-то еще.

Возможно, вы захотите использовать что-то вроде aws rds describe-db-instances, чтобы получить информацию об экземпляре RDS в сочетании с именем экземпляра (например, application1-ebs-rds), чтобы вы могли найти RDS.

+0

спасибо за подтверждение моей интуиции, что они оба работают в vpc –

0

Вы можете получить историю события таким образом ...

aws elasticbeanstalk describe-events --environment-name your_environment_name 

Одним из событий в истории должны включать ДБ-экземпляра-идентификатор ...

{ 
    "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. SSH в экземпляр с $ eb ssh {environment-id}
  2. Выполните следующую команду из терминала SSH, чтобы получить идентификатор экземпляра RDS:

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

Вышеуказанная команда получает все доступные переменные среды, в том числе специальные, которые начинаются с RDS_, greps для переменной RDS_HOSTNAME, а затем извлекает необходимое значение с помощью sed.