ようへいの日々精進XP

よかろうもん

aws-sdk を使ってインスタンスのリストを取得しながら Ruby を勉強する(2)

概要

  • インスタンスの一覧を取得出来るようになった
  • 取得出来る項目(メソッド)ってどんなものがあるのか知りたい
  • こちら を見ればいいのだけど Ruby から確認する方法がないか調べてみた

内容

ec2.instances で使えるメソッドを取得する

結局のところ ec2.instances オブジェクトで使えるメソッドを確認するば良いようなので...

puts instance.methods.sort

上記のように、変数としての instancemethodssort というメソッド(?)をつけて puts してみた。

!                                                                           
!=                                                                          
!~                                                                          
<=>                                                                         
==                                                                          
===                                                                         
=~                                                                          
__id__                                                                      
__resource_id__                                                             
__send__                                                                    
_find_in_describe_instance_attribute_response_4                             
_find_in_describe_instance_attribute_response_5                             
_find_in_describe_instance_attribute_response_6                             
_find_in_describe_instance_attribute_response_7                             
_find_in_describe_instances_response_0                                      
_find_in_describe_instances_response_1                                      
_find_in_monitor_instances_or_unmonitor_instances_response_9                
_find_in_run_instances_response_2                                           
_find_in_run_instances_response_3                                           
_find_in_terminate_instances_or_start_instances_or_stop_instances_response_8
add_tag                                                                     
ami_launch_index                                                            
api_termination_disabled=                                                   
api_termination_disabled?                                                   
architecture                                                                
associate_elastic_ip                                                        
attach_network_interface                                                    
attachments                                                                 
attributes_from_response                                                    
attributes_from_response_object                                             
availability_zone                                                           
block_device_mapping                                                        
block_device_mappings                                                       
block_devices  
(略)                                                             

ずらずらーとメソッドが表示される。

なんだか ! とか === とか ec2.instances で使えるものというくくりでは間違いではなさそうだけど、ここ で示されているものよりもかなり冗長な感じがするので、ここ で示されてものと同程度に絞り込めないか調べてみた。

ec2.instances が属するクラスは?

ec2.instances が属しているクラスを確認する場合には以下のようにする。

puts instance.class

そうすると...

AWS::EC2::Instance

となり AWS::EC2::Instance に属していることが解る。さらに AWS::EC2::Instance は何に属しているかというと...

puts instance.class.superclass

とすると...

AWS::EC2::Resource

とどんどんと辿っていけるようです。それは、ここ でも Inherits: のところを show all すれば確認出来ます。

ec2.instances 固有のメソッドを表示するには...

ということで ec2.instances 固有のメソッドだけを表示するには、以下のようにして上位クラスのオブジェクトが使えるメソッドを非表示にすることで絞り込むことができそう。

puts (instance.methods - instance.class.superclass.instance_methods).sort

以下のように多少は絞れている感じ...

_find_in_describe_instance_attribute_response_4                             
_find_in_describe_instance_attribute_response_5                             
_find_in_describe_instance_attribute_response_6                             
_find_in_describe_instance_attribute_response_7                             
_find_in_describe_instances_response_0                                      
_find_in_describe_instances_response_1                                      
_find_in_monitor_instances_or_unmonitor_instances_response_9                
_find_in_run_instances_response_2                                           
_find_in_run_instances_response_3                                           
_find_in_terminate_instances_or_start_instances_or_stop_instances_response_8
add_tag                                                                     
ami_launch_index                                                            
api_termination_disabled=                                                   
api_termination_disabled?                                                   
architecture                                                                
associate_elastic_ip                                                        
attach_network_interface                                                    
attachments                                                                 
attributes_from_response_object                                             
availability_zone                                                           

まとめ

  • ドキュメントを読んだ方が一万倍くらい良いかもしれないけど、実際に手を動かすとなんとなく理解が深まる

参考