AWS Ruby SDK для RDS

#ruby #amazon-web-services #amazon-rds

#ruby #amazon-веб-сервисы #amazon-rds

Вопрос:

Все, я пытаюсь определить статус репликации прочитанной реплики в RDS с помощью скрипта. Похоже, что эта информация не отображается как простое свойство экземпляра RDS, но вместо этого вам нужно использовать класс клиента более низкого уровня. Это возвращает AWS ::Core::Response . Итак:

 rds = AWS::RDS.new
client = rds.client

result = client.describe_db_instances({:db_instance_identifier => 'db instance id'})
 

Это возвращает:

  => {:db_instances=>[{:db_security_groups=>[{:status=>"active", :db_security_group_name=>"blah"}], :vpc_security_groups=>[], :db_parameter_groups=>[{:parameter_apply_status=>"in-sync", :db_parameter_group_name=>"blah"}], :read_replica_db_instance_identifiers=>[], :option_group_memberships=>[{:option_group_name=>"blah", :status=>"in-sync"}], :status_infos=>[{:message=>"errors message here", :status=>"error", :status_type=>"read replication", :normal=>false}], :backup_retention_period=>0, :multi_az=>false, :db_instance_status=>"available", :db_instance_identifier=>"db instance identifier", :preferred_backup_window=>"04:50-05:20", :preferred_maintenance_window=>"fri:06:00-fri:06:30", :availability_zone=>"us-east-1a", :engine=>"mysql", :pending_modified_values=>nil, :license_model=>"general-public-license", :endpoint=>{:port=>3306, :address=>"endpint"}, :engine_version=>"5.5.27", :read_replica_source_db_instance_identifier=>"datamgmt-production", :publicly_accessible=>true, :db_name=>"datamgmt", :auto_minor_version_upgrade=>true, :instance_create_time=>2014-05-06 22:05:27 UTC, :allocated_storage=>40, :db_instance_class=>"instance class", :master_username=>"username"}], :response_metadata=>{:request_id=>"id"}}
 

Согласно AWS Ruby SDK на http://docs.aws.amazon.com/AWSRubySDK/latest/frames.html ,

 my_hash = result.data
 

Вернет хэш.

Сейчас я просто пытаюсь получить часть возврата :status_infos.

 my_hash['status_infos'] #returns nil
my_hash['db_instances']
 

Запуск Awesome Print gem отображает вывод my_hash в виде хэша с цветовой кодировкой, поэтому я не понимаю, почему я не могу получить данные, которые хочу получить. Любая помощь приветствуется.

Ответ №1:

Доступ к хэш-ключам с :symbol помощью 'string'

 my_hash[:status_infos]
my_hash[:db_instances]
 

Комментарии:

1. Спасибо за ответ? Как мне глубже разобраться во вложенности? my_hash[:db_instances] возвращает все, что находится внутри этого. my_hash[:db_instances][0] возвращает первую подгруппу. но my_hash[:db_instances][1], my_hash[:db_instances][0][1] возвращают значение nil, как и my_hash[:status_infos]

2. Несколько проб и ошибок: my_hash[:db_instances][0][:status_infos][0][:status_type]. Спасибо за руководство.

3. Вы поняли. Массивы хэшей, болезненные.